Когда я пытаюсь запустить этот код, он выдает ошибку:
line = line + device.readBuffer()
TypeError: can only concatenate list (not "bytes") to list
Я гуглил и обнаружил, что для python 3 нужно добавить b "" при попытке конвертировать байты в str. После изменения, как сказано, этот скрипт запускается в течение нескольких секунд, а затем вылетает, выдавая ту же ошибку.
код:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import serial
import re
import datetime
class EM408GPS:
def __init__(self, serialport, baudratespeed):
self.gpsdevice = serial.Serial(port=serialport, baudrate=baudratespeed, timeout=5)
self.init()
def init(self):
if self.isOpen():
return True
return False
def open(self):
self.gpsdevice.open()
def isOpen(self):
print("hey")
return self.gpsdevice.isOpen()
def readBuffer(self):
try:
data = self.gpsdevice.read(1)
n = self.gpsdevice.inWaiting()
if n:
data = data + self.gpsdevice.read(n)
return data
except Exception as e:
print("Big time read error, what happened: ", e)
sys.exit(1)
def main():
device = EM408GPS("COM9", 9600)
newdata = b""
line = b""
while device.isOpen():
if newdata:
line = newdata
newdata = b""
line = line + device.readBuffer()
if re.search(b"\r\n", line):
data = line.split(b"\r\n")
newdata = line.split(b"\r\n")
#data, newdata = line.split(b"\r\n")
print ("----" + str(datetime.datetime.now()) + "----")
print (data)
print (newdata)
line = b""
main()
Любая помощь будет оценена