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


Руководство по началу работы — 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 скачивает трехмерный стандартный драйвер печати и обнаруживает текущее устройство в виде трехмерного принтера, использующего конфигурацию по умолчанию.

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры Значение
Job3DOutputAreaWidth 250000
Job3DOutputAreaDepth 260000
Job3DOutputAreaHeight 270000
Filamentdiameter 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, а возможности печати хранятся в реестре.

установка компаемого 3d-принтера.

Важно, чтобы 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)

Дескрипторы ОС Майкрософт

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

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