Estou usando o raspberry pi para capturar os dados do GPS mas raramente acontece um erro ao decodificar os dados do GPS.
Esse é o log do programa:
13/12/2020 16:11 - ERROR - Erro no encode do GPS: Traceback (most recent call last):
File “/home/pi/programas/monitor_gps/servicos.py”, line 140, in executar
linha_rmc = linha_serial.decode(‘ascii’)
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x82 in position 0: ordinal not in range(128)
Meu codigo:
class Monitor_gps():
def __init__(self, gps):
self._gps = gps
self._serialPort = None
self._existe_dados = False
self._dados_gps = None
self._iniciar_serial()
def executar(self):
try:
linha_serial = self._serialPort.readline()
linha_rmc = linha_serial.decode('ascii')
#print('linha: '+linha_rmc)
gp = linha_rmc[0:6]
try:
if gp == '$GPRMC':
self._dados_gps = self._tratar_dados(linha_rmc)
#print('RMC: '+linha_rmc)
except IndexError:
tb = traceback.format_exc()
Log.info('Não a dados do GPS: '+tb)
except UnicodeDecodeError:
self._fechar_serial()
self._iniciar_serial()
tb = traceback.format_exc()
Log.info('Erro no encode do GPS: '+tb)
return self._dados_gps
def _iniciar_serial(self):
Log.info('_iniciar_serial')
self._serialPort = serial.Serial(self._gps.porta, self._gps.baud, timeout=self._gps.timeout)
def _fechar_serial(self):
Log.info('_fechar_serial')
self._serialPort.close()
self._serialPort = None
Como vocês podem ver no código eu tento reiniciar a porta serial mas isso não resolve.
Para o programa funcionar eu tenho que reiniciar o serviço.
Eu queria resolver isso automaticamente.