在打印输出上显示“b”的LCD

2024-07-05 12:04:42 发布

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

我创建这段代码是为了从ttyUSB0上的串行设备读取数据,然后将其打印在连接到pi的LCD显示器上。我让它在一定程度上工作,但在我的LCD显示器上,它正在打印字节符号“b”,然后是我的读数。它们是一种忽略“b”的方式吗

我的代码:

import time
import serial
import I2C_LCD_driver


mylcd = I2C_LCD_driver.lcd()

print ("Starting Program")
ser = serial.Serial("/dev/ttyUSB0", baudrate=9600,
                    parity=serial.PARITY_NONE,
                    stopbits=serial.STOPBITS_ONE,
                    bytesize=serial.EIGHTBITS
                    )
time.sleep(1)
try:
    ser.write("12345".encode('utf-8'))
    print ("data echo mode enabled")
    while True:
        if ser.inWaiting() > 0:
            data = ser.read(size=7)
            print ("Weight", data, "kg")
            mylcd.lcd_display_string("Weight" + str(data), 1)


except KeyboardInterrupt:
    print ("Exiting Program")

except:
    print ("Error Occurs, Exiting Program")

finally:
    ser.close()
    pass

Tags: 代码importdatalcdtimedriverseriali2c
1条回答
网友
1楼 · 发布于 2024-07-05 12:04:42

对字节对象调用str将返回一个包含引号和b前缀的字符串,例如:

>>> foo = b"hello"
>>> str(foo)
"b'hello'"

相反,请尝试使用decode

>>> foo.decode()
'hello'

因此,对于您的代码,这将是mylcd.lcd_display_string("Weight" + data.decode(), 1)

相关问题 更多 >