理解阿杜因的角色

2024-06-06 15:35:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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'
...

那玩意儿是干什么的?如何处理字符串以便正确显示数字?

这是我使用的代码:

import serial

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

抱歉,如果这是个愚蠢的问题,但我对Arduino、Python和串行编程还不熟悉:)


Tags: 端口代码messageserial传感器读取数据温度ide
2条回答

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)

另见:

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

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

会给你:

'20.32'

相关问题 更多 >