我创建此代码的目的是从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
答案 0 :(得分:1)
在bytes对象上调用str
将返回包含引号和b前缀的字符串,例如:
>>> foo = b"hello"
>>> str(foo)
"b'hello'"
相反,请尝试使用decode
:
>>> foo.decode()
'hello'
因此,对于您的代码,该名称为mylcd.lcd_display_string("Weight" + data.decode(), 1)