2

Windows 7 で作業しているチーム内で汎用 USB HID デバイス用の制御ソフトウェアを作成しています。インターンとしての地位のため、私の可能性は限られています。

  • ソフトウェアは Windows で動作する必要があります
  • ソフトウェアは、Windows が提供するデフォルトの HID ドライバーを使用する必要があります。

私の問題は、HidUSB ドライバー (Zadig によると) を使用しているときにデバイスにアクセスしようとすると、デバイスが実際にデータを送信している間、割り込み転送の読み取り試行が常にタイムアウトになることです。HIDAPIを使用するかどうか、libusbを使用するかどうかにかかわらず、デバイスへの書き込みは常に機能しますが、読み取りのみが失敗します。(これはプリミティブなデバイス atm であり、最終的なパケット データの指定さえ行われていません。現在、ホストに ON または OFF の文字列を送信するだけで、デバイスに書き込むと LED の状態が 7 色とオフ状態の間で変化します。 、確実に機能するように)

WindowsのドライバーをZadigのWinUSBドライバーに置き換えると、/devを読み取るだけでlibusb(およびhidapiはデバイスを開くことができなくなります)およびLinuxで動作するため、デバイスに障害があるとは考えられません/hidraw もデータを正常に返します。HID と USB の仕様も読みましたが、デバイス記述子には USB パケットサイズが 8 であると記載されていますが、HID 入力レポートのサイズは 20 に制限されていますが、デバイスが使用するレポート ID はわかりません。

USBPcap と Wireshark を使用して Windows 通信を確認すると、デバイスの処理で気付く唯一の違いは、WinUSB ドライバーで使用した場合の CC と比較して、データを要求するホスト パケットが HidUSB ドライバーに対して 00 で満たされていることです。

記録のために、私はすでにlibusb、hidapi、HidLibraryを試しましたが、チーム内の誰も今何をすべきか考えていません.

また、Windows が HID キーボードとマウスへのアクセスを無効にしていることも読みましたが、デバイス構成が USB マウスになってしまう実際の例は見つかりませんでした。デバイス マネージャーは、HID 準拠デバイスまたはその呼び出し方法 (ここでは Win7 をローカライズ) として 1 回、USB 入力デバイスとして 1 回、HID tho の下にデバイスを 2 回リストしますが、マウスまたはキーボード オプションにはリストしません。

4

1 に答える 1

2

少し前に整理しましたが、今後誰かが同様の問題に遭遇した場合は、ここに書き留めておこうと思います。

レポートのデータ サイズが、レポート記述子内のサイズよりも送信されたデータの長さと一致しない場合、Windows HID ドライバーは着信パケットを無効にします。Linuxとデバイス自体は気にしませんでした。そのため、ここで質問をしたときに、それをソースとして除外しました。上記の例では、報告された 20 バイトの長さに対して 4 ~ 5 バイトのオン/オフ メッセージが問題でした。デバイスが 20B メッセージを送信するようになったため、HidUSB 経由で書き込むことができるすべてのソリューションも同様に読み取ることができます。

于 2014-07-15T14:10:09.687 に答える