一、 libusb异步接收数据丢包问题
经过种种的坑,终于可以通过异步传输的方式收发数据,但是再实际使用中又出现了一个坑,还是比较致命的坑:对于接收时间间隔较大的数据是完全没有问题的,但是当下位机以很短的时间间隔快速发送数据时,这是上位机使用libusb接收数据就会出现丢包现象,对于较为严格的数据交互这是不允许存在的。
因为libusb是一个比较强大的库,所以出现这种情况我的第一反映是对libusb库的使用出了问题,肯定是有一些地方我没注意到,少写了哪一个步骤导致的。
紧接着我就开始在网上各种查找,结果一无所获,我有重新看了一遍libusb的API文档,结果还是一无所获。
网上查不到资料,我就自己调试程序,一遍遍的调试,扩大传输结构中的缓存大小、变化超时时间等方法都没有用。
最后我尝试着提交多个接收传输结构发现不丢包了,问题解决了。
一直以为接收缓存仅仅只是传输结构中的缓存,解决问题后才发现提交多个接收传输结构等待接收也属于多开缓存等待接收
int rc = 0;
for(int i = 0;i<100;i++)
{
libusb_transfer* transfer = libusb_alloc_transfer(0);
unsigned char *buf = new unsigned char[64];
memset(buf,0,64);
transfer->actual_length = 0;
libusb_fill_bulk_transfer(transfer,dHand,0x82,buf,64,&ca