Сплит информация на андроиде получает данные от Arduino - PullRequest
0 голосов
/ 10 февраля 2019

Я реализовал соединение между 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 не имеетФункция для получения окончательного завершенного сообщения.И мой вопрос: есть ли у кого-нибудь опыт в этой части?Или никто не как решить проблему с разделенной информацией?

...