用戶入門指南 - Microsoft適用於 3D 印表機的標準驅動程式
Microsoft標準驅動程式 for 3D 印表機可讓開發人員輕鬆地使其印表機與 Windows 10 相容。 任何使用 Microsoft OS 描述元的印表機都可以辨識為相容的 3D 印表機。 本文使用具體範例示範如何建立韌體,讓 Windows 10 將裝置辨識為 3D 印表機,並傳達其列印功能。
簡介
Microsoft標準驅動程式可減輕從獨立硬體廠商(IHV)撰寫自己的驅動程式的負擔,這些廠商希望其 3D 印表機與 Windows 10 相容。 知道Microsoft OS 描述元的 Windows 版本會使用控制要求來擷取資訊,並用它來安裝和設定裝置,而不需要任何用戶互動。
取得在 Windows 10 上運作的 3D 印表機的一般程式包括下列步驟:
相容的標識碼。 獨立硬體廠商 (IHV) 必須包含印表機韌體中的“3D 印表”相容標識符。 這可讓裝置辨識為 3D 印表機。
標準驅動程式。 裝置插入后,Windows Update 會下載 3D 印表標準驅動程式,並將目前的裝置偵測為使用預設設定的 3D 印表機。
擴充屬性描述元。 3D 印表機的數個基底組態可作為標準驅動程式的一部分使用。 因此,開發人員可以選擇符合其 3D 印表機的基底設定。 除了選擇基底組態,開發人員可以覆寫一些屬性,以更符合其 3D 印表機,並將其包含在新的韌體中。
即插即用。 一旦韌體在 3D 印表機的快快閃記憶體中燃燒,每當使用者將其插入 Windows 10 電腦時,系統會自動下載標準驅動程式,並使用開發人員選擇的自定義印表功能。
在下列各節中,我們將使用具體範例說明這些步驟。
如需詳細資訊,請參閱 Microsoft OS 描述元。
相容標識碼
若要指定目前使用 3D 印表機的 Windows 作業系統,我們必須使用正確的相容識別碼。 Microsoft OS 描述元提供Microsoft兼容標識符清單。
下表顯示 3D 印表機的相容識別碼:
相容標識碼 | 子不相容標識碼 | 描述 |
---|---|---|
“3DPRINT” (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) | 不定 | MS3DPRINT G 碼印表機 |
在 3D 印表機韌體中包含的頭檔中,IHV 必須指定相容的識別碼,如下所示:
#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
};
上述程式代碼中的這一行是 3D 印表機的相容識別碼:
'3', 'D', 'P', 'R', 'I', 'N', 'T', 0x00, // compatibleID ("3DPRINT")
透過此特定設定,IHV 可以編譯其韌體並刷新裝置。 然後,當裝置插入時,會自動從 Windows Update 下載 3D 列印標準驅動程式。
在這個階段,印表機使用標準驅動程式預設組態,預設組態所使用的參數可在檔案StandardGCode.xml的 %SYSTEMROOT%\System32\MS3DPrint 資料夾中存取。 此外,開發人員可以選擇使用不同的基底組態,您可以在相同的資料夾 %SYSTEMROOT%\System32\MS3DPrint 中取得基底組態清單。 隨著市場上出現新的 3D 印表機,此清單會定期填入新的設定。
擴充屬性OS功能描述元
如上一節所述,IHV 可以存取數個基底組態。 這的優點是將必須儲存在印表機快快閃記憶體中的資訊量降到最低。 開發人員可以檢查可用的基底組態,並選擇最接近其印表機的組態。 在此範例中,我們將選擇 SD 記憶卡基底組態,並使用下列參數覆寫部分屬性:
參數 | 值 |
---|---|
Job3DOutputAreaWidth | 250000 |
Job3DOutputAreaDepth | 260000 |
Job3DOutputAreaHeight | 270000 |
Filamentdiameter | 2850 |
如需這些參數的詳細資訊,請參閱 3D 列印 SDK (MSI 下載) 檔中的 MS3DPrint Standard G-Code Driver.docx 檔。
若要指定要使用的基底組態,以及要覆寫哪些參數,開發人員必須透過擴充屬性 OS 功能描述元指定它,如下所示:
// 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 */
};
擴充屬性OS功能描述元的相關信息位於 OS_Desc_Ext_Prop.doc檔案中。 如需詳細資訊,請參閱 Microsoft OS 描述元。
驗證列印功能
裝置在快快閃記憶體中燒毀韌體之後,Windows 10 會自動偵測到裝置,列印功能會儲存在登錄中。
IHV 務必將裝置的 VID/PID 變更為自己的裝置。 您不應該使用另一個現有裝置的廠商標識碼 (VID) 或產品識別碼 (PID),因為操作系統無法正確偵測裝置,因為 VID 和 PID 優先於 OS 描述元。
如果裝置已正確安裝,裝置應該會列在 [裝置] 和 [印表機] 中。
在 裝置管理員 中,可以驗證相符的裝置標識碼和相容的標識碼。
若要取得 USB 驅動程式屬性,請造訪位於 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB 的登錄。
您可以在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers 上瀏覽登錄,以取得 3D 打印驅動程序屬性。
資源
如需詳細資訊,請參閱下列文件和資源:
您也可以在 ask3dprint@microsoft.com連絡 Microsoft 3D 列印小組。