我有兴趣使用 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 路径的指导,那将是一个巨大的帮助。
谢谢。