STMicro 마이크로 컨트롤러를 사용하여 USB HID 장치를 개발 중입니다. 나는 잘 작동하는 STMicro의 HID 예제로 시작했습니다. PC 측에서 Windows 7 64 비트에서 C++을 사용하고 있습니다. 내 장치에서 작동하는 응용 프로그램이 있습니다. 그러나 내가 알 수없는 한 가지가 있습니다.Windows USB HID 보고서 길이
예제 펌웨어는 HIDP_CAPS.OutputReportByteLength 및 InputReportByteLength에 의해 결정되는 한 번에 2 바이트 만 송수신 할 수있었습니다. 한 번에 더 많은 데이터를 보내고 싶지만 보고서 길이를 늘리는 방법을 알 수 없습니다. 끝점 wMaxPacketSize, VID 및 PID 및 기타 몇 가지 사항을 성공적으로 변경했지만 Windows에서 보고서 길이를 계산하는 방법을 파악할 수 없습니다. 내 보고서 또는 장치 설명에이 길이를 나타내는 필드가없는 것 같지만 그 밖의 어디에서 왔는지 상상할 수는 없습니다.
Windows가 HIDP_CAPS.OutputReportByteLength 및 HIDP_CAPS.InputReportByteLength를 어떻게 결정하는지 누구에게도 알 수 있습니까?
어떻게 이러한 길이를 늘릴 수 있습니까?
전체 HID 보고서 설명자를 게시 할 수 있습니까? 보고서 ID가있는 경우 여분의 바이트를 차지하는 보고서의 접두사가 해당 ID ...이어야합니다. – aja
원본 프로젝트 전체를 얻을 수 있습니다. https://github.com/zegervdv/PS2-controller/tree/master/STM32F072B-Discovery_FW_V1.0.1/Projects/Peripheral_Examples/USB_Example –
큰 문제는 아니지만 사소한 오류가 있습니다. 해당 예제의 HID 보고서 설명자에서 ... 0x25, 0xFF, // Logical Maximum (255) ... "Logical Maximum -1"을 의미합니다. 0x26, 0xFF, 0x00, // Logical Maximum (255) 또한 Physical Collection의 0xA1 0x00 대신 0xA0을 지정하면 회색 영역이됩니다. spec은 명시 적으로 어떤 값이 생략되면 가정되는 기본값을 말하지 않지만 ... 제로는 합리적이라고 생각합니다. 그 외에는 보고서 설명자가 없으므로 5 바이트 보고서 (Ry, Rx, Y, X 및 버튼 비트 각각 하나씩)가 필요합니다. – aja