Разбор последовательного входа [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.

Кто-нибудь указывает на простой способ передачи и получения целого числа?

0 ответов

Другие вопросы по тегам