Android usb 当数据可用时,Android usb主机输入传输无法随机读取

Android usb 当数据可用时,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)

下面的代码位于线程内部,读取通过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();
} 
//非工作代码
(跑步时){
int resp=散货转运(mInEp、mBuf、mBuf长度,1000);
如果(响应>0){
调度信息(mBuf);
}否则如果(resp0){
调度信息(mBuf);

}否则,如果(resp我正在记录关于这个问题的结果。毕竟,似乎UsbConnection.bulkTransfer(…)方法在连续调用时会出现一些错误。解决方法是使用异步API UsbRequest类。使用此方法,我可以毫不延迟地从输入端点读取数据,并且在整个压力测试过程中不会丢失任何数据。因此,采取的方向是异步UsbRequest,而不是同步传输

  //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){}
  }