了解从Arduino收到的字符

Gaz*_*elu 5 python arduino pyserial

我有一个Arduino板通过串行端口发送数据,还有一条Python代码读取该数据。Arduino开发板只是发送它从TMP36传感器读取的温度,当我使用Arduino IDE随附的端口监视器检查端口时,我看到以下内容:

20.3
20.3
20.2
20.2
...
Run Code Online (Sandbox Code Playgroud)

这是完全正确的。现在,当我使用Python读取串行端口时,我得到以下信息:

b'20.32\r\n'
b'20.32\r\n'
b'20.32\r\n'
b'20.80\r\n'
...
Run Code Online (Sandbox Code Playgroud)

那件事是做什么的?如何处理字符串,以便正确显示数字?

这是我正在使用的代码:

import serial

ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
   message = ser.readline()
   print(message)
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*art 4

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

\r\n常见的回车符和换行符行结束符。您可以通过调用将其从字符串中删除strip()

由于这些是返回的浮点数,我猜您在读取它们后也会想以某种方式使用它们:

import serial

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

也可以看看: