다음 코드를 사용하여 Arduino에서 Raspberry Pi로 보낸 4 자로 된 직렬 데이터를 읽으려고합니다.JAVA - 잘못된 데이터 수신 직렬 데이터
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가 보낸 데이터 대신이 shows이 표시됩니다.
Arduino가 적절한 데이터를 보내므로 문제가 Arduino에 있다고 생각하지 않습니다. 이 코드는 1 문자 데이터로 작동합니다. 이 코드가 무엇이라고 생각하십니까?
P. 첫 번째 실행에서 잘못된 문자가 출력 되더라도 코드는 루프에서 실행되면 작동합니다.
나는 UTF-8과 ISO-8858-1을 모두 사용했으며 둘 다 빈 출력을 출력했습니다. 이 문제를 어떻게 해결할 수 있는지 또는 어떻게 사용할 문자셋을 알 수 있습니까? 감사합니다 –
US-ASCII를 시도해보십시오. https://www.arduino.cc/en/Tutorial/SerialCallResponseASCII –
에서 US-ASCII를 시도했지만 출력이 여전히 비어 있습니다. 이게 내가 가진 문제를 해결하는 것은 아니지만, 처음에는 프로젝트의 시작 부분에서 코드를 실행하고 첫 번째 실행에만 잘못된 문자가 있기 때문에 출력을 무시했습니다. 다음 실행이나 코드 출력의 인스턴스는 모두 괜찮습니다. –