2

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

谢谢。

4

1 回答 1

2

经过多次反复试验,我始终无法让 libhid 使用目标设备的报告描述符。我确实发现 HID 设备接口 (hiddev) 工作得很好,而且实际上很容易理解。我强烈推荐hiddev有一个很好的PDF 参考。此外,/usr/include/linux 中的包含文件 hiddev.h 也很有帮助。在 Ubuntu 8.04 中,hiddev 界面“开箱即用”,无需额外配置。

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

注意:我为上述 .PDF 文件提供的链接似乎已消失。我在此处发布了 .PDF 文件的副本。它是一项免费的文件共享服务,因此您需要忍受一些广告才能下载它。

于 2009-07-06T21:32:37.730 回答