我正在尝试使用python从我的计算机上与我的arduino进行通信。我有一个arduino在1
末尾发送一个setup()
串口,因为它是在建立串行连接时运行的。然后,在python中,我在向arduino发送任何内容之前先听取1
。
这是我的arduino代码:
int ledPin = 2;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
Serial.write(1); // Ready signal
digitalWrite(ledPin, HIGH); // For troubleshooting
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
}
void loop(){
}
我的python:
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
ser.read(1) # Arduino sends one byte when serial connection established
print("Serial connected")
ser.close()
我第一次连接时效果很好。我明白了:
$ python pyserialtest.py
Serial connected
但是第二次运行脚本时,没有任何反应。该脚本只是挂起。我认为这是因为串行连接是通过python或arduino缓存的,因此setup()
不运行。我试图通过在脚本末尾调用ser.close()
来尝试清除连接,但它仍然无法正常工作来解决此问题。
我的arduino是uno rev 3. Python版本2.7.6。
答案 0 :(得分:0)
请记住,Arduino setup
方法只运行一次。因此,第二次运行脚本时,您的脚本正在等待单字节串行确认,但它将永远等待,因为setup
方法已经运行并将该字节发送到脚本的第一个实例。如果此时重新启动Arduino,它将再次运行setup
,发送确认字节,然后您的脚本就会继续。