Freigeben über


Erste Schritte - Microsoft-Standardtreiber für 3D-Drucker

Der Microsoft-Standardtreiber für 3D-Drucker bietet Entwickler*innen die Möglichkeit, ihren Drucker problemlos mit Windows 10 kompatibel zu machen. Jeder Drucker, der die Deskriptoren von Microsoft-Betriebssystemen verwendet, kann als kompatibler 3D-Drucker erkannt werden. Anhand eines konkreten Beispiels zeigt dieser Artikel, wie Sie eine Firmware erstellen, die einem Gerät die Möglichkeit bietet, von Windows 10 als 3D-Drucker erkannt zu werden und seine Funktionalitäten zu übermitteln.

Einführung

Der Microsoft-Standardtreiber entlastet unabhängige Hardwarehersteller (IHVs), die ihre 3D-Drucker mit Windows 10 kompatibel machen möchten, von der Aufgabe, einen eigenen Treiber zu schreiben. Windows-Versionen, die die Deskriptoren des Microsoft-Betriebssystems berücksichtigen, verwenden Steueranfragen, um die Informationen abzurufen und sie zur Installation und Konfiguration des Geräts zu verwenden, ohne dass eine Benutzerinteraktion erforderlich ist.

Der allgemeine Prozess, um einen 3D-Drucker unter Windows 10 zum Laufen zu bringen, umfasst die folgenden Schritte:

  1. Kompatible ID. Der unabhängige Hardware-Hersteller (IHV) muss die „3D Print“-kompatible ID in die Firmware des Druckers aufnehmen. Dies lässt die Möglichkeit zu, dass das Gerät als 3D-Drucker erkannt wird.

  2. Standardtreiber. Sobald das Gerät angeschlossen ist, lädt Windows Update den 3D-Druck-Standardtreiber herunter und erkennt das aktuelle Gerät als 3D-Drucker, der eine Standardkonfiguration verwendet.

  3. Erweiterter Eigenschaftsdeskriptor. Als Teil des Standardtreibers werden mehrere Basiskonfigurationen für 3D-Drucker zur Verfügung gestellt. Entwickler*innen können daher eine Basiskonfiguration wählen, die zu ihrem 3D-Drucker passt. Zusätzlich zur Auswahl einer Basiskonfiguration kann ein/eine Entwickler*in einige der Eigenschaften überschreiben, damit sie besser zum 3D-Drucker passen, und sie in die neue Firmware aufnehmen.

  4. Plug-and-Play. Sobald die Firmware in den Flash-Speicher des 3D-Druckers geschrieben wurde, wird der Standardtreiber automatisch heruntergeladen und verwendet die angepassten Funktionalitäten, die der/die Entwickler*in ausgewählt hat, sobald ein/eine Benutzer*in den Drucker an einen Windows 10-Computer anschließt.

In den folgenden Abschnitten werden wir jeden dieser Schritte anhand eines konkreten Beispiels erläutern.

Weitere Informationen finden Sie unter Microsoft OS Deskriptoren.

Kompatible ID

Um dem Windows-Betriebssystem mitzuteilen, dass wir gerade einen 3D-Drucker verwenden, müssen wir die richtige kompatible ID verwenden. Die Liste der kompatiblen IDs von Microsoft finden Sie unter Microsoft Betriebssystem-Deskriptoren.

Die kompatible ID für einen 3D-Drucker ist in der folgenden Tabelle aufgeführt:

Kompatible ID Unterkompatible ID Beschreibung
"3DPRINT" (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) Varies MS3DPRINT G-Code Printer

In der Header-Datei, die in der Firmware des 3D-Druckers enthalten ist, muss die IHV die kompatible ID wie hier gezeigt angeben:

#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
};

Diese Zeile im obigen Code ist die kompatible ID eines 3D-Druckers:

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

Mit dieser spezifischen Konfiguration können die IHVs ihre Firmware kompilieren und das Gerät flashen. Wenn das Gerät dann angeschlossen wird, wird der 3D-Druck-Standardtreiber automatisch von Windows Update heruntergeladen.

