libusb批量传输丢失数据包

时间:2019-07-04 09:35:31

标签: c++ c libusb

我需要从通过USB端口发出某种数据流的控制器中检索数据。

我正在尝试使用libusb同步批量传输检索此类数据。 我们最多可以得到1.64亿字节的数据。

数据以几个“块/批”数据发出。 例如,假设控制器一次发射一个数据块。

我要做的是接近:

bool finished = false;
unsigned char *data = malloc(maxSize);

while(!finished) {
     int transferSize = 0;
     int result = libusb_bulk_transfer(handle,
                                       LIBUSB_ENDPOINT_IN  | 1,
                                       data + alreadyRead,
                                       32768,
                                       &transferSize, 1000);
     // if we finish to read
     if(alreadyRead > 0 && result == LIBUSB_ERROR_TIMEOUT)
         finished = true;
     alreadyRead += transferSize;
}

当CPU空闲时,一切正常。但是,使用cpu时(正在运行的其他许多线程),我会丢失一些块。就像在一个libusb_bulk_transfer的结尾和同一函数的开头之间,已经发送了一些块并消失了。

有没有一种方法可以“缓冲”批量传输? 异步传输可以解决问题吗? 谢谢!

0 个答案:

没有答案