Bagikan melalui


Panduan memulai - Driver Standar Microsoft untuk Printer 3D

Driver Standar Microsoft untuk Printer 3D memungkinkan pengembang untuk dengan mudah membuat printer mereka kompatibel dengan Windows 10. Printer apa pun yang menggunakan deskriptor OS Microsoft dapat dikenali sebagai printer 3D yang kompatibel. Dengan menggunakan contoh konkret, artikel ini akan menunjukkan cara membuat firmware yang memungkinkan perangkat dikenali sebagai printer 3D dengan Windows 10 dan mengomunikasikan kemampuan cetaknya.

Pengantar

Driver Standar Microsoft meringankan beban penulisan driver mereka sendiri dari vendor perangkat keras independen (IHV) yang ingin printer 3D mereka kompatibel dengan Windows 10. Versi Windows yang mengetahui deskriptor OS Microsoft menggunakan permintaan kontrol untuk mengambil informasi dan menggunakannya untuk menginstal dan mengonfigurasi perangkat tanpa memerlukan interaksi pengguna.

Proses umum untuk mengerjakan printer 3D Windows 10 mencakup langkah-langkah berikut:

  1. ID yang kompatibel. Vendor perangkat keras independen (IHV) harus menyertakan ID yang kompatibel dengan "Cetak 3D" dalam firmware printer. Ini memungkinkan perangkat dikenali sebagai pencetak 3D.

  2. Driver Standar. Setelah perangkat dicolokkan, Windows Update akan mengunduh driver standar cetak 3D dan mendeteksi perangkat saat ini sebagai printer 3D yang menggunakan konfigurasi default.

  3. Deskriptor properti yang diperluas. Beberapa konfigurasi dasar untuk printer 3D tersedia sebagai bagian dari driver standar. Oleh karena itu, pengembang dapat memilih konfigurasi dasar yang cocok dengan printer 3D mereka. Selain memilih konfigurasi dasar, pengembang dapat mengambil alih beberapa properti agar lebih cocok dengan printer 3D mereka dan menyertakannya dalam firmware baru.

  4. Colokkan dan mainkan. Setelah firmware dibakar dalam memori flash printer 3D, setiap kali pengguna menyambungkannya ke mesin Windows 10, driver standar akan secara otomatis diunduh dan akan menggunakan kemampuan cetak kustom yang telah dipilih pengembang.

Di bagian berikut, kami akan mengilustrasikan masing-masing langkah ini menggunakan contoh konkret.

Untuk informasi selengkapnya, lihat Deskriptor OS Microsoft.

ID yang Kompatibel

Untuk menentukan ke sistem operasi Windows bahwa saat ini kita menggunakan printer 3D, kita harus menggunakan ID yang kompatibel dengan tepat. Daftar ID yang Kompatibel dengan Microsoft tersedia di Microsoft OS Descriptors.

ID yang kompatibel untuk printer 3D diperlihatkan dalam tabel berikut:

ID yang Kompatibel ID sub-kompatibel Deskripsi
"3DPRINT" (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) Bervariasi MS3DPRINT G-Code Printer

Dalam file header yang disertakan dalam firmware printer 3D, IHV harus menentukan ID yang Kompatibel seperti yang ditunjukkan di sini:

#define MS3DPRINT_CONFIG_SIZE 232

#define MS3DPRINT_OSP_SIZE (4+4+2+0x20+4+MS3DPRINT_CONFIG_SIZE)

#define MS3DPRINT_XPROP_SIZE (4+2+2+2+MS3DPRINT_OSP_SIZE)

#define SIZE_TO_DW(__size)                \
        ((uint32_t)__size) & 0xFF,        \
        (((uint32_t)__size)>>8) & 0xFF,   \
        (((uint32_t)__size)>>16) & 0xFF,  \
        (((uint32_t)__size)>>24) & 0xFF

