Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Microsoft Standard Driver for 3D Printers kan utvecklare enkelt göra sin skrivare kompatibel med Windows 10. Alla skrivare som använder Microsoft OS-beskrivningar kan identifieras som en kompatibel 3D-skrivare. Med hjälp av ett konkret exempel visar den här artikeln hur du skapar inbyggd programvara som gör att en enhet kan identifieras som en 3D-skrivare av Windows 10 och kommunicera dess utskriftsfunktioner.
Inledning
Microsoft Standard Driver avlastar arbetet med att skriva en egen drivrutin från oberoende maskinvaruleverantörer (IHV:er) som vill att deras 3D-skrivare ska vara kompatibla med Windows 10. Versioner av Windows som är medvetna om Microsoft OS-beskrivningar använder kontrollbegäranden för att hämta informationen och använda den för att installera och konfigurera enheten utan att kräva någon användarinteraktion.
Den allmänna processen för att få en 3D-skrivare att fungera på Windows 10 innehåller följande steg:
Kompatibel ID. Den oberoende maskinvaruleverantören (IHV) måste inkludera det "3D Print"-kompatibla ID:t i skrivarens inbyggda programvara. På så sätt kan enheten identifieras som en 3D-skrivare.
Standarddrivrutin När enheten är ansluten laddar Windows Update ned standarddrivrutinen för 3D-utskrift och identifierar den aktuella enheten som en 3D-skrivare som använder en standardkonfiguration.
Beskrivning av utökade egenskaper. Flera baskonfigurationer för 3D-skrivare görs tillgängliga som en del av standarddrivrutinen. En utvecklare kan därför välja en baskonfiguration som matchar deras 3D-skrivare. Utöver att välja en baskonfiguration kan en utvecklare åsidosätta några av egenskaperna för att bättre matcha sin 3D-skrivare och inkludera dem i den nya inbyggda programvaran.
Plugga in och kör. När den inbyggda programvaran har bränts i 3D-skrivarens flashminne, laddas standarddrivrutinen automatiskt ned när en användare ansluter den till en Windows 10-dator och använder de anpassade utskriftsfunktionerna som utvecklaren har valt.
I följande avsnitt illustrerar vi vart och ett av de här stegen med hjälp av ett konkret exempel.
Mer information finns i Microsoft OS-beskrivningar.
Kompatibel identifierare
För att ange för Windows-operativsystemet att vi för närvarande använder en 3D-skrivare måste vi använda rätt kompatibelt ID. Listan över Microsoft-kompatibla ID:t finns på Microsoft OS-beskrivningar.
Det kompatibla ID:t för en 3D-skrivare visas i följande tabell:
Kompatibel identifierare | Underkompatibelt ID | Beskrivning |
---|---|---|
"3DPRINT" (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) | Varierar | MS3DPRINT G-Code-skrivare |
I huvudfilen som ingår i den inbyggda programvaran för 3D-skrivare måste IHV ange det kompatibla ID som visas här:
#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
};
Den här raden i koden ovan är det kompatibla ID:t för en 3D-skrivare:
'3', 'D', 'P', 'R', 'I', 'N', 'T', 0x00, // compatibleID ("3DPRINT")
Med den här specifika konfigurationen kan IHV:er kompilera sin inbyggda programvara och flasha enheten. När enheten sedan är ansluten hämtas standarddrivrutinen för 3D-utskrift automatiskt från Windows Update.
I det här skedet använder skrivaren standardkonfigurationen för drivrutinen. Parametrarna som används av standardkonfigurationen är tillgängliga i mappen %SYSTEMROOT%\System32\MS3DPrint in the file StandardGCode.xml. Dessutom kan en utvecklare välja att använda en annan baskonfiguration. En lista över baskonfigurationer finns i samma mapp %SYSTEMROOT%\System32\MS3DPrint. Den här listan fylls regelbundet med ny konfiguration när nya 3D-skrivare dyker upp på marknaden.
Funktionsbeskrivning för utökade egenskaper i operativsystemet
Som anges i avsnittet ovan har IHV:er åtkomst till flera baskonfigurationer. Detta har fördelen att minimera mängden information som måste lagras i skrivarens flashminne. Utvecklare kan inspektera de baskonfigurationer som gjorts tillgängliga och välja den som är närmast deras skrivare. I det här exemplet ska vi välja baskonfigurationen för SD-kort och åsidosätta några av egenskaperna med parametrarna nedan:
Parameterar | Värde |
---|---|
Job3DUtmatningsområdetsBredd | 250000 |
Jobb3DUtdataOmrådesDjup | 260000 |
Jobb3DUtmatningsområdetHöjd | 270000 |
Filamentdiameter | 2850 |
Mer information om dessa parametrar finns i dokumentet MS3DPrint Standard G-Code Driver.docx i dokumentationen för 3D Printing SDK (MSI Download).
För att ange vilken baskonfiguration som ska användas och vilka parametrar som ska åsidosättas måste utvecklaren ange den via funktionsbeskrivningen för utökade egenskaper för operativsystemet enligt följande:
// 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 */
};
Information om funktionsbeskrivningen för utökade egenskaper finns i filen OS_Desc_Ext_Prop.doc . Mer information finns i Microsoft OS-beskrivningar.
Verifiera utskriftsfunktionerna
När enheten har den inbyggda programvaran i flashminnet identifieras enheten automatiskt av Windows 10 och utskriftsfunktionerna lagras i registret.
Det är viktigt att IHV ändrar VID/PID för enheten till sin egen. Du bör aldrig använda leverantörs-ID (VID) eller produkt-ID (PID) för en annan befintlig enhet eftersom operativsystemet inte kommer att kunna identifiera enheten korrekt eftersom VID och PID prioriteras framför OS-beskrivningen.
Om enheten har installerats korrekt bör enheten visas i Enheter och skrivare.
I Enhetshanteraren kan matchande enhets-ID och det kompatibla ID:t verifieras.
Usb-drivrutinsegenskaperna kan hämtas genom att besöka registret på HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB.
Egenskaperna för 3D-utskriftsdrivrutiner kan hämtas genom att besöka registret på HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers.
Resurser
Mer information finns i följande dokument och resurser:
SDK för 3D-utskrift (MSI-nedladdning)
Du kan också kontakta Microsoft 3D Printing-teamet på ask3dprint@microsoft.com.