从arduino TX输出

时间:2016-07-30 02:19:46

标签: java serialization arduino uart ioio

我正在尝试让Arduino UNO通过UART向IOIO板(https://github.com/ytai/ioio/wiki/UART)发送值。当有人转动旋转编码器时,我希望它为CW发送0,为CCW发送1,为按下发送2。所有内容都从Arduino的Serial Monitor中检出,但我不知道如何读取这些值并正确地在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,同时通过Serial.println传递字符串,但是许多疯狂的字符从Java端获得输出(尝试使用UTF-8和ASCII编码)。

波特率匹配在9600,而我在IOIO上的5v RX引脚上,并且该引脚连接到Arduino Uno上的TX引脚(引脚1)。

有没有人指出一种简单的传输方式&收到一个整数?

0 个答案:

没有答案