python - 如何将 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'
如您所见,串行通信正常,计算机接收数据,但如何检查某个字或某个数字?我的错误是什么?
先感谢您。
是的,我知道,那里有一个标题相同的问题,但它对我不起作用。
解决方案
正如您从输出中看到的那样,您收到的数据是字节(注意b
开头的)。
您必须将其解码为字符串:
data = data.decode('utf8') # or any other encoding used by the data source
然后您可以将其与任何字符串进行比较。
推荐阅读
- javascript - Javascript RegExp 验证字符串是否以 html 开放标签 + 除标签外的任何内容结束
- c - 多次使用 fgets 的问题
- python - sqrt() c++ 和 math.sqrt() python
- powerbi - 按另一列计数的 PowerBI 百分比
- python - 从包含带有嵌套字典的元组的python列表创建一个熊猫数据框
- image - ImageResize 旋转上传的照片
- r - R 警告消息中的调查包
- python - 使用 Flask lib 运行 python 但返回“未找到”页面
- python - 排序算法以保持双标题背靠背
- jpa - Query Dsl 是否支持 jpa 投影?