我正在为Windows 7上的团队编写通用USB HID设备的控制软件。由于我是实习生,因此我的工作机会有限:
我的问题是,但是我在使用HidUSB驱动程序时尝试访问设备(根据Zadig),我的中断传输读取尝试总是在设备实际发送数据时超时而导致。无论我是否使用HIDAPI,是否使用libusb,始终都可以写入设备,只有读取失败。(这是一个原始的设备atm,甚至没有完成最终的数据包数据规范,当前它只是向主机发送一个ON或OFF字符串,写入设备会在7种颜色之间将LED的状态更改为熄灭状态,这样肯定可以正常工作)
我想不到该设备有问题,因为如果我将Windows上的驱动程序替换为Zadig的WinUSB驱动程序,则它可以与libusb(并且hidapi之后无法打开该设备)一起使用,并且在Linux上也可以,只需读取/ dev / hidraw也可以返回数据。我还阅读了HID和USB规范,并且我知道设备描述符指出USB数据包大小为8,而HID输入报告的大小上限为20,所以我不知道设备使用的报告ID。
通过USBPcap和Wireshark检查Windows通信,我能注意到的唯一区别是,与WinUSB驱动程序一起使用CC时,与HidUSB驱动程序相比,主机数据包中请求数据的HidUSB驱动程序充满了00。
作为记录,我已经尝试过libusb,hidapi,HidLibrary,并且团队中没有人知道现在该怎么做。
我还读到Windows禁用对HID键盘和鼠标的访问,但是我没有发现最终以USB鼠标结尾的设备配置的实际示例。设备管理器在HID下列出了我的设备两次,一次是作为符合HID的设备或其调用方式(此处是本地化的Win7),一次是USB输入设备,但未在“鼠标”或“键盘”选项中列出该设备。
将其整理一会儿,但是如果以后有人遇到类似的问题,我想在这里写下来。
如果报表的数据大小与报表描述符中的发送数据长度不匹配,则Windows HID驱动程序会使所有传入数据包无效。Linux和设备本身并不在意,这就是为什么在我提出问题时,我也将其排除在源头之外。在上面的示例中,开/关消息为4-5字节,而报告的20字节长度是问题,因为设备发送20B消息,所有可以通过HidUSB写入的解决方案也可以读取。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句