python - 理解从 Arduino 收到的字符

标签 python arduino pyserial

我有一 block Arduino 板通过串口发送数据,一段 Python 代码读取该数据。 Arduino 板只发送它从 TMP36 传感器读取的温度,当我使用 Arduino IDE 附带的端口监视器检查端口时,我看到了这个:

20.3
20.3
20.2
20.2
...

这是完全正确的。现在,当我使用 Python 读取串口时,我得到了这个:

b'20.32\r\n'
b'20.32\r\n'
b'20.32\r\n'
b'20.80\r\n'
...

那个 b' ' 东西是做什么的?我如何处理字符串才能正确显示数字?

这是我使用的代码:

import serial

ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
   message = ser.readline()
   print(message)

如果这是一个愚蠢的问题,我深表歉意,但我是 Arduino、Python 和串行编程的新手 :)

最佳答案

Python 3 中的 b 前缀仅表示它是一个 bytes 文字。它不是输出的一部分,它只是告诉您类型。

\r\n是常见的Carriage-Return和Newline行尾字符。您可以通过调用 strip() 将其从字符串中删除。

因为这些是返回的 float ,我猜你也会想在读取它们后以某种方式使用它们:

import serial

ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
   value = float(ser.readline().strip())
   print 'New value is {0:0.2f}'.format(value)

另见:

关于python - 理解从 Arduino 收到的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250358/

相关文章:

python - 混合多处理和串行端口

python3 发送串行数据到 Nextion Display

python - Django 教程 - 不正确配置异常(未安装 pytz)

python - 如何遍历字符串列表中的每个字符串并对其元素进行操作?

python - 使用 Scikit-learn 中的 Column Transformer 时如何找出 StandardScaling 参数 .mean_ 和 .scale_?

c - Arduino 数字更新引脚而不是写入?

c++ - 使用范围解析运算符传递函数指针arduino

python - 在运行时访问变量的 Python 3 类型注释

arduino - 从 Arduino 的 USB 端口发送串行数据

python - pyserial readline() : SerialException