我正在开发一个自定义USB HID设备,其IN和OUT中断端点各有64字节长度。有2个报告(一个报告ID为1,另一个报告ID为2),报告计数各为63字节。当使用VC ++开发的PC应用程序使用WriteFile()发送64字节缓冲区时,我会在OUT中断端点上的设备上正确接收整个缓冲区。但是当我从设备向IN端点上的PC发送64字节缓冲区时,ReadFile()返回值为4(超时)。当设备插入时,这只发生了2次。之后一切正常,PC正确读取设备发送的64字节。
我正在使用USBlyzer工具来嗅探USB总线流量。该软件显示,前两次设备在中断IN端点上发送64字节缓冲区,但它也无法显示其中的数据。第三次开始,一切都神奇地工作,PC应用程序和USBlyzer都在屏幕上接收并显示64字节的缓冲区内容。
我不确定问题出在哪里,是PC端代码还是设备固件?请分享您的想法。