mfc usb 통신 예제

다음 코드 예제는 지정된 USB 장치에 제어 요청을 전송하여 라이트 바의 조명을 제어합니다. 제어 명령은 특정 요청을 지정하는 요청 코드와 선택적 데이터 버퍼를 포함하는 8바이트 설정 패킷으로 구성됩니다. 요청 코드 및 버퍼 형식은 공급업체에 정의되어 있습니다. 이 예제에서 응용 프로그램은 라이트 바를 제어하기 위해 장치에 데이터를 보냅니다. 라이트 바를 설정하는 코드는 0xD8이며 편의를 위해 SET_BARGRAPH_DISPLAY로 정의됩니다. 이 요청의 경우 장치는 적절한 비트를 설정하여 점등해야 하는 요소를 지정하는 1바이트 데이터 버퍼가 필요합니다. 이 메서드를 사용 하 여 다음 send 명령 메서드가 호출 될 때 보낼 출력 버퍼에 바이트를 쓸 수 있습니다. 설정하려는 바이트 수(2-64)(바이트 0과 1는 통신용으로 예약됨)와 바이트 값을 간단히 공급하면 됩니다. 이 메서드는 성공하면 `true`를 반환하고 실패한 경우 `false`를 반환합니다. 다음 코드 예제에서는 콘솔 응용 프로그램의 주요 기능을 보여 줍니다. 이 예제에서는 D2xx 명령을 사용하여 응용 프로그램 참고 AN_428에 설명된 대로 USB 브리지 장치와 연결된 구성 EEPRO를 구성하는 방법을 보여 주며 있습니다. 예를 들어 FT232R, FT-X 시리즈, FT232H, FT2232H 및 FT4232H 장치에 대한 지원이 포함되며, 이 클래스는 DeviceWatcher 개체에 의해 동적으로 감지된 각 장치와 연결된 DeviceInformation 개체를 저장합니다. 이 클래스는 UI에서 장치 별 정보를 표시하는 데 사용됩니다.

예를 들어 UI는 사용자가 장치를 식별하고 데이터 전송에 사용할 수 있도록 이 클래스를 사용하여 장치 인터페이스 경로를 가져옵니다. 길이가 0인 읽기 요청은 성공과 함께 즉시 완료되며 스택 아래로 전송되지 않습니다. 전송 길이가 최대 전송 길이보다 큰 경우 WinUSB는 요청을 최대 전송 길이의 작은 요청으로 나누고 연속적으로 제출합니다. 전송 길이가 끝점의 MaxPacketSize의 배수가 아닌 경우 WinUSB는 전송 크기를 MaxPacketSize의 다음 배수로 증가시킵니다. 장치가 요청된 것보다 많은 데이터를 반환하는 경우 WinUSB는 초과 데이터를 저장합니다. 이전 읽기 요청에서 데이터가 남아 있는 경우 WinUSB는 데이터를 다음 읽기 요청의 시작 부분으로 복사하고 필요한 경우 요청을 완료합니다. 다음 코드 예제에서는 장치의 대량 끝점에서 데이터를 읽습니다. 다음 예제 코드는 WinUSB 인터페이스 핸들에서 지정한 USB 장치에 대한 다양한 설명자입니다.