1

我正在使用此示例在 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();
        }
    }
};

和阿杜诺:

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

例子:

发送到arduino: 测试

从 arduino 收到: TEST

然而实际上它更像这样

发送到arduino: 测试

从arduino收到: TE ST

所以接收到的“TEST”将以一两个字节的形式出现,然后需要将它们收集到一个字符串中。

我认为这是由于传入字节的速率/速度,因此它会在获取数据后立即输出。

我想确保在输出之前接收到所有传入数据,以便我可以处理传入数据。

理论上需要类似while(serial.available())... for android 的东西。

任何帮助表示赞赏

4

0 回答 0