Condividi tramite


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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

installazione della stampante 3d compatable.

È 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.

dispositivi e stampanti.

Nella Gestione dispositivi è possibile verificare l'ID dispositivo corrispondente e l'ID compatibile.

gestione dispositivi.

scheda dei dettagli di Device Manager: ID dispositivo corrispondente.

scheda dei dettagli di Gestione dispositivi: ID compatibili.

Le proprietà del driver USB possono essere ottenute visitando il Registro di sistema all'indirizzo HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB.

modificare il valore di più stringhe nel Registro di sistema 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.

visualizzare le proprietà del driver di stampa 3d nel Registro di sistema.

Risorse

Per altre informazioni, vedere i documenti e le risorse seguenti:

3D Printing SDK (download MSI)

Descrittori del sistema operativo Microsoft

Specifica USB 2.0

È anche possibile contattare il team di Stampa 3D di Microsoft all'indirizzo ask3dprint@microsoft.com.