android-usb - Android USB 主机输入批量传输在数据可用时无法随机读取

标签 android-usb

以下代码位于线程内,读取通过 USB 传入的输入数据。大约每 80 个读数就会丢失一个来自 stm32 板的数据包。该板被编程为每秒向 Android 平板电脑发送数据包。

// Non Working Code
while(running){
    int resp = bulktransfer(mInEp,mBuf,mBuf.lenght,1000);
    if(resp>0){
        dispatchMessage(mBuf);
    }else if(resp<0)
        showsBufferEmptyMessage();
} 

我正在互联网上的 android 和其他库中查找导弹发射器示例,他们在每次轮询之间设置了 50 毫秒的延迟。这样做可以解决丢失包的问题。

  //Working code
  while(running){
     int resp = bulktransfer(mInEp,mBuf,mBuf.lenght,1000);
     if(resp>0){
        dispatchMessage(mBuf);
    }else if(resp<0)
        showsBufferEmptyMessage();
   try{
       Thread.sleep(50);
   }catch(Exception e){}
  }

有谁知道延迟的原因。 github 上的大多数库都有这种延迟,正如我在 google 示例之前提到的那样。

最佳答案

我正在写下关于这个问题的结果。毕竟看起来 UsbConnection.bulkTransfer(...) 方法在连续调用时存在一些错误。解决方案是使用异步 API,UsbRequest 类。使用这种方法,我可以毫不延迟地从输入端点读取数据,并且在整个压力测试期间没有数据丢失。所以采取的方向是异步UsbRequest,而不是同步批量传输。

关于android-usb - Android USB 主机输入批量传输在数据可用时无法随机读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464531/

相关文章:

android - 重启后防止 USB_DEVICE_ATTACHED 启动应用程序

android - 如何从android中的USB OTG Pen Drive读取数据?

安卓内存不足

android - 为什么 UsbManager.getDevicesList() 无法枚举此特定设备?

Android usb 主机 api 和 USB 存储

android - 重新启动后保留 USB 权限而无需重新插入设备

java - 绕过 android-usb-主机-权限-确认-对话框

android - 如何通过 USB 在 Android 设备和 Windows 上运行的机器之间进行通信

android-usb - 通过 USB 安装无法正常工作 - 在 7.0 设备上

android - 无法将文件写入 USB 存储