// CompatibleID and SubCompatibleID
static const uint8_t PROGMEM ms3dprint_descriptor[40] = {
    0x28, 0x00, 0x00, 0x00,                          // dwLength
    0x00, 0x01,                                      // bcdVersion
    0x04, 0x00,                                      // wIndex
    0x01,                                            // bCount
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,        // RESERVED
    0x00,                                            // bFirstInterfaceNumber
    0x01,                                            // RESERVED
    '3', 'D', 'P', 'R', 'I', 'N', 'T', 0x00,         // compatibleID ("3DPRINT")
                                                 // subCompatibleID
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /*        */  
,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00               // RESERVED
};

Baris dalam kode di atas adalah ID yang kompatibel dari Printer 3D:

'3', 'D', 'P', 'R', 'I', 'N', 'T', 0x00, // compatibleID ("3DPRINT")

Dengan konfigurasi khusus ini, IHV dapat mengkompilasi firmware mereka dan mem-flash perangkat. Kemudian ketika perangkat dicolokkan, Driver Standar Cetak 3D akan secara otomatis diunduh dari Windows Update.

Pada tahap ini printer menggunakan konfigurasi default driver standar, parameter yang digunakan oleh konfigurasi default dapat diakses di folder %SYSTEMROOT%\System32\MS3DPrint dalam file StandardGCode.xml. Selain itu, pengembang dapat memilih untuk menggunakan konfigurasi dasar yang berbeda, daftar konfigurasi dasar tersedia di folder yang sama %SYSTEMROOT%\System32\MS3DPrint. Daftar ini secara teratur diisi dengan konfigurasi baru saat printer 3D baru muncul di pasaran.

Deskriptor Fitur OS Properti Yang Diperluas

Seperti yang dinyatakan di bagian di atas, IHV memiliki akses ke beberapa konfigurasi dasar. Ini memiliki keuntungan meminimalkan jumlah informasi yang harus disimpan dalam memori flash printer. Pengembang dapat memeriksa konfigurasi dasar yang tersedia dan memilih yang paling dekat dengan printer mereka. Dalam contoh ini kita akan memilih konfigurasi dasar kartu SD dan mengambil alih beberapa properti dengan parameter di bawah ini:

Parameter Nilai
Job3DOutputAreaWidth 250000
Job3DOutputAreaDepth 260000
Job3DOutputAreaHeight 270000
Filamentdiameter 2850

Untuk informasi selengkapnya tentang parameter ini, silakan lihat dokumen Driver.docxMS3DPrint Standard G-Code dalam dokumentasi 3D Printing SDK (unduhan MSI).

Untuk menentukan konfigurasi dasar mana yang akan digunakan dan parameter mana yang akan diambil alih, pengembang harus menentukannya melalui Deskriptor Fitur OS Properti Yang Diperluas seperti yang ditunjukkan di sini:

