シリアルポートを介してArduinoと通信しようとしているPython 3.2を使用しています。ドキュメントから、Arduino Serial.Read() が個々のバイトを読み取ることを理解しました。ただし、これを実装しようとすると、Serial.Read() は送信したすべての数値を読み取ります。これが私のPythonとArduinoのコードです
たとえば、Arduino に送信する値 412 があります。
パイソン:
xCoordint = 412
xCoordConverted = "%03d" % (xCoordint)
xCoord = [int(i) for i in str(xCoordConverted)]
xSingleDigit0 = chr(int(xCoord[0] + 48))
xSingleDigit1 = chr(int(xCoord[1] + 48))
xSingleDigit2 = chr(int(xCoord[2] + 48))
ser.write (bytes(xSingleDigit0, 'UTF-8'))
ser.write (bytes(xSingleDigit1, 'UTF-8'))
ser.write (bytes(xSingleDigit2, 'UTF-8'))
アルドゥイーノ:
char joinCharX[3] ;
int n_avail = Serial.available();
if(n_avail>0){
for (int i=0;i<3; i++){
joinCharX[i] = Serial.read();
}
int xCoords = atoi(joinCharX);
Serial.print(joinCharX[0]);
返されたときの joinCharX[0] は 4 ではなく 412 です。なぜそうなのか、一度に 1 バイトずつ読み取るように戻すにはどうすればよいのでしょうか。