我试图通过UART将Arduino UNO值发送到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传递Strings,但是很多疯狂的角色从Java端获得输出(尝试使用UTF-8和ASCII编码) .
波特率匹配为9600,我在IOIO上的5v RX引脚上,该引脚连接到Arduino Uno上的TX引脚(引脚1) .
有没有人指出一种传输和接收整数的简单方法?