确定使用libhid在Linux上的USB HID设备的HID路径
题
我感兴趣的使用libhid访问我们的PIC单片机开发自定义HID设备。我已经能够顺利拿到test_libhid代码运行。用于读取和写入到使用这种库设备的说明被提供作为在test_libhid代码注释
我试图按照技术文件进行读取和写入,但到目前为止,我还没有成功地读取或写入设备。我怀疑原因可能是该设备的报告描述符指定为输入和输出的数据报告一个64字节数组。
我已阅读包含在从usb.org HID部分设备类定义的细节,我想我明白描述符一般是如何工作的,以及他们如何转化为HID路径,但我尝试读取和写入数据该设备出现故障。
我已经验证该设备工作在Windows,所以我的问题似乎在于在Linux端。我不认为它应该事,但我要指出,我目前在VMware虚拟机中,装有Ubuntu的8.04服务器工作
任何人都可以提供关于如何指定他躲在以下报告描述路径一些指导(从产生的lsusb -vvv):
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路径的指导,这将是一个巨大的帮助。
感谢。
解决方案
大量的试验和错误之后,我从来没有能够得到libhid与报告描述了我的目标设备上运行。我确实发现HID设备接口(hiddev)的工作非常出色,而且实际上很容易理解。这是一个很好的为hiddev ,我强烈建议PDF参考。此外,包括在/ usr / include中/ Linux文件hiddev.h也非常有帮助。在Ubuntu 8.04,所述hiddev接口工作“开箱即用”,无需额外的配置。
希望这将是一些帮助有问题的接口的HID设备在Linux主机旁边的人。
注:以上是我提供的.PDF文件的链接似乎已经消失。我发布了 .pdf文件的副本,这里。它是一个免费的文件共享服务,所以你需要以下载它忍受一些广告。