Поделиться через


Руководство по началу работы — Microsoft Standard Driver for 3D Printers

Microsoft Standard Driver for 3D Printers позволяет разработчикам легко сделать принтер совместимым с Windows 10. Любой принтер, использующий дескрипторы ОС Майкрософт, можно распознать как совместимый трехмерный принтер. В этом примере показано, как создать встроенное ПО, которое позволяет устройству распознаваться как трехмерный принтер Windows 10 и обмениваться возможностями печати.

Введение

Драйвер Microsoft Standard освобождает бремя написания собственного драйвера от независимых поставщиков оборудования (IHV), которые хотят, чтобы их трехмерные принтеры были совместимы с Windows 10. Версии Windows, которые знают о дескрипторах ОС Майкрософт, используют запросы управления для получения информации и его использования для установки и настройки устройства, не требуя взаимодействия с пользователем.

Общий процесс для получения трехмерного принтера, работающего в Windows 10, включает следующие действия.

  1. Совместимый идентификатор . Независимый поставщик оборудования (IHV) должен включать совместимый идентификатор 3D Print в встроенное ПО принтера. Это позволяет устройству распознаваться как трехмерный принтер.

  2. стандартный драйвер. После подключения устройства Центр обновления Windows скачивает стандартный 3D-драйвер печати и обнаруживает текущее устройство как трехмерный принтер, использующий конфигурацию по умолчанию.

  3. дескриптор расширенных свойств. В рамках стандартного драйвера доступны несколько базовых конфигураций для трехмерных принтеров. Поэтому разработчик может выбрать базовую конфигурацию, соответствующую трехмерной принтеру. Помимо выбора базовой конфигурации, разработчик может переопределить некоторые свойства, чтобы лучше соответствовать их 3D-принтеру и включить их в новую прошивку.

  4. Подключение и использование. После записи встроенного ПО во флэш-память 3D-принтера, каждый раз, когда пользователь подключает его к компьютеру с Windows 10, стандартный драйвер будет автоматически скачан и будет использовать пользовательские функции печати, выбранные разработчиком.

В следующих разделах мы проиллюстрируем каждый из этих шагов, используя конкретный пример.

Дополнительные сведения см. в дескрипторах ОС Майкрософт.

Совместимый идентификатор

Чтобы указать операционной системе Windows, что мы в данный момент используем трехмерный принтер, необходимо использовать правильный совместимый идентификатор. Список совместимых с Майкрософт идентификаторов доступен на дескрипторов ОС Майкрософт.

Совместимый идентификатор для трехмерного принтера показан в следующей таблице:

Совместимый идентификатор Частично совместимый идентификатор Описание
"3DPRINT" (0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) Меняется Принтер MS3DPRINT G-Code

В файле заголовка, включенном в встроенное ПО 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
};

Эта строка в приведенном выше коде является совместимым идентификатором трехмерного принтера:

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

С помощью этой конкретной конфигурации поставщики аппаратного обеспечения могут компилировать своё встроенное ПО и прошивать устройство. Затем при подключении устройства драйвер 3D Print Standard автоматически загружается из Центра обновления Windows.

На этом этапе принтер использует стандартную конфигурацию драйвера по умолчанию, параметры, используемые конфигурацией по умолчанию, доступны в папке %SYSTEMROOT%\System32\MS3DPrint in the file StandardGCode.xml. Кроме того, разработчик может использовать другую базовую конфигурацию, список базовых конфигураций доступен в той же папке %SYSTEMROOT%\System32\MS3DPrint. Этот список регулярно заполняется новой конфигурацией, так как новые трехмерные принтеры появляются на рынке.

Дескриптор функций расширенных свойств ОС

Как указано в приведенном выше разделе, IHV имеют доступ к нескольким базовым конфигурациям. Это позволяет свести к минимуму объем информации, которая должна храниться в памяти флэш-памяти принтера. Разработчики могут проверить базовые конфигурации, доступные и выбрать наиболее близкий к их принтерам. В этом примере мы собираемся выбрать базовую конфигурацию SD-карты и переопределить некоторые свойства следующими параметрами:

Параметры Ценность
ШиринаОбластиВывода3DЗадачи 250000
ГлубинаОбластиВывода3DЗадачи 260000
ВысотаЗоныВыходаРаботы3D 270000
Диаметр нити 2850

Дополнительные сведения об этих параметрах см. в документе MS3DPrint Standard G-Code Driver.docx в документации пакет SDK для трехмерной печати (скачать MSI).

Чтобы указать базовую конфигурацию, которую следует использовать и какие параметры переопределить, разработчик должен указать ее с помощью дескриптора компонента ОС расширенных свойств, как показано ниже:

// 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_Desc_Ext_Prop.doc. Дополнительные сведения см. в дескрипторах ОС Майкрософт.

Проверка возможностей печати

После того как на устройство записано встроенное ПО во флэш-памяти, оно будет автоматически обнаружено Windows 10, а настройки печати хранятся в реестре.

установка совместимого трехмерного принтера.

Важно, чтобы IHV изменил VID/PID устройства на свои собственные. Никогда не следует использовать идентификатор поставщика (VID) или идентификатор продукта (PID) другого существующего устройства, так как операционная система не сможет правильно обнаруживать устройство, так как VID и PID принимают приоритет над дескриптором ОС.

Если устройство установлено правильно, оно должно быть указано в Устройства и принтеры.

устройства и принтеры.

В диспетчере устройствможно проверить соответствующий идентификатор устройства и совместимый идентификатор.

диспетчер устройств.

вкладка «Сведения» диспетчера устройств — идентификатор соответствующего устройства.

вкладка сведений о диспетчере устройств — совместимые идентификаторы.

Свойства USB-драйвера можно получить, перейдя в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB.

изменить многостроковое значение в USB-реестре.

Свойства драйвера 3D Print можно получить, перейдя в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers.

просмотреть 3d свойства драйвера печати в реестре.

Ресурсы

Дополнительные сведения см. в следующих документах и ресурсах:

пакет SDK для трехмерной печати (скачивание MSI)

Дескрипторы ОС Microsoft

спецификация USB 2.0

Вы также можете связаться с командой Microsoft 3D Printing по адресу ask3dprint@microsoft.com.