序列化android USB incomming数据

时间:2016-05-26 14:02:19

标签: android arduino android-usb

我使用this example在arduino和android之间进行通信,效果很好。

问题是我会在输出之前确保已收到所有数据。 因为它现在是android只会在收到它时输出所有内容。 我需要收集收到的任何内容,以便我可以将它与另一个字符串进行比较。

目前它的工作原理如下

UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
    @Override
    public void onReceivedData(byte[] arg0) {
        String data = null;
        try {
            data = new String(arg0, "UTF-8");
            data.concat("/n");
            tvAppend(textView, data);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
};

和arduino:

void setup()  
 {  
  Serial.begin(9600);       
 }  
 void loop()  
 {  
  char c;
  if(Serial.available())  
  {  
   c = Serial.read();  
   Serial.print(c);    
   }
 }  

示例:

  

发送给arduino:   的 TEST

     

从arduino收到:   的 TEST

但实际上它更像是

  

发送给arduino:   的 TEST

     

从arduino收到:    T E ST

因此收到的“TEST”将以一个或两个字节的形式出现,然后需要将其收集到一个字符串中。 我假设这样做的原因是由于输入字节的速率/速度,所以只要它获得数据就会输出它。

所以我想做的是确保在输出之前收到所有的数据,这样我就可以处理这些数据了。 理论上需要像 while(serial.available())... for android。

感谢任何帮助

0 个答案:

没有答案