我使用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。
感谢任何帮助