2011-11-16 25 views
3

パケットサイズで64Bの割り込みエンドポイントを持つ2つの入力レポート(短いレポートでは64B、長いレポートでは128B)を宣言しました。複数のHID入力レポート

短いレポートを読むと、USBアナライザは短いレポートの予想されるバイト数(64B)を転送中と表示しますが、ReadFileは自分のバッファが無効であると不満を表明します(numberOfBytesToRead = 64)。

短いレポートのnumberOfBytesToReadパラメータに長いレポートサイズを使用すると、ReadFileは問題にはなりませんが、これは役に立たず、間違っています。これをどうすれば解決できますか?

そして私はパケットサイズで割り込みエンドポイントを複数使用して単純なものにしました。レポートが複数でない場合はどうなりますか?

私は、HIDドライバが最も長いサイズのレポートを期待しているため、短いレポートの最後にZLPまたは短いパケットを使用する必要があることを読んだ。これはおそらく問題です。 SiLabsファームウェアでZLPを作成する方法の例はありますか?私はC8051F320を使用しています。

答えて

0

パケットサイズのエンドポイントの倍数である場合、短いレポートの後にZLPを送信する必要があります。

1

あなたはReadFileを使用しているので、明らかにあなたはパケット、ないレポートを読んでいます。それはHIDの重要な違いです。 HIDパケットは、低速デバイスでは8バイト、高速デバイスでは64バイトです。 - だけでなくHIDデバイスと対話することを可能にし、すでにいくつかの前処理を実行するすべての名前のHid_*https://en.wikipedia.org/wiki/Human_interface_devices

WDKは、いくつかの機能が含まれています。あなたが読むべき仕様に

Wikipediaのリンク。しかし、その有用性は、お使いのデバイスがこれらのショートカットが存在するHIDクラスの1つであるかどうかによって決まります...

残りの質問については少しコードを投稿してください。あなたがどこにいるかを返すコード。私はおそらくあなたの最後から詳細が来たら私の答えを編集するでしょう。

関連する問題