NMEA0183 Empfangscode in entsprechendes Modul verlagert
This commit is contained in:
45
obp60v.py
45
obp60v.py
@@ -108,8 +108,8 @@ import struct
|
||||
import uuid
|
||||
import json
|
||||
|
||||
import nmea0183
|
||||
from appdata import AppData
|
||||
import nmea0183
|
||||
import pages
|
||||
|
||||
__author__ = "Thomas Hooge"
|
||||
@@ -118,6 +118,7 @@ __version__ = "0.2"
|
||||
__email__ = "thomas@hoogi.de"
|
||||
__status__ = "Development"
|
||||
|
||||
# Standardkonfiguration, kann durch Konfigdatei überschrieben werden
|
||||
cfg = {
|
||||
'cfgfile': 'obp60v.conf',
|
||||
'logdir': '~/.local/share/obp60v',
|
||||
@@ -205,46 +206,6 @@ def rxd_n2k(device):
|
||||
pass
|
||||
bus.shutdown()
|
||||
|
||||
def rxd_0183(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 nmea0183.decoder:
|
||||
nmea0183.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 rxd_gps(devname, devspeed):
|
||||
# Prüfe ob GPS-Port vorhanden ist und sich öffnen läßt
|
||||
try:
|
||||
@@ -789,7 +750,7 @@ if __name__ == "__main__":
|
||||
t_rxd_n2k.start()
|
||||
if cfg['nmea0183']:
|
||||
print("NMEA0183 enabled, library version {}".format(pynmea2.version))
|
||||
t_rxd_0183 = threading.Thread(target=rxd_0183, args=(cfg['0183_port'],))
|
||||
t_rxd_0183 = threading.Thread(target=nmea0183.rxd_0183, args=(appdata,cfg['0183_port'],))
|
||||
t_rxd_0183.start()
|
||||
if cfg['gps']:
|
||||
print("GPS enabled (local)")
|
||||
|
||||
Reference in New Issue
Block a user