usb-hid通信过程中报告传输数据的字节数
想请教一个关于hid通信过程中报告传输数据的字节数的问题。
1.下位机规定报告字节数最大为64字节
2.通信协议是不定长的,每条命令返回值长度不同,下位机不会自动补全64字节。
Q1、我在编写上位机过程中使用windows的 ReadFile 读取的时候,发现下位机返回数据不够64字节的时候ReadFile没有数据,只有够了64字节才会读到数据。而我想实现的是能够读取下位机返回的变长数据,因为下位机没有补全64字节,我可以怎么尝试?
我自己也在网上查找了一些资料,了解到可能是ReadFile读取数据格式是{报告id+报告长度}的整数倍,下位机返回数据不够64字节就不放在ReadFile的缓冲区中?我使用bus hound监测,发现我的设备有两个选项,1.USB人体学输入设备 2.HID-compliant-device。在使用程序发送数据时,1能够监测到任何发送数据以及返回数据,而2只能够监测到发送数据,以及返回字节数满64字节的返回数据,不够64的就没有显示。
Q2、想请问下 1.USB人体学输入设备 2.HID-compliant-device这两个东西直接的关系及区别?
希望了解的人帮忙解答下,万分感谢!
[解决办法]
For Q1:
能够修改设备端驱动程序么?在设备端发送数据不够64bytes时,应该设法结束Bulk或者Setup传输。这样主机端的驱动程序才可以结束等待,将不满64byte的数据包上传。
For Q2: 据俺了解,USB Human Interface Device是一个类驱动程序,而HID-compliant-device才是对应HID设备。