NMEA0183 Empfangscode in entsprechendes Modul verlagert
This commit is contained in:
44
nmea0183.py
44
nmea0183.py
@@ -7,6 +7,50 @@ TODO Multi-Sentence verarbeiten
|
||||
AIS-Sentences mit Binärdaten
|
||||
"""
|
||||
|
||||
import serial
|
||||
from setproctitle import setthreadtitle
|
||||
|
||||
# Empfangsthread
|
||||
def rxd_0183(appdata, devname):
|
||||
# Prüfe ob NMEA0183-Port vorhanden ist und sich öffnen läßt
|
||||
try:
|
||||
ser = serial.Serial(devname, 115200, timeout=3)
|
||||
except serial.SerialException as e:
|
||||
print("NMEA0183 serial port not available")
|
||||
return
|
||||
setthreadtitle("0183listener")
|
||||
while not appdata.shutdown:
|
||||
raw = ser.readline().decode('ascii')
|
||||
if len(raw.strip()) == 0:
|
||||
continue
|
||||
try:
|
||||
msg = pynmea2.parse(raw)
|
||||
except pynmea2.nmea.ParseError:
|
||||
print(f"NMEA0183: Parse-Error: {raw}", end='')
|
||||
continue
|
||||
# sentence_type kann fehlen
|
||||
try:
|
||||
stype = msg.sentence_type
|
||||
except:
|
||||
print(f"NMEA0183: Sentence type missing: {raw}")
|
||||
continue
|
||||
# WIP Neuer Code aus Modul
|
||||
# TODO Filter mit gewünschen Satztypen
|
||||
# if stype in stypefilter:
|
||||
# continue
|
||||
if stype in decoder:
|
||||
decoder[stype](boatdata, msg)
|
||||
else:
|
||||
# Hier unbekannter Satztyp: protokollieren und ignorieren
|
||||
"""
|
||||
['checksum', 'data', 'fields', 'identifier', 'name_to_idx', 'parse',
|
||||
'proprietary_re', 'query_re', 'render', 'sentence_re',
|
||||
'sentence_type', 'sentence_types', 'talker', 'talker_re']
|
||||
"""
|
||||
print(f"Nicht implementiert: '{stype}' from {msg.talker}")
|
||||
|
||||
ser.close()
|
||||
|
||||
def DBS(boatdata, msg):
|
||||
# Wassertiefe unter der Oberfläche
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user