Мне нужно передать данные Arduino, сохраненные на microSD, в базу данных sqlite моего графического интерфейса. Кто-нибудь, кроме того, что может исправить эту ошибку, не могли бы вы помочь мне передать данные в базу данных?
lines=b''
with serial.Serial('COM5',9600,timeout=2) as ser:
line = ser.readline()
line = line.decode("utf-8")
lines+=line
Код, который вы разместили выше, не соответствует ошибке. Так должно быть
lines += line
и не lines += lines
line
в вашем коде — это объект str
, а lines
определяется как byte
.
Поэтому вы можете сделать это вместо этого:
lines += bytes(line, 'utf-8')
чтобы избавиться от ошибки.
Или вы могли бы просто не вызывать decode
в строке и сохранить его как байты.
Хорошо, это сработало. Разве вы не знаете, как передать данные arduino microSD в базу данных графического интерфейса?
Извините, я не знаком с тем, что вы подразумеваете под базой данных графического интерфейса. Если вы опубликуете некоторые подробности об этом в другом вопросе, возможно, я смогу помочь.
Я предполагаю, что вы используете Python 3 (рекомендуется указать эту информацию в своем вопросе).
Кроме того, я предполагаю, что lines+=lines
— это опечатка, допущенная при написании вопроса, и ваша программа использует lines+=line
.
Документы pySerial для read()
говорят, что он возвращает байты, поэтому вполне вероятно, что readline()
также возвращает байты. Когда вы делаете line.decode("utf-8")
, вы используете строку байтов, полученную от устройства, для создания текстовой строки. Затем вы пытаетесь добавить line
(тип str
) к lines
(тип bytes
, потому что вы создали его с литералом байтовой строки b''
), и это вызывает ошибку.
Вы должны быть в состоянии решить это либо:
lines
в виде текстовой строки (lines = ''
)line
перед добавлением в lines
Какой из них вы выберете, вероятно, зависит от того, является ли информация, предоставляемая устройством, на самом деле текстовой и гарантируется, что она не будет ошибочной на этапе декодирования, или она на самом деле двоичная и ее нужно будет проанализировать позже в программе.
Вам нужно опубликовать отдельный вопрос по проблеме с базой данных. В идеале один вопрос должен касаться одной проблемы.