首页 > 解决方案 > 如何将 ser.readline.rstrip() 与 Python 中的简单单词或变量进行比较?

问题描述

我想用这个简单的 Python 脚本对串行输入做出反应:

import serial

ser = serial.Serial('COM7', baudrate=9600, timeout=1)

while True:
    data = ser.readline().rstrip()
    print(data)
    if (data == 'ON'):
        print("I received: ON")

我在我的电脑上运行这个脚本,Arduino 连接到 COM7。它的代码如下所示:

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.println("ON");
  delay(500);
}

cmd输出如下:

b'ON'
b'ON'
b'ON'
b'ON'

如您所见,串行通信正常,计算机接收数据,但如何检查某个字或某个数字?我的错误是什么?

先感谢您。

是的,我知道,那里有一个标题相同的问题,但它对我不起作用。

标签: python

解决方案


正如您从输出中看到的那样,您收到的数据是字节(注意b开头的)。

您必须将其解码为字符串:

data = data.decode('utf8')  # or any other encoding used by the data source

然后您可以将其与任何字符串进行比较。


推荐阅读