Arduino等待来自Python的串行数据

时间:2018-11-11 08:48:05

标签: python arduino

我是Arduino的新手,我正在尝试制作游戏。我正在使用Python将串行数据发送到Arduino。我想让Arduino等到它接收到来自Python的串行数据。

我的问题是:

  • 为什么Arduino程序不能使用Python的串行数据,却可以使用串行监视器的数据?
  • 如何使程序与Python中的数据一起使用? (请等到来自Python的串行数据,然后再保存数据。)

Arduino代码:

int select;
void setup() {
  Serial.begin(9600);
  Serial.flush();
  while(!Serial.available()){
  }
  if(Serial.available()>0){
    select=Serial.read();
  }
}
void loop() {
  Serial.println(select);
  delay(500);

}

Python代码:

import serial
ser=serial.Serial('COM4',9600)
ser.write(b'1235')
ser.close()
  

解决了我没有获取串行数据的问题,但是出现了一个新问题:

     

问题是,如果我获取了串行数据,我的Arduino程序将跳回到while(!Serial.available()){}循环,而不是void循环(){}。

2 个答案:

答案 0 :(得分:0)

ser=serial.Serial('COM4',9600)的新USB连接重置了Arduino。连接后立即发送的数据会丢失,因为Arduino会启动。

答案 1 :(得分:0)

就像Juraj所说的那样,重置Arduino时,您应该添加代码以等待它重新出现

import serial
ser=serial.Serial('COM4',9600)
sleep(.5)
if arduino.is_open == 1:
        print("open")
ser.write(b'1235')
ser.close()