以下代码位于线程内,并读取来自 USB 的输入数据。大约每 80 个读数它就会丢失一个来自 stm32 板的数据包。该板被编程为每隔一秒向安卓平板电脑发送数据包。
// Non Working Code
while(running){
int resp = bulktransfer(mInEp,mBuf,mBuf.lenght,1000);
if(resp>0){
dispatchMessage(mBuf);
}else if(resp<0)
showsBufferEmptyMessage();
}
我正在寻找 android 和 Internet 上的其他库中的 Missile Launcher 示例,他们在每次轮询之间设置了 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 上的大多数库都有这种延迟。