2009-06-29 216 views
2

我有兴趣使用libhid访问我们正在PIC单片机上开发的自定义HID设备。我已经能够成功运行test_libhid代码。读取和写入使用该库的设备的指令作为test_libhid代码中的注释提供。在Linux上使用libhid确定USB HID设备的HID路径

我试图按照记录的技术进行读写,但到目前为止,我还没有成功读取或写入设备。我怀疑原因可能是设备的报告描述符为输入和输出数据报告指定了一个64字节的数组。

我已经阅读了usb.org中HID部分的设备类定义中包含的详细信息,我认为我理解描述符是如何工作的以及它们如何转换为HID路径,但是我尝试读取和写入数据到设备失败。

我已经验证该设备在Windows中工作,所以我的问题似乎在于Linux端。我不认为这是重要的,但我应该注意到,我目前在使用Ubuntu 8.04服务器加载的VMWare虚拟机上工作

任何人都可以提供一些关于如何为以下内容指定HID路径的指导报告描述符(从-vvv的lsusb生成):

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路径的指导,这将是一个巨大的帮助。

谢谢。

+0

发布您的评论:部分作为回答,稍后再接受 – shodanex 2009-07-06 07:25:39

回答

1

经过多次试验和错误之后,我始终无法获得libhid来处理目标设备的报告描述符。我确实发现HID设备接口(hiddev)工作得很好,实际上很容易理解。有一个很好的PDF Reference for hiddev,我强烈推荐。另外,/ usr/include/linux中的include文件hiddev.h也非常有帮助。在Ubuntu 8.04中,hiddev界面“开箱即用”,无需额外配置。

希望这会对下一个将HID设备连接到Linux主机时遇到问题的人有所帮助。

注意:我为上面的.PDF文件提供的链接似乎已经消失。我发布了一个copy of the .PDF file here。它是一个免费的文件共享服务,所以你需要忍受几个广告才能下载它。

+0

对不起,该下载链接现在无效,请重新上传吗?感谢:) – 2011-08-15 22:19:22