libhid を使用して、PIC マイクロコントローラーで開発中のカスタム HID デバイスにアクセスすることに興味があります。test_libhid コードを正常に実行できました。このライブラリを使用してデバイスを読み書きするための指示は、test_libhid コードのコメントとして提供されます。
文書化された読み取りと書き込みの手法に従おうとしましたが、これまでのところ、デバイスの読み取りまたは書き込みに成功していません。その理由は、デバイスのレポート記述子が、入力データ レポートと出力データ レポートの両方に 64 バイト配列を指定しているためではないかと考えています。
usb.org の HID セクションのデバイス クラス定義に含まれる詳細を読みました。記述子が一般的にどのように機能し、どのように HID パスに変換されるかを理解していると思いますが、デバイスに対してデータを読み書きしようとすると、失敗した。
デバイスが Windows で動作することを確認したので、問題は Linux 側にあるようです。それは問題ではないと思いますが、現在、Ubuntu 8.04 サーバーを搭載した VMWare 仮想マシンで作業していることに注意してください。
次のレポート記述子 (lsusb –vvv から生成) の HID パスを指定する方法について、誰かがガイダンスを提供できますか?
Report Descriptor: (length is 29)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x40 ] 64
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
(null)
Item(Local ): Usage Maximum, data= [ 0x40 ] 64
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Main ): End Collection, data=none
また、test_libhid プログラムを実行すると、次のような 64 個の同一のエントリとして解析ツリーがダンプされます。
path: 0xff000001.0x00000000; type: 0x80
これらはおそらく入力です。このリストの後に、次のような別の 64 のエントリが続きます。
path: 0xff000001.0x00000000; type: 0x90
私は libhid メーリング リストに投稿しましたが、最近あまり活動がなかったので、ここに質問を持ち込もうと思いました。この入力および出力レポートの HID パスを指定する方法について誰かがガイダンスを提供できる場合は、非常に役立ちます。
ありがとう。