Я реализовал соединение между Arduino и приложением для Android, используя библиотеку UsbSerial .
Часть Arduino
void loop() {
Serial.println("Hello world");
delay(1000);
}
Часть Android Я установил 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.Но вместо полного сообщения я получаю разделенное сообщение.Я обнаружил здесь , что мне нужно реализовать буфер внутри 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 не имеетФункция для получения окончательного завершенного сообщения.И мой вопрос: есть ли у кого-нибудь опыт в этой части?Или никто не как решить проблему с разделенной информацией?