我是USB HID新手,我正在尝试使用HIDAPI for my application.
我有一个关于在报表ID中使用HIDAPI(在Visual Studio中)的问题。
当我尝试使用HIDAPI并连接到Microchip自定义演示时, 我对这方面感到困惑 - 65字节的报告对我没有意义!
即使我不想设置报告ID, 我需要将第一个字节设置为0并将65字节缓冲区发送到设备, 但我只从Microchip器件接收64字节数据(因为报告长度为64字节)。
看起来像:
**Host** **Device**
*write_hid*
65 byte --------------->
*read_hid*
<------------------ 64byte
然而,对我来说这似乎很奇怪。
发送或接收的报告总是不是64个字节吗? 因为规范说报告应该有64字节的最大值并且每1毫秒发送一次。
如果答案是肯定的,为什么API为1字节报告ID保留65个字节? 报告ID是否包含在64个字节中?
65字节的数据长度对我来说没有意义。
答案 0 :(得分:4)
您的应用程序是否在HID描述符中包含报告ID?如果没有,那么就不应该有一个报告ID。
正如您在hid_write的文档中所看到的,如果第一个字节为0(即没有报告ID),HIDAPI应该只发送64个字节:
unsigned char data[65];
buf[0] = 0; /* single report */
// fill report starting at buf[1]
hid_write(device, data, sizeof(data));
查看libusb implementation的源代码时,您可以看到报告ID已正确删除。但是在Windows上,数据会直接传递给Windows。我不了解Windows编程,但也许这会产生影响。您是否尝试在Linux上使用此测试?