通过USB使用HIDAPI时被报告ID弄糊涂
我是一个USB隐藏的新手,我正在尝试使用 关于在VisualStudio中使用HIDAPI,我有一个关于报告ID的问题 当我尝试使用HIDAPI并连接到Microchip自定义演示时, 我对此感到困惑:65字节的报告对我来说毫无意义 即使我不想设置报告ID,我也需要将第一个字节设置为0,并将65字节的缓冲区发送到设备,但我只从微芯片设备接收64字节的数据,因为报告长度为64字节 它看起来像:通过USB使用HIDAPI时被报告ID弄糊涂,usb,hid,hidapi,Usb,Hid,Hidapi,我是一个USB隐藏的新手,我正在尝试使用 关于在VisualStudio中使用HIDAPI,我有一个关于报告ID的问题 当我尝试使用HIDAPI并连接到Microchip自定义演示时, 我对此感到困惑:65字节的报告对我来说毫无意义 即使我不想设置报告ID,我也需要将第一个字节设置为0,并将65字节的缓冲区发送到设备,但我只从微芯片设备接收64字节的数据,因为报告长度为64字节 它看起来像: **Host** **Device**
**Host** **Device**
*write_hid*
65 byte --------------->
*read_hid*
<------------------ 64byte
然而,我觉得很奇怪
发送或接收的报告不总是64字节吗?因为规范规定报告的最大字节数应为64字节,并且每1ms发送一次
如果答案是肯定的,为什么API为1字节报告ID保留65字节
报告ID是否包含在64字节中
65字节的数据长度对我来说没有意义。如果您的应用程序在HID描述符中没有包含报表ID,那么就不应该在前面添加报表ID 正如您在的文档中所看到的,如果第一个字节为0,则HIDAPI应仅发送64个字节,即没有报告ID:
unsigned char data[65];
buf[0] = 0; /* Single report */
// Fill report starting at buf[1]
hid_write(device, data, sizeof(data));
查看的源代码时,可以看到报告ID已正确剥离。但是,在Windows上,数据直接传递到Windows。我不知道Windows编程,但这可能会有所不同。请尝试在Linux上测试此功能。如果您的应用程序在HID描述符中不包含报表ID,则不应在前面添加报表ID 正如您在的文档中所看到的,如果第一个字节为0,则HIDAPI应仅发送64个字节,即没有报告ID:
unsigned char data[65];
buf[0] = 0; /* Single report */
// Fill report starting at buf[1]
hid_write(device, data, sizeof(data));
查看的源代码时,可以看到报告ID已正确剥离。但是,在Windows上,数据直接传递到Windows。我不知道Windows编程,但这可能会有所不同。试着在Linux上测试这个