我需要将保存在microSD上的arduino数据传递到GUI的sqlite数据库。除了能够解决此错误的人之外,您还能帮助我将数据传递到数据库吗?
lines=b''
with serial.Serial('COM5',9600,timeout=2) as ser:
line = ser.readline()
line = line.decode("utf-8")
lines+=line
答案 0 :(得分:1)
您上面发布的代码与错误不符。应该是
lines += line
而不是lines += lines
line
是str
对象,并且lines
被定义为byte
。
因此,您可以执行以下操作:
lines += bytes(line, 'utf-8')
摆脱错误。
或者您不能只在线调用decode
并将其保留为字节。
答案 1 :(得分:1)
我假设您使用的是Python 3(在您的问题中指定此信息是一种很好的做法)。
我还假定lines+=lines
是写问题时引入的错字,而您的程序使用lines+=line
。
read()
的pySerial文档说它返回字节,所以readline()
也可能返回字节。当您执行line.decode("utf-8")
时,您将使用从设备获取的字节字符串来创建文本字符串。然后,您尝试将line
(类型str
)追加到lines
(类型bytes
,因为您使用字节串文字b''
创建了它)导致错误。
您应该可以通过以下方式解决此问题:
lines
创建为文本字符串(lines = ''
)line
附加到lines
之前不对其进行解码选择哪种信息可能取决于设备提供的信息是否实际上是文本信息,并保证在解码步骤不会失败,或者它实际上是二进制信息,是否需要稍后在程序中进行解析。