5

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

4

2 回答 2

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)

也可以看看:

于 2013-04-27T09:19:28.010 回答
2

您也可以同时使用decode()strip()

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

会给你:

'20.32'
于 2015-03-14T14:15:19.227 回答