了解从Arduino收到的角色

时间:2013-04-27 09:16:52

标签: python arduino pyserial

我有一个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和连续编程的新手:)

2 个答案:

答案 0 :(得分: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)

另见:

答案 1 :(得分:2)

您也可以一次使用decode()strip()

b'20.32\r\n'.decode().strip('\r\n')

会给你:

'20.32'