这个libusb-win32如果把timeout设置为0就可以收到所有数据不会丢包,但是读取函数会返回-116之类的超时错误(而数据其实已经读取到了),但是多个端点读取如果这个时间设置为0,其他端点就会读取不到,最后查看源码和源码作者的回答时间设置为0是Linux上的,win32上不支持0,唉曲折的很,然后在这一个星期内尝试了windriver,感觉不错毕竟是商业的,可惜几万块的授权,然后又尝试了winusb,又被一个新的问题搞伤掉了,上位机只能运行几次,然后就始终读取失败,下位机复位都不行,必须PC重启,然后又是几次成功,唉,最后又回归到libusbK,libusbK是一个大的集合,看了一下源码确实正规多了,至于之前的问题不知道libusbK会是什么表现,我已经无力再测试了,对于这个问题,我换了个思路,就是在setup包结构中增加了一个类和USB描述符一个级别,用于描述USB所有端点的状态,在下位机要向PC发送数据的时候把这个类的状态更新一下,对于上位机在读取之前用默认端点控制函数获取一下这个类,然后在读取,这样或许就能很好的避免超时等待和丢包问题,唉真心搞伤掉了。
|