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
(清除发送)
我有一个 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
(清除发送)