Python Arduino 串行写入不同于 Arduino 串行监视器串行写入

Python Serial Writes to Arduino is different from Arduino's Serial Monitor's Serial Writes

我有一个 Python 脚本,可以将字符串 test 写入 Arduino 串口。如果 arduino 收到 test 字符串,它应该用字符串 ok 回复并且 LED 13 应该点亮..

问题: 当使用 Arduino 串口监视器将 test 写入串口时,Arduino 按预期回复 ok 并且 LED #13亮起。

然而,当Python 脚本将test 写入同一个串行端口时,没有任何反应。 Arduino 不回复串行端口并且 LED #13 不亮。

关于如何修复 Python 脚本以使 Arduino 的 ok 响应和 LED 13 点亮有什么想法吗?

Arduino 草图

int ledPin = 13;


void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}


void loop() {

    while(Serial.available() == 0) { }
    
    if(Serial.readString() == "test\r\n") {
      Serial.print("ok\r\n");
      digitalWrite(ledPin, HIGH);
    } 
    
    readString = ""; // Clear recieved buffer
    delay(100);
}

Python 脚本

port = 'COM5'
ser = serial.Serial(
    port=port,
    baudrate=9600,
    timeout=5
)

serial.write("test\r\n")

response = serial.readline()
print response
port = 'COM5'
ser = serial.Serial(
    port=port,
    baudrate=9600,
    timeout=5
)

# you need to sleep after opening the port for a few seconds
time.sleep(5) # arduino takes a few seconds to be ready ...

#also you should write to your instance
ser.write("test\r\n")
# and give arduino time to respond
time.sleep(0.5)
response = self.serial.readline()
print response

如果您不想等待固定的秒数,您可能需要等待 ser.cts(清除发送)