我有一个简单的声纳arduino项目,每秒打印距离。我使用UsbSerial实现了一个Android应用程序来与我的arduino通信。到目前为止,一切都很好,我能够接收数据并且接收到的数据是正确的,但问题在于有时候值没有正确发送。以下是我收到的样本输出:
data: 7
data: 1
data:
data: 71
以下是生成输出的代码:
private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() {
@Override
public void onReceivedData(byte[] arg0)
{
try {
String data = new String(arg0, "UTF-8");
System.out.println("data: " + data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
依我之见,这里有两个问题:
- 第一行和第二行必须合并为一行,值为
71
- 第三行不应存在,因为我的应用程序正在监听
onReceivedData
,而arduino总是发送一些内容。
非常感谢您的帮助。
\n
作为匹配输入的分隔符,因为你现在做事情的方式会导致printData()
方法在收到新输入之前不会被调用,也就是说最后一块数据没有被打印出来。另外,如果bufferSize
超过了buffer
的大小会发生什么? - Patrick Trentin