USB 디바이스와 통신, 완료 시작(UWP 앱)
요약
- USB 디바이스와 대화하는 UWP 앱을 만들기 위한 엔드 투 엔드 연습
- 도우미 샘플: 사용자 지정 USB 디바이스 액세스 샘플
중요 API
Windows 8.1 도입된 Windows 런타임 API를 사용하여 사용자에게 주변 USB 디바이스에 대한 액세스 권한을 부여하는 UWP 앱을 작성합니다. 이러한 앱은 사용자 지정 조건에 따라 디바이스에 연결하고, 디바이스에 대한 정보를 얻고, 디바이스에 데이터를 보내고, 반대로 디바이스에서 데이터 스트림을 가져와서 디바이스에서 인터럽트 데이터를 폴링할 수 있습니다.
여기서는 C++, C# 또는 Visual Basic 앱을 사용하는 UWP 앱이 이러한 작업을 구현하는 방법과 Windows 포함된 클래스의 사용을 보여 주는 예제에 연결하는 방법을 설명합니다. Devices.Usb. 앱 매니페스트에 필요한 디바이스 기능 및 디바이스가 연결되면 앱을 시작하는 방법을 살펴보겠습니다. 또한 배터리 수명을 절약하기 위해 앱이 일시 중단된 경우에도 백그라운드에서 데이터 전송 작업을 실행하는 방법을 보여 드리겠습니다.
이 섹션의 단계를 따르거나 사용자 지정 USB 디바이스 액세스 샘플로 직접 건너뜁니다. 도우미 샘플은 여기서 모든 단계를 구현하지만 계속 움직이기 위해 코드를 진행하지 않습니다. 특정 단계에는 코드를 빠르게 찾을 수 있도록 샘플 섹션에 찾기 가 있습니다. 샘플 소스 파일의 구조는 간단하고 평면적이므로 여러 소스 파일 계층을 드릴다운하지 않고도 코드를 쉽게 찾을 수 있습니다. 그러나 자신의 프로젝트를 분리하고 다르게 구성하는 것을 선호할 수 있습니다.
섹션 내용
- 1단계 - Microsoft에서 제공한 WinUSB 드라이버를 디바이스의 함수 드라이버로 설치합니다.
- 2단계 - 디바이스에 대한 디바이스 인터페이스 GUID, 하드웨어 ID 및 디바이스 클래스 정보를 가져옵니다.
- 3단계 - Windows 런타임 USB API 집합에서 허용하는 디바이스 클래스, 서브클래스 및 프로토콜을 결정합니다.
- 4단계 - 이 자습서에서 확장할 수 있는 기본 Microsoft Visual Studio 2013 프로젝트를 만듭니다.
- 5단계 - 앱 매니페스트에 USB 디바이스 기능을 추가합니다.
- 6단계 - 통신을 위해 디바이스를 열려면 앱을 확장합니다.
- 7단계 - USB 장치 레이아웃을 연구합니다. 좋습니다.
- 8단계 - UI에서 USB 설명자를 가져와서 표시하도록 앱을 확장합니다.
- 9단계 - 공급업체에서 정의한 USB 제어 전송을 보내도록 앱을 확장합니다.
- 10단계 - 대량 데이터를 읽거나 쓰도록 앱을 확장합니다.
- 11단계 - 하드웨어 인터럽트 데이터를 가져오기 위해 앱을 확장합니다.
- 12단계 - 현재 활성화되지 않은 인터페이스 설정을 선택하도록 앱을 확장합니다.
- 13단계 - 디바이스를 닫습니다.
- 14단계 - 앱에 대한 디바이스 메타데이터 패키지를 만듭니다.
- 15단계 - 디바이스가 시스템에 연결되면 앱이 시작되도록 앱을 확장하여 자동 실행 활성화를 구현합니다.
- 16단계 - 앱이 일시 중단되지 않은 펌웨어 업데이트와 같이 디바이스에 대한 긴 USB 전송을 수행할 수 있는 백그라운드 작업을 구현하도록 앱을 확장합니다.
- 17단계 - Windows 앱 인증 키트를 실행합니다.
연습 - USB 디바이스용 UWP 앱 작성
| 단계 | Description |
|---|---|
|
1단계 - Microsoft에서 제공한 WinUSB 드라이버를 디바이스의 함수 드라이버로 설치합니다. |
빠른 시작:WinUSB(Winusb.sys) 설치 다음과 같은 방법으로 Winusb.sys 설치할 수 있습니다.
|
|
2단계 - 디바이스에 대한 디바이스 인터페이스 GUID, 하드웨어 ID 및 디바이스 클래스 정보를 가져옵니다. |
디바이스 제조업체에서 해당 정보를 가져올 수 있습니다.
|
|
3단계 - Windows 런타임 USB API 집합에서 디바이스 클래스, 서브클래스 및 프로토콜을 허용하는지 여부를 결정합니다. |
디바이스의 디바이스 클래스, 서브클래스 및 프로토콜 코드가 다음 중 하나인 경우 UWP 앱을 작성할 수 있습니다.
|
|
4단계 - 이 자습서에서 확장할 수 있는 기본 Visual Studio 2013 프로젝트를 만듭니다. |
자세한 내용은 UWP 앱 시작을 참조하세요. |
|
5단계 - 앱 매니페스트에 USB 디바이스 기능을 추가합니다. |
빠른 시작:앱 매니페스트에 USB 디바이스 기능을 추가하는 방법 텍스트 편집기에서 Package.appxmanifest 파일을 열고 이 예제와 같이 Name 특성이 "usb"로 설정된 DeviceCapability 요소를 추가합니다.
참고 Visual Studio 2013 USB 디바이스 기능을 수정할 수 없습니다. 솔루션 탐색기에서 Package.appxmanifest 파일을 선택하고 길게(또는 마우스 오른쪽 단추로 클릭) 다음으로 열기...를 선택한 다음 XML(텍스트) 편집기를 선택해야 합니다. 파일이 일반 XML로 열립니다.
샘플에서 찾습니다. USB 디바이스 기능은 Package.appxmanifest 파일에 추가됩니다. |
|
6단계 - 통신을 위해 디바이스를 열려면 앱을 확장합니다. |
빠른 시작:USB 디바이스에 연결하는 방법(UWP 앱)
샘플에서 찾습니다. Scenario1_DeviceConnect 파일을 참조하세요. |
|
7단계(권장) - USB 장치 레이아웃을 연구합니다. |
디바이스를 구성하고 데이터 전송을 수행하는 방법에 대한 기본 USB 개념을 검토합니다. 모든 USB 개발자를 위한 개념입니다. 지원되는 각 대체 설정에 대한 디바이스 구성 설명자, 인터페이스 설명자 및 해당 엔드포인트 설명자를 봅니다. USBView를 사용하여 모든 USB 컨트롤러와 연결된 USB 디바이스를 찾아보고 디바이스 구성도 검사할 수 있습니다. |
|
8단계 - 앱을 확장하여 UI에 USB 설명자를 가져와서 표시합니다. |
빠른 시작:USB 설명자를 가져오는 방법(UWP 앱)
샘플에서 찾을 수 있습니다. Scenario5_UsbDescriptors 파일을 참조하세요. |
|
9단계 - 공급업체에서 정의한 USB 제어 전송을 보내도록 앱을 확장합니다. |
빠른 시작:USB 제어 전송 요청을 보내는 방법(UWP 앱)
샘플에서 찾을 수 있습니다. Scenario2_ControlTransfer 파일을 참조하세요. |
|
10단계 - 대량 데이터를 읽거나 쓰도록 앱을 확장합니다. |
빠른 시작:USB 대량 전송 요청을 보내는 방법(UWP 앱)
샘플에서 찾을 수 있습니다. Scenario4_BulkPipes 파일을 참조하세요. |
|
11단계 - 하드웨어 인터럽트 데이터를 가져오기 위해 앱을 확장합니다. |
빠른 시작:USB 인터럽트 전송 요청을 보내는 방법(UWP 앱)
샘플에서 찾을 수 있습니다. Scenario3_InterruptPipes 파일을 참조하세요. |
|
12단계 - 앱을 확장하여 현재 활성화되지 않은 인터페이스 설정을 선택합니다. |
빠른 시작:USB 인터페이스 설정을 선택하는 방법(UWP 앱) 통신을 위해 디바이스를 열면 기본 인터페이스와 첫 번째 설정이 선택됩니다. 해당 설정을 변경하려면 다음 단계를 수행합니다.
|
|
13단계 - 디바이스를 닫습니다. |
빠른 시작:USB 디바이스에 연결하는 방법(UWP 앱) UsbDevice 개체 사용을 완료한 후 디바이스를 닫습니다. C++ 앱은 delete 키워드를 사용하여 참조를 해제해야 합니다. C#/VB 앱은 UsbDevice.Dispose 메서드를 호출해야 합니다. JavaScript 앱 은 UsbDevice.Close를 호출해야 합니다. 샘플에서 찾을 수 있습니다. Scenario1_DeviceConnect 파일을 참조하세요. |
|
14단계 - 앱에 대한 디바이스 메타데이터 패키지를 만듭니다. |
도구:디바이스 메타데이터 작성 마법사
마법사의 단계에 따라 앱을 디바이스와 연결합니다. 디바이스에 대한 다음 정보를 입력합니다.
디바이스에 대한 권한 있는 앱으로 앱을 선언하려면 다음 지침을 따릅니다.
샘플에서 찾을 수 있습니다. DeviceMetadata 폴더를 참조하세요. |
|
15단계 - 디바이스가 시스템에 연결되면 앱이 시작되도록 자동 실행 활성화를 구현하도록 앱을 확장합니다. |
빠른 시작:자동 실행 디바이스에 대한 앱 등록 디바이스가 시스템에 연결되면 앱이 시작되도록 자동 실행 기능을 추가할 수 있습니다. 모든 UWP 앱(권한 있는 앱 또는 기타)에 대해 자동 실행을 사용하도록 설정할 수 있습니다.
샘플에서 찾을 수 있습니다. 자동 실행이라는 파일을 참조하세요. JavaScript는 default.js 참조하세요. |
|
16단계 - 앱이 일시 중단되지 않은 펌웨어 업데이트와 같이 디바이스에 길이 전송을 수행할 수 있는 백그라운드 작업을 구현하도록 앱을 확장합니다. |
백그라운드 작업을 구현하려면 두 개의 클래스가 필요합니다. 백그라운드 작업 클래스는 IBackgroundTask 인터페이스를 구현하고 주변 디바이스를 동기화하거나 업데이트하기 위해 만든 실제 코드를 포함합니다. 백그라운드 작업 클래스는 백그라운드 작업이 트리거될 때 및 앱의 애플리케이션 매니페스트에 제공된 진입점에서 실행됩니다.
참고 Windows 8.1 제공하는 디바이스 백그라운드 작업 인프라입니다. Windows 백그라운드 작업에 대한 자세한 내용은 백그라운드 작업으로 앱 지원을 참조하세요.
백그라운드 작업 클래스
UWP 앱은 DeviceUseTrigger 백그라운드 작업을 등록하고 트리거합니다. 앱은 백그라운드 작업의 진행률을 등록, 트리거 및 처리합니다.
참고 다음 예제 코드는 해당 개체를 사용하여 DeviceServicingTrigger 백그라운드 작업에 적용할 수 있습니다. 두 트리거 개체와 해당 API 간의 유일한 차이점은 Windows 정책 검사입니다.
샘플에서 찾을 수 있습니다. Scenario7_Sync 파일이라는 파일을 참조하세요. 백그라운드 클래스는 IoSyncBackgroundTask에서 구현됩니다. |
|
17단계 - Windows 앱 인증 키트를 실행합니다. |
권장됩니다. Windows 앱 인증 키트를 실행하면 앱이 Microsoft Store 요구 사항을 충족하는지 확인할 수 있으므로 앱에 주요 기능을 추가한 경우 이 작업을 수행해야 합니다. |
자세히 알고 싶으세요?
관련 샘플에서 자세히 알아보세요.
관련 샘플
UWP 앱 UI 디자인에 대해 자세히 알아봅니다.
C#을 사용하는 UWP 앱에 대한 로드맵 및 C++를 사용하는 UWP 앱에 대한 Visual Basic 및 로드맵
일반적으로 C++, C# 또는 Visual Basic 사용하여 UWP 앱을 만드는 방법에 대해 자세히 알아봅니다.
시간이 오래 걸릴 수 있는 작업을 수행할 때 앱의 응답성을 유지하는 방법에 대해 알아봅니다.

