시작 가이드 - Microsoft Standard Driver for 3D Printers

3D 프린터용 Microsoft Standard Driver를 통해 개발자는 프린터를 Windows 10과 쉽게 호환할 수 있습니다. Microsoft OS 설명자를 사용하는 모든 프린터는 호환되는 3D 프린터로 인식할 수 있습니다. 구체적인 예제를 사용하여 이 문서에서는 Windows 10에서 디바이스를 3D 프린터로 인식하고 인쇄 기능을 전달할 수 있는 펌웨어를 만드는 방법을 보여 줍니다.

소개

Microsoft Standard Driver는 3D 프린터가 Windows 10과 호환되기를 원하는 독립 하드웨어 공급업체(IHV)로부터 자신의 드라이버를 작성하는 부담을 덜어줍니다. Microsoft OS 설명자를 알고 있는 Windows 버전은 제어 요청을 사용하여 정보를 검색하고 이를 사용하여 사용자 상호 작용 없이 디바이스를 설치하고 구성합니다.

Windows 10에서 작동하는 3D 프린터를 가져오는 일반적인 프로세스에는 다음 단계가 포함됩니다.

  1. 호환되는 ID입니다. IHV(독립 하드웨어 공급업체)는 프린터의 펌웨어에 "3D 인쇄" 호환 ID를 포함해야 합니다. 이렇게 하면 디바이스를 3D 프린터로 인식할 수 있습니다.

  2. 표준 드라이버입니다. 디바이스가 연결되면 Windows 업데이트 3D 인쇄 표준 드라이버를 다운로드하고 현재 디바이스를 기본 구성을 사용하는 3D 프린터로 검색합니다.

  3. 확장 속성 설명자입니다. 표준 드라이버의 일부로 3D 프린터에 대한 몇 가지 기본 구성을 사용할 수 있습니다. 따라서 개발자는 3D 프린터와 일치하는 기본 구성을 선택할 수 있습니다. 개발자는 기본 구성을 선택하는 것 외에도 일부 속성을 재정의하여 3D 프린터와 더 잘 일치시키고 새 펌웨어에 포함할 수 있습니다.

  4. 플러그 앤 플레이. 3D 프린터의 플래시 메모리에서 펌웨어가 연소되면 사용자가 Windows 10 컴퓨터에 연결할 때마다 표준 드라이버가 자동으로 다운로드되고 개발자가 선택한 사용자 지정 인쇄 기능을 사용합니다.

다음 섹션에서는 구체적인 예제를 사용하여 이러한 각 단계를 설명합니다.

자세한 내용은 Microsoft OS 설명자를 참조 하세요.

호환 가능한 ID

현재 3D 프린터를 사용하고 있는 Windows 운영 체제에 지정하려면 올바른 호환 ID를 사용해야 합니다. Microsoft 호환 ID 목록은 Microsoft OS 설명자에서 사용할 수 있습니다.

3D 프린터의 호환 ID는 다음 표에 나와 있습니다.

호환 가능한 ID 하위 호환 ID 설명
"3DPRINT"(0x33 0x44 0x50 0x52 0x49 0x4E 0x54 0x00) 상황에 따라 다름 MS3DPRINT G 코드 프린터

3D 프린터 펌웨어에 포함된 헤더 파일에서 IHV는 다음과 같이 호환 ID를 지정해야 합니다.

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

위의 코드에서 이 줄은 3D 프린터의 호환 ID입니다.

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

이 특정 구성을 사용하여 IHV는 펌웨어를 컴파일하고 디바이스를 플래시할 수 있습니다. 그런 다음 디바이스가 연결되면 Windows 업데이트 3D 인쇄 표준 드라이버가 자동으로 다운로드됩니다.

이 단계에서 프린터는 표준 드라이버 기본 구성을 사용하며, 기본 구성에서 사용하는 매개 변수는 파일 StandardGCode.xml %SYSTEMROOT%\System32\MS3DPrint 폴더에서 액세스할 수 있습니다. 또한 개발자는 다른 기본 구성을 사용하도록 선택할 수 있으며 기본 구성 목록은 동일한 폴더 %SYSTEMROOT%\System32\MS3DPrint에서 사용할 수 있습니다. 이 목록은 새로운 3D 프린터가 시장에 등장함에 따라 정기적으로 새로운 구성으로 채워집니다.

확장 속성 OS 기능 설명자

위의 섹션에서 설명한 대로 IHV는 여러 기본 구성에 액세스할 수 있습니다. 프린터의 플래시 메모리에 저장해야 하는 정보의 양을 최소화할 수 있다는 장점이 있습니다. 개발자는 사용 가능한 기본 구성을 검사하고 프린터에 가장 가까운 구성을 선택할 수 있습니다. 이 예제에서는 SD 카드 기본 구성을 선택하고 아래 매개 변수를 사용하여 일부 속성을 재정의합니다.

매개 변수
Job3DOutputAreaWidth 250000
Job3DOutputAreaDepth 260000
Job3DOutputAreaHeight 270000
Filamentdiameter 2850

이러한 매개 변수에 대한 자세한 내용은 MSI 다운로드(3D Printing SDK) 설명서의 MS3DPrint 표준 G-Code Driver.docx 문서를 참조하세요.

사용할 기본 구성과 재정의할 매개 변수를 지정하려면 개발자는 다음과 같이 확장 속성 OS 기능 설명자를 통해 지정해야 합니다.

// 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 기능 설명자에 대한 정보는 OS_Desc_Ext_Prop.doc 파일에 있습니다. 자세한 내용은 Microsoft OS 설명자를 참조 하세요.

인쇄 기능 확인

디바이스에 플래시 메모리에 펌웨어가 연소되면 Windows 10에서 디바이스가 자동으로 검색되고 인쇄 기능이 레지스트리에 저장됩니다.

호환 가능한 3d 프린터를 설치합니다.

IHV는 디바이스의 VID/PID를 자체적인 것으로 변경하는 것이 중요합니다. OS 설명자보다 VID 및 PID가 우선적으로 사용되므로 운영 체제에서 디바이스를 제대로 검색할 수 없으므로 다른 기존 디바이스의 VID(공급업체 ID) 또는 PID(제품 ID)를 사용하면 안 됩니다.

디바이스가 제대로 설치된 경우 디바이스 및 프린터에 디바이스가 나열되어야 합니다.

디바이스 및 프린터.

장치 관리자 일치하는 디바이스 ID 및 호환 ID를 확인할 수 있습니다.

디바이스 관리자.

디바이스 관리자 세부 정보 탭 - 일치하는 디바이스 ID입니다.

디바이스 관리자 세부 정보 탭 - 호환되는 ID입니다.

USB 드라이버 속성은 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB레지스트리를 방문하여 가져올 수 있습니다.

USB 레지스트리에서 다중 문자열 값을 편집합니다.

3D 인쇄 드라이버 속성은 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers의 레지스트리를 방문하여 얻을 수 있습니다.

레지스트리에서 3d 인쇄 드라이버 속성을 봅니다.

리소스

자세한 내용은 다음 문서 및 리소스를 참조하세요.

3D 인쇄 SDK(MSI 다운로드)

Microsoft OS 설명자

USB 2.0 사양

Microsoft 3D Printing 팀에 문의할 수도 있습니다 ask3dprint@microsoft.com.