ReadFile异步读HID时!不定期会读超时。
注意:大多数是通讯是正常的!上位机写指令,下位机发数据给上位机读,再写,再读,以完成通讯同步。
中间几千次写读交互中,可能不定期出现一次,读超时。
抓包情况:
24 DI 01 01 43ms 人体力学驱动
23.1 DI 01 01 00 00 00 00 00 10ms windows的自定义HID的驱动
ReadFile 异步IO 超时为5000MS.
情况就如上面抓包的数据。
下位机已成功上传了数据,如:
24 DI 01 01 43ms 人体力学驱动
Readfile已发出了IO请求,windows的自定义HID的驱动也响应了!如:
23.1 DI 01 01 00 00 00 00 00 10ms windows的自定义HID的驱动
理论上Readfile应可以从驱动的缓存区中读取数据了!但实际上却等时5000ms后还是超时没读到。
感觉是Read IO读取没能完成!求教是什么情况可能引起读失败(还是在抓包软件可以看到数据的情况下)。
改同步也是一样!会读死。
可能的原因会是什么呢!
1.可能是windows的自定义HID的驱动向驱动的缓存区存入数据时出错了(丢字节),使Readfile没有读够想要的字节数吗?
2.可能是在设定的时间读IO一直被挂起吗(改同步,出现这种情况中就读死了,IO永远被挂起了)?
3.接收程序有错(几千次正确交互中会有一次,会是程序的问题吗)?