Python串行写入不';第一次不工作
我有两个程序来测试串行通信,一个简单的arduino程序回显串行端口上的任何内容,一个python程序写入串行端口并打印回复 我遇到了一个问题,每当我上传arduino程序并在上传后第一次尝试运行python时,它都会被困在Python串行写入不';第一次不工作,python,arduino,serial-port,Python,Arduino,Serial Port,我有两个程序来测试串行通信,一个简单的arduino程序回显串行端口上的任何内容,一个python程序写入串行端口并打印回复 我遇到了一个问题,每当我上传arduino程序并在上传后第一次尝试运行python时,它都会被困在print ser.readline()上,我假设这意味着由于某种原因python没有写入串行端口。我将不得不退出python程序并再次运行它,以获得arduino的回复。该程序将继续工作,直到我重新上传arduino,然后python再次无法在第一次运行时工作。此外,如果在
print ser.readline()
上,我假设这意味着由于某种原因python没有写入串行端口。我将不得不退出python程序并再次运行它,以获得arduino的回复。该程序将继续工作,直到我重新上传arduino,然后python再次无法在第一次运行时工作。此外,如果在运行python程序之前打开和关闭串行监视器,它将在第一次运行时工作。有人知道问题出在哪里吗?这是在Ubuntu上
阿杜伊诺
String str;
void setup() {
// Turn the Serial Protocol ON
Serial.begin(115200);
}
void loop() {
if (Serial.available()) {
str = Serial.readStringUntil('\n'); // Read the serial input
Serial.println(str); // sends ascii code
}
}
蟒蛇
import serial
ser = serial.Serial('/dev/ttyACM1', 115200)
for i in range(0,4):
str = "test string\n"
ser.write(str)
print ser.readline()
默认情况下,python Serial可能会被阻止。请尝试删除超时:
ser = serial.Serial('/dev/ttyACM1', 115200,timeout=0)
另外,请看一看我添加的
time.sleep(1)
ser.setDTR(level=0)
time.sleep(1)
打开串行端口后,问题得到修复。该问题可能与新串行连接时许多Arduinos重置有关
解决方案是在创建串行连接和发送第一个数据之间向python程序添加延迟(大约2秒有效),或者修改硬件以防止串行连接重置。当python程序“不工作”时会出现什么错误?通常,在将新软件上载到Arduino之后,您必须等待几秒钟,然后才能尝试连接到它。