我成功地遵循了这个网站上的说明:
http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
并且我能够完全按照网站指定的方式在 pi 和我的 arudino mega 之间进行通信。
但是,我不想发送一个表示 LED 闪烁次数的整数,而是想发送如下 ASCII 文本:
“向前移动 5 米”、“向左转”、“向后移动 10 米”从 pi 到 arduino。
我写了以下代码:
char inData[64];
char inChar=-1;
void setup(){
Serial.begin(9600);
Serial.begin("Waiting for Raspberry Pi to send a signal...\n");
}
void loop(){
byte numBytesAvailable= Serial.available();
// if there is something to read
if (numBytesAvailable > 0){
// store everything into "inData"
int i;
for (i=0;i<numBytesAvailable;i++){
inChar= Serial.read();
inData[i] = inChar;
}
inData[i] = '\0';
Serial.print("Arduino Received: ");
Serial.println(inData);
}
}
我成功地将上面的代码闪到了我的 Arduino Mega 2560。
我切换到 Raspberry Pi 上的 python 终端并在控制台中输入:
import serial
ser = serial.Serial('/dev/ttyACM1',9600)
ser.write("MOVE")
我的 Arduino 串行监视器上显示的内容如下:
Arduino Received: M
Arduino Received: O
Arduino Received: V
Arduino Received: E
但我想要的是:
Arduino Received: MOVE
如何更改上面的代码以将所有字符放入 inData 缓冲区?