我正在使用此示例在 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 的东西。
任何帮助表示赞赏