首页 文章

了解从Arduino收到的角色

提问于
浏览
4

我有一个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 回答

  • 4

    Python 3中的 b 前缀仅表示它是 bytes 文字 . 它's not part of the output, that'只是告诉你的类型 .

    \r\n 是常见的Carriage-Return和换行符行结尾字符 . 您可以通过调用 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)
    

    也可以看看:

  • 2

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

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

    会给你:

    '20.32'
    

相关问题