小弟遇到一个问题,就是K60的USB使用块传输的时候发现丢包,上位机用的是开源的libusb,在不懈的调试中发现,上位机不停的读取(大概1MS读取一次),下位机是定时准备数据的(100MS准备一次)
上位机执行读取函数的时候如果下位机数据没有准备好的话,返回超时,如果执行的时候准备好了,就可以读取到,关键来了,如果中间出现过超时,也就是下位机没准备好,上位机读取了,就会出现随机丢包现象,
如果上位机读取时间大一点,也就是保证每次读取的时候 下位机都准备好了,就一直不会出现丢包问题。
这个有点不能理解,难道上下位机还要同步? 这个DATA0\DATA1不就是同步的吗,难道说上位机只要读取一次不管成功还是失败,这个DATA0\DATA1还是会切换?然后下位机的DATA0\DATA1没对上 上位机的 然后数据包就丢弃了?
最后还有一次问题就是 libusb的usb_bulk_read函数,支持可重入吗?如果两个线程同时执行这个函数会不会有风险,好在这个libusb是开源的,实在不行我只能去看源代码了。。。。。。。。 |