我已经使用库UsbSerial在Arduino和android应用程序之间实现了连接。
Arduino零件
void loop() {
Serial.println("Hello world");
delay(1000);
}
Android Part 我将usbSerialDevice设置为这样
serialPort.setBaudRate(9600);
serialPort.setDataBits(UsbSerialInterface.DATA_BITS_8);
serialPort.setStopBits(UsbSerialInterface.STOP_BITS_1);
serialPort.setParity(UsbSerialInterface.PARITY_NONE);
serialPort.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
serialPort.read(this);
我的onReceivedData
就是这样
@Override
public void onReceivedData(byte[] bytes) {
try{
String string = new String(bytes, "UTF-8");
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}
}
连接正在工作,我能够从arduino接收数据。但是我没有收到完整的消息,而是收到了拆分消息。我发现here必须像这样
在onReceivedData内部实现一个缓冲区ProtocolBuffer buffer = new ProtocolBuffer(ProtocolBuffer.TEXT);
buffer.setDelimiter("\r\n");
buffer.appendData(arg0);
while(buffer.hasMoreCommands()){
String textCommand = buffer.nextTextCommand()
// Do your thing with textCommand
}
但是我无法理解如何使用它,因为protocolBuffer没有函数来检索最终完成的消息。我的问题是,有人在这方面有经验吗?还是没有人用分割信息解决问题?