// Modifiers to the base configuration
static const uint8_t PROGMEM ms3dprint_properties_descriptor[] = {
    SIZE_TO_DW(MS3DPRINT_XPROP_SIZE),                   // dwLength
    0x00, 0x01,                                         // bcdVersion
    0x05, 0x00,                                         // wIndex
    0x01, 0x00,                                         // wCount

    SIZE_TO_DW(MS3DPRINT_OSP_SIZE),                     // dwSize
    0x07, 0x00, 0x00, 0x00,                             // dwPropertyDataType  (1=REG_SZ, 4=REG_DWORD, 7=REG_MULTI_SZ)

    0x20, 0x00,                                         // wPropertyNameLength
    'M', 0x0, 'S', 0x0, '3', 0x0, 'D', 0x0,             // bPropertyName
    'P', 0x0, 'r', 0x0, 'i', 0x0, 'n', 0x0,
    't', 0x0, 'C', 0x0, 'o', 0x0, 'n', 0x0,
    'f', 0x0, 'i', 0x0, 'g', 0x0, 0x0, 0x0,

    SIZE_TO_DW(MS3DPRINT_CONFIG_SIZE),                  // dwPropertyDataLength

    // Data
    0x42, 0x00, 0x61, 0x00, 0x73, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x53, 0x00, 0x44, 0x00, 0x00, 0x00,  /* Base=SD  */  
    0x4A, 0x00, 0x6F, 0x00, 0x62, 0x00, 0x33, 0x00, 0x44, 0x00, 0x4F, 0x00, 0x75, 0x00, 0x74, 0x00,  /* Job3DOut */  
    0x70, 0x00, 0x75, 0x00, 0x74, 0x00, 0x41, 0x00, 0x72, 0x00, 0x65, 0x00, 0x61, 0x00, 0x57, 0x00,  /* putAreaW */  
    0x69, 0x00, 0x64, 0x00, 0x74, 0x00, 0x68, 0x00, 0x3D, 0x00, 0x32, 0x00, 0x35, 0x00, 0x30, 0x00,  /* idth=250 */  
    0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x6F, 0x00, 0x62, 0x00, 0x33, 0x00,  /* 000 Job3 */  
    0x44, 0x00, 0x4F, 0x00, 0x75, 0x00, 0x74, 0x00, 0x70, 0x00, 0x75, 0x00, 0x74, 0x00, 0x41, 0x00,  /* DOutputA */  
    0x72, 0x00, 0x65, 0x00, 0x61, 0x00, 0x44, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x68, 0x00,  /* reaDepth */  
    0x3D, 0x00, 0x32, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00,  /* =260000  */  
    0x4A, 0x00, 0x6F, 0x00, 0x62, 0x00, 0x33, 0x00, 0x44, 0x00, 0x4F, 0x00, 0x75, 0x00, 0x74, 0x00,  /* Job3DOut */  
    0x70, 0x00, 0x75, 0x00, 0x74, 0x00, 0x41, 0x00, 0x72, 0x00, 0x65, 0x00, 0x61, 0x00, 0x48, 0x00,  /* putAreaH */  
    0x65, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x3D, 0x00, 0x32, 0x00, 0x37, 0x00,  /* eight=27 */  
    0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x69, 0x00, 0x6C, 0x00,  /* 0000 fil */  
    0x61, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x64, 0x00, 0x69, 0x00, 0x61, 0x00,  /* amentdia */  
    0x6D, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x3D, 0x00, 0x32, 0x00, 0x38, 0x00,  /* meter=28 */  
    0x35, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00                                                   /* 50       */  
};

Informasi mengenai pendeskripsi fitur OS properti yang diperluas ada dalam file OS_Desc_Ext_Prop.doc . Lihat Deskriptor OS Microsoft untuk informasi selengkapnya.

Memverifikasi kapabilitas cetak

Setelah perangkat memiliki firmware yang dibakar dalam memori flash , perangkat akan secara otomatis terdeteksi oleh Windows 10 dan kemampuan cetak akan disimpan dalam registri.

menginstal printer 3d yang dapat dikompatable .

Sangat penting bahwa IHV mengubah VID/PID perangkat sendiri. Anda tidak boleh menggunakan ID Vendor (VID) atau ID Produk (PID) dari perangkat lain yang ada karena sistem operasi tidak akan dapat mendeteksi perangkat dengan benar karena VID dan PID lebih diprioritaskan daripada deskriptor OS.

Jika perangkat telah diinstal dengan benar, perangkat harus tercantum dalam Perangkat dan Pencetak.

perangkat dan printer.

Di Manajer Perangkat, id perangkat yang cocok dan id yang kompatibel dapat diverifikasi.

manajer perangkat.

tab detail manajer perangkat - id perangkat yang cocok.

tab detail manajer perangkat - id yang kompatibel.

Properti driver USB dapat diperoleh dengan mengunjungi registri di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB.

edit nilai multi-string di registri usb.

Properti driver Cetak 3D dapat diperoleh dengan mengunjungi registri di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers.

lihat properti driver cetak 3d di registri.

Sumber Daya Tambahan:

Untuk informasi selengkapnya, lihat dokumen dan sumber daya berikut ini:

Pencetakan 3D di Windows

SDK Pencetakan 3D (unduhan MSI)

Deskriptor OS Microsoft

Spesifikasi USB 2.0

Anda juga dapat menghubungi tim Microsoft 3D Printing di ask3dprint@microsoft.com.