Guida introduttiva - Driver Standard Microsoft per stampanti 3D
Microsoft Standard Driver per stampanti 3D consente agli sviluppatori di rendere facilmente compatibile la stampante con Windows 10. Qualsiasi stampante che usa descrittori del sistema operativo Microsoft può essere riconosciuta come stampante 3D compatibile. Usando un esempio concreto, questo articolo illustra come creare il firmware che consente a un dispositivo di essere riconosciuto come stampante 3D da Windows 10 e comunicare le relative funzionalità di stampa.
Introduzione
Il driver Microsoft Standard riduce il carico di scrittura del proprio driver da fornitori di hardware indipendenti (IHV) che vogliono che le stampanti 3D siano compatibili con Windows 10. Le versioni di Windows che conoscono i descrittori del sistema operativo Microsoft usano le richieste di controllo per recuperare le informazioni e usarle per installare e configurare il dispositivo senza richiedere alcuna interazione dell'utente.
Il processo generale per ottenere una stampante 3D che funziona su Windows 10 include i passaggi seguenti:
ID compatibile. Il fornitore di hardware indipendente (IHV) deve includere l'ID compatibile "Stampa 3D" nel firmware della stampante. In questo modo il dispositivo può essere riconosciuto come stampante 3D.
Driver standard. Dopo che il dispositivo è collegato, Windows Update scarica il driver standard di stampa 3D e rileva il dispositivo corrente come stampante 3D che usa una configurazione predefinita.
Descrittore di proprietà estese. Diverse configurazioni di base per le stampanti 3D vengono rese disponibili come parte del driver standard. Uno sviluppatore può quindi scegliere una configurazione di base corrispondente alla stampante 3D. Oltre a scegliere una configurazione di base, uno sviluppatore può eseguire l'override di alcune delle proprietà per trovare una corrispondenza migliore con la stampante 3D e includerli nel nuovo firmware.
Plug and play. Una volta che il firmware viene bruciato nella memoria flash della stampante 3D, ogni volta che un utente lo collega in un computer Windows 10, il driver standard verrà scaricato automaticamente e usa le funzionalità di stampa personalizzate scelte dallo sviluppatore.
Nelle sezioni seguenti verranno illustrati ognuno di questi passaggi usando un esempio concreto.
Per altre informazioni, vedere Descrittori del sistema operativo Microsoft.
ID compatibile
Per specificare il sistema operativo Windows attualmente in uso con una stampante 3D, dobbiamo usare l'ID compatibile corretto. L'elenco di ID compatibile Microsoft è disponibile in Descrittori del sistema operativo Microsoft.
L'ID compatibile per una stampante 3D è illustrato nella tabella seguente:
ID compatibile | ID sottocompatibile | Descrizione |
---|---|---|
"3DPRINT" (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) | Variabile | MS3DPRINT stampante G-Code |
Nel file di intestazione incluso nel firmware della stampante 3D, l'IHV deve specificare l'ID compatibile come illustrato di seguito:
#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
};
Questa riga nel codice precedente è l'ID compatibile di una stampante 3D:
'3', 'D', 'P', 'R', 'I', 'N', 'T', 0x00, // compatibleID ("3DPRINT")
Con questa configurazione specifica, IHV può compilare il firmware e lampeggiare il dispositivo. Quindi, quando il dispositivo è collegato, il driver standard di stampa 3D viene scaricato automaticamente da Windows Update.
In questa fase la stampante usa la configurazione predefinita del driver standard, i parametri usati dalla configurazione predefinita sono accessibili nella cartella %SYSTEMROOT%\System32\MS3DPrint nel file StandardGCode.xml. Inoltre, uno sviluppatore può scegliere di usare una configurazione di base diversa, un elenco di configurazioni di base sono disponibili nella stessa cartella %SYSTEMROOT%\System32\MS3DPrint. Questo elenco viene popolato regolarmente con una nuova configurazione man mano che emergono nuove stampanti 3D sul mercato.
Descrittore delle funzionalità del sistema operativo delle proprietà estese
Come indicato nella sezione precedente, gli IHV hanno accesso a diverse configurazioni di base. Questo ha il vantaggio di ridurre al minimo la quantità di informazioni che deve essere archiviata nella memoria flash della stampante. Gli sviluppatori possono esaminare le configurazioni di base rese disponibili e scegliere quella più vicina alle stampanti. In questo esempio si sceglierà la configurazione di base della scheda SD ed si eseguirà l'override di alcune delle proprietà con i parametri seguenti:
Parametri | Valore |
---|---|
Job3DOutputAreaWidth | 250000 |
Job3DOutputAreaDepth | 260000 |
Job3DOutputAreaHeight | 270000 |
Filamentdiameter | 2850 |
Per altre informazioni su questi parametri, vedere il documento MS3DPrint Standard G-Code Driver.docx nella documentazione di 3D Printing SDK (download MSI).
Per specificare la configurazione di base da usare e quali parametri eseguire l'override, lo sviluppatore deve specificarlo tramite il descrittore funzionalità del sistema operativo proprietà estese, come illustrato di seguito:
// 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 */
};
Le informazioni relative al descrittore della funzionalità del sistema operativo delle proprietà estese si trovano nel file OS_Desc_Ext_Prop.doc . Per altre informazioni, vedere Descrittori del sistema operativo Microsoft.
Verifica delle funzionalità di stampa
Una volta che il dispositivo ha il firmware bruciato in memoria flash, il dispositivo verrà rilevato automaticamente da Windows 10 e le funzionalità di stampa vengono archiviate nel Registro di sistema.
È importante che l'IHV cambi il VID/PID del dispositivo in modo autonomo. Non usare mai l'ID fornitore (VID) o l'ID prodotto (PID) di un altro dispositivo esistente perché il sistema operativo non sarà in grado di rilevare correttamente il dispositivo come VID e PID hanno la priorità sul descrittore del sistema operativo.
Se il dispositivo è stato installato correttamente, il dispositivo deve essere elencato in Dispositivi e stampanti.
Nella Gestione dispositivi è possibile verificare l'ID dispositivo corrispondente e l'ID compatibile.
Le proprietà del driver USB possono essere ottenute visitando il Registro di sistema all'indirizzo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB.
Le proprietà del driver di stampa 3D possono essere ottenute visitando il Registro di sistema all'indirizzo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers.
Risorse
Per altre informazioni, vedere i documenti e le risorse seguenti:
3D Printing SDK (download MSI)
Descrittori del sistema operativo Microsoft
È anche possibile contattare il team di Stampa 3D di Microsoft all'indirizzo ask3dprint@microsoft.com.