私は、STMicroマイクロコントローラを使用してUSB HIDデバイスを開発しています。私は、STMicroのHIDの例でうまくいきました。私はPC側でWindows 7の64ビット版C++を使用しています。私は自分のデバイスで動作するアプリケーションを持っています。しかし、私が把握できないことが1つあります。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、//論理最大(255) ...は実際には論理最大-1を意味します。 0x26、0xFF、0x00、//論理最大(255) また、物理コレクションの0xA1 0x00の代わりに0xA0を指定すると、灰色の領域になります。この仕様では、値が省略された場合、どのようなデフォルト値が想定されているかは明示されていませんが、妥当ではないと思います。 それ以外のレポート記述子はありませんので、5バイトのレポートが表示されることを期待しています(Ry、Rx、Y、X、およびボタンビットごとに1つずつ)。 – aja