Я предполагаю, что вы используете Python 3 (рекомендуется указывать эту информацию в своем вопросе).
Кроме того, я предполагаю, что lines+=lines
является опечаткой, введенной при написании вопроса и вашей программы.использует lines+=line
.
Документы pySerial для read()
говорят, что он возвращает байты, поэтому вполне вероятно, что readline()
также возвращает байты.Когда вы делаете line.decode("utf-8")
, вы используете строку байтов, полученную с устройства, для создания текстовой строки.Затем вы пытаетесь добавить line
(тип str
) к lines
(введите bytes
, поскольку вы создали его с литералом байтовой строки b''
), и это вызывает ошибку.
Вы можете решить эту проблему:
- , создав
lines
в виде текстовой строки (lines = ''
) - без декодирования
line
перед добавлением его к lines
То, что вы выберете, вероятно, зависит от того, является ли информация, предоставленная устройством, на самом деле текстовой и гарантированно не сбоит на этапе декодирования, или она на самом деле является двоичной и ее нужно будет проанализировать позже впрограмма.