In diesem Stadium verwendet der Drucker die Standardtreiber-Standardkonfiguration. Die von der Standardkonfiguration verwendeten Parameter sind im Ordner %SYSTEMROOT%\System32\MS3DPrint in der Datei StandardGCode.xml. Zusätzlich kann ein/eine Entwickler*in eine andere Basiskonfiguration verwenden. Eine Liste der Basiskonfigurationen ist im gleichen Ordner %SYSTEMROOT%\System32\MS3DPrint verfügbar. Diese Liste wird regelmäßig mit neuen Konfigurationen ergänzt, wenn neue 3D-Drucker auf den Markt kommen.

Extended Properties OS Feature Deskriptor

Wie im obigen Abschnitt erwähnt, haben IHVs Zugriff auf mehrere Basiskonfigurationen. Dies hat den Vorteil, dass die Menge der Informationen, die im Flash-Speicher des Druckers gespeichert werden müssen, minimiert wird. Entwickler*innen können sich die zur Verfügung gestellten Basiskonfigurationen ansehen und diejenige auswählen, die ihren Druckern am nächsten kommt. In diesem Beispiel wählen wir die SD-Karten-Basiskonfiguration und überschreiben einige der Eigenschaften mit den unten aufgeführten Parametern:

Parameter Wert
Job3DOutputAreaWidth 250.000
Job3DOutputAreaDepth 260000
Job3DOutputAreaHeight 270000
Filament-Durchmesser 2850

Weitere Informationen zu diesen Parametern finden Sie im Dokument MS3DPrint Standard G-Code Driver.docx in der Dokumentation 3D Printing SDK (MSI-Download).

Um festzulegen, welche Basiskonfiguration verwendet werden soll und welche Parameter außer Kraft gesetzt werden sollen, muss die/der Entwickler*in dies über den Extended Properties OS Feature Deskriptor angeben, wie hier gezeigt:

// 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       */  
};

Informationen zum Extended Properties OS Feature Deskriptor finden Sie in der Datei OS_Desc_Ext_Prop.doc. Weitere Informationen finden Sie unter Microsoft OS Deskriptoren.

Überprüfen der Funktionalitäten des Druckers

Sobald die Firmware des Geräts in den Flash-Speicher geschrieben wurde, wird das Gerät automatisch von Windows 10 erkannt und die Funktionalitäten des Druckers werden in der Registrierung gespeichert.

Kompatiblen 3D-Drucker installieren

Es ist wichtig, dass der IHV die VID/PID des Geräts in seine eigene ändert. Sie sollten niemals die Hersteller-ID (VID) oder Produkt-ID (PID) eines anderen vorhandenen Geräts verwenden, da das Betriebssystem das Gerät nicht richtig erkennen kann, da die VID und PID Vorrang vor dem Deskriptor des Betriebssystems haben.

Wenn das Gerät ordnungsgemäß installiert wurde, sollte es unter Geräte und Drucker aufgeführt sein.

Geräte und Drucker.

Im Geräte-Manager können Sie die passende Geräte-ID und die kompatible ID überprüfen.

Geräte-Manager.

Registerkarte Details des Geräte-Managers - übereinstimmende Geräte-ID.

Registerkarte Details des Geräte-Managers - kompatible IDs.

Die Eigenschaften des USB-Treibers können Sie in der Registrierung unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB abrufen.

Bearbeiten Sie die Zeichenfolge in der USB-Registrierung.

Die Eigenschaften des 3D-Druckertreibers können Sie in der Registrierung unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers abrufen.

Zeigen Sie die Eigenschaften des 3D-Druckertreibers in der Registrierung an.

Ressourcen

Weitere Informationen finden Sie in den folgenden Dokumenten und Ressourcen:

3D Printing SDK (MSI-Download)

Microsoft OS Deskriptoren

USB 2.0-Spezifikation

Sie können auch das Microsoft 3D Printing Team unter ask3dprint@microsoft.com kontaktieren.