Разбор последовательного входа [UART] на плате ioio с выхода TX Arduino
Я пытаюсь, чтобы Arduino UNO отправлял значения на доску IOIO ( https://github.com/ytai/ioio/wiki/UART) через UART. Когда кто-то поворачивает поворотный регулятор, я хочу, чтобы он отправил 0 для CW, 1 для CCW и 2 для печати. Все проверяется в Serial Monitor от Arduino, но я не знаю, как правильно читать значения и анализировать их на Java-конце. Все выглядит как случайные числа, иногда иногда правильное число.
Я попробовал оба этих метода на стороне Arduino:
Serial.write(1);
byte data[] = {1};
Serial.write(data, 1);
Также Serial.write автоматически записывает на контакт 1, поэтому нет необходимости создавать объект SoftwareSerial.
Читая это на стороне Java, я просто получаю в основном 255, иногда правильное число, а иногда и случайное число в диапазоне от 0 до 255:
@Override
public void connect() throws ConnectionLostException {
try{
// rx pin = 6
mUart = ioio_.openUart(RX_PIN, IOIO.INVALID_PIN, 9600, Parity.NONE, StopBits.ONE);
mInput = mUart.getInputStream();
}
catch(ConnectionLostException e){
Log.e(TAG, "connection lost:" + e.getMessage());
ioio_.disconnect();
throw e;
}
}
@Override
public void loop(int loopCount) throws ConnectionLostException {
try{
byte[] response = new byte[1];
int read = mInput.read();
}catch(IOException e){
Log.d(TAG, "error: " + e.getMessage());
}
}
Я также пытался использовать BufferedReaders, передавая Strings через Serial.println, но многие сумасшедшие символы получали вывод со стороны Java (пробовал кодировать как в UTF-8, так и в ASCII).
Скорости в бодах соответствуют 9600, и я на выводе 5В RX на IOIO, и этот вывод подключен к выводу TX (вывод 1) на Arduino Uno.
Кто-нибудь указывает на простой способ передачи и получения целого числа?