Serial port 使arduino仅在发出信号时写入(串行)

Serial port 使arduino仅在发出信号时写入(串行),serial-port,arduino,raspberry-pi,Serial Port,Arduino,Raspberry Pi,我试图用USB串行在树莓Pi和Arduino之间通信,但我只希望Arduino在RPI发送信号时写入 我的arduino代码如下: int sensorPin = A0; int sensorValue = 0; void setup(){ Serial.begin(9600); } void loop(){ sensorValue = analogRead(sensorPin); if (Serial.available() > 0) { Serial.rea

我试图用USB串行在树莓Pi和Arduino之间通信,但我只希望Arduino在RPI发送信号时写入

我的arduino代码如下:

int sensorPin = A0;  
int sensorValue = 0;

void setup(){
  Serial.begin(9600);
}

void loop(){
  sensorValue = analogRead(sensorPin);
  if (Serial.available() > 0) {
    Serial.read();
    Serial.println(sensorValue,DEC);
    Serial.flush();
  }    
}
一旦我从RPI进行了一次呼叫:

serial.write('hey')

阿杜伊诺反复写道。我原以为Serial.available大部分时间都会返回0,因为读操作会清除缓冲区,但它似乎永远不会被清除。我原以为flush()可以做到,但实际上没有任何效果。

真奇怪
Serial.read()

注意:请记住,
Serial.read()
一次只能读取一个字节,这可能是您的问题,因为您正在从Raspberry Pi发送
'hey'
,这将需要3次循环才能完全清空缓冲区

如果不是这个问题,您可以尝试在每次有东西到达时调用该函数

您的代码如下所示:

int sensorPin = A0;  
int sensorValue = 0;

void setup(){
    Serial.begin(9600);
}

void loop(){
     //Any other logic here   
}

void serialEvent() {
    sensorValue = analogRead(sensorPin);
    Serial.read();
    Serial.println(sensorValue,DEC);
}

通过使用
serialEvent()
事件,您的
循环看起来更干净。那总是很好。

那很奇怪
Serial.read()

注意:请记住,
Serial.read()
一次只能读取一个字节,这可能是您的问题,因为您正在从Raspberry Pi发送
'hey'
,这将需要3次循环才能完全清空缓冲区

如果不是这个问题,您可以尝试在每次有东西到达时调用该函数

您的代码如下所示:

int sensorPin = A0;  
int sensorValue = 0;

void setup(){
    Serial.begin(9600);
}

void loop(){
     //Any other logic here   
}

void serialEvent() {
    sensorValue = analogRead(sensorPin);
    Serial.read();
    Serial.println(sensorValue,DEC);
}

通过使用
serialEvent()
事件,您的
循环看起来更干净。那总是很好。

那很奇怪
Serial.read()

注意:请记住,
Serial.read()
一次只能读取一个字节,这可能是您的问题,因为您正在从Raspberry Pi发送
'hey'
,这将需要3次循环才能完全清空缓冲区

如果不是这个问题,您可以尝试在每次有东西到达时调用该函数

您的代码如下所示:

int sensorPin = A0;  
int sensorValue = 0;

void setup(){
    Serial.begin(9600);
}

void loop(){
     //Any other logic here   
}

void serialEvent() {
    sensorValue = analogRead(sensorPin);
    Serial.read();
    Serial.println(sensorValue,DEC);
}

通过使用
serialEvent()
事件,您的
循环看起来更干净。那总是很好。

那很奇怪
Serial.read()

注意:请记住,
Serial.read()
一次只能读取一个字节,这可能是您的问题,因为您正在从Raspberry Pi发送
'hey'
,这将需要3次循环才能完全清空缓冲区

如果不是这个问题,您可以尝试在每次有东西到达时调用该函数

您的代码如下所示:

int sensorPin = A0;  
int sensorValue = 0;

void setup(){
    Serial.begin(9600);
}

void loop(){
     //Any other logic here   
}

void serialEvent() {
    sensorValue = analogRead(sensorPin);
    Serial.read();
    Serial.println(sensorValue,DEC);
}

通过使用
serialEvent()
事件,您的
循环看起来更干净。那总是很好。

离题。这看起来很有趣,你最终想做什么arduino爱好者,离题。这看起来很有趣,你最终想做什么arduino爱好者,离题。这看起来很有趣,你最终想做什么arduino爱好者,离题。这看起来很有趣,你最终想做什么arduino爱好者。是的,每一条RPI信息都会发送3条信息。谢谢是的,它每发送一条RPI消息就发送3条消息。谢谢是的,它每发送一条RPI消息就发送3条消息。谢谢是的,它每发送一条RPI消息就发送3条消息。谢谢