arduino JAVA串行数据接收非法字符
我正在尝试使用以下代码读取从Arduino发送到Raspberry Pi的带有4个字符的串行数据
int serialPort = Serial.serialOpen("/dev/ttyACM0",9600);
if(serialPort==-1){
serialPort = Serial.serialOpen("/dev/ttyACM1",9600);
}
char[] charArray = {' ', ' ', ' ', ' '}; //Initializing char array
Serial.serialPuts(serialPort, 8 + "x"); //Sending Request Code to Arduino
int received = 0;
while(received == 0){ //Wait for input
for(int i = 0; i < 4; i++){
charArray[i] = (char)Serial.serialGetchar(serialPort);
received = 1;
}
}
String tempString = new String(charArray);
System.out.println(tempString);
但是,在读取“tempString”时,它显示了以下内容���� 而不是Arduino发送的数据
Arduino正在发送正确的数据,所以我认为问题不在Arduino。此代码使用1个字符的数据。你认为这些代码有什么问题
另外,如果代码在循环中执行,则可以工作,尽管第一次执行会输出非法字符
# 1 楼答案
由于字符集不兼容,可能会出现上述问题
如果您使用pi4j进行串行端口通信,则不推荐使用以下方法
我建议你使用
public static byte[] serialGetBytes(int fd,int length)
然后使用
我建议使用UTF8。您可以尝试多个适合您需要的字符集
[请随意编辑此答案,使其更有用]