usb 통신 예제

août 2, 2019 9:19 Publié par

끝점에 액세스하려면 계층 적 구성을 얻어야 합니다. 버스에 연결된 장치에는 하나 이상의 구성 설명자가 있는 하나(하나뿐) 장치 설명자가 있습니다. 이러한 구성은 종종 상태(예: 활성 및 저전력 모드)에 해당합니다. 각 구성 설명자는 차례로 디바이스의 특정 측면을 설명하는 하나 이상의 인터페이스 설명자가 있으므로 서로 다른 용도로 사용될 수 있습니다: 예를 들어, 카메라에는 오디오 및 비디오 인터페이스가 모두 있을 수 있습니다. 이러한 인터페이스 설명자는 차례로 하나의 기본 인터페이스 설정 및 차례로 끝점 설명자가 있는 더 많은 대체 인터페이스 설정, 위에서 설명 한 대로. 그러나 끝점은 여러 인터페이스와 대체 인터페이스 설정 간에 재사용될 수 있습니다. 끝점은 데이터 원본 또는 싱크로 설명할 수 있으며 USB 장치에만 존재합니다. 엔드포인트에 저장된 데이터는 USB 호스트에서 수신되거나 대기중일 수 있습니다. 끝점은 USB 사양에 정의된 네 가지 전송 유형(제어 전송, 인터럽트 전송, 등광 전송 및 대량 전송)을 지원하도록 구성할 수 있습니다.

하드웨어의 한계 내에서 끝점은 USB 미들웨어를 사용하여 구성할 수 있습니다(예: 엔드포인트를 특정 전송 유형으로 제한). 끝점은 일종의 버퍼 역할을 합니다. 예를 들어 USB 호스트의 클라이언트는 Endpoint 1로 데이터를 보낼 수 있습니다. USB 호스트에서 데이터가 OUT 엔드포인트 1로 전송됩니다. 마이크로 컨트롤러의 프로그램은 즉시 데이터를 읽습니다. 프로그램이 USB 버스에 자유롭게 액세스할 수 없으므로(USB 호스트에서 제어하는 USB 버스)는 반환 데이터를 IN Endpoint 1에 기록해야 합니다. IN Endpoint 1의 데이터는 호스트가 데이터를 요청하는 ENDpoint 1에 IN 패킷을 보낼 때까지 유지됩니다. 클래스 및 하위 클래스를 사용하여 제네릭 기능이 있는 장치를 지정할 수 있습니다. USB 스피커는 오디오-2.0 등급으로 광고됩니다. 키보드는 HID 클래스(휴먼 인터페이스 장치) 장치로 자신을 광고합니다.

스피커와 키보드가 모두 있는 장치의 이전 예제는 자신을 복합 장치 클래스로 광고합니다. 응용 프로그램은 라이트 바의 어떤 요소를 조명해야 하는지 지정하기 위해 8개의 확인란 컨트롤 세트를 제공하는 것과 같이 사용자 인터페이스(UI)를 통해 이를 설정할 수 있습니다. 지정된 요소는 버퍼의 적절한 비트에 해당합니다. UI 코드를 피하기 위해 이 섹션의 예제 코드는 대체 표시등이 켜지도록 비트를 설정합니다. USB 장치의 장치 설명자는 버스에 연결된 장치의 종류를 알려주는 서명이 있습니다. 이 서명은 클래스 코드, 하위 클래스 코드 및 프로토콜 필드로 구성됩니다. 이들은 함께 장치와 통신하는 데 사용해야 하는 운영 체제 드라이버를 식별합니다. 또한 각 USB 장치 인터페이스 설명자는 동일한 서명 필드를 포함합니다. 인터페이스 서명을 통해 여러 운영 체제 드라이버가 단일 USB 장치(예: 오디오 및 비디오 인터페이스가 있는 USB 장치)와 동시에 통신할 수 있으며 동일한 드라이버의 여러 인스턴스가 별도의 통신을 할 수 있습니다. 동일한 USB 장치의 인터페이스(예: 여러 이더넷 포트가 있는 USB 이더넷 어댑터) 대부분의 경우 USB 장치와 통신할 때 이러한 클래스(UsbRequest는 비동기 통신을 수행하는 경우에만 필요)를 모두 사용해야 합니다.

일반적으로 원하는 UsbDevice를 검색하는 UsbManager를 얻습니다. 장치가 있는 경우 통신할 적절한 UsbInterface 및 해당 인터페이스의 UsbEndpoint를 찾아야 합니다. 올바른 끝점을 얻으면 UsbDeviceConnection를 열어 USB 장치와 통신합니다.

Classés dans :Non classé

Cet article a été écrit par NotreSite

Les commentaires sont fermés.