NMEA0183 in eigenes Modul ausgelagert
This commit is contained in:
69
nmea0183.py
Normal file
69
nmea0183.py
Normal file
@@ -0,0 +1,69 @@
|
||||
"""
|
||||
NMEA0183 verarbeiten
|
||||
|
||||
"""
|
||||
|
||||
def DBS(boatdata, msg):
|
||||
# Wassertiefe unter der Oberfläche
|
||||
pass
|
||||
|
||||
def DBT(boatdata, msg):
|
||||
# Wassertiefe unter Geber
|
||||
pass
|
||||
|
||||
def GLL(boatdata, msg):
|
||||
print("-> GLL")
|
||||
boatdata.setValue("LAT", msg.latitude)
|
||||
boatdata.setValue("LON", msg.longitude)
|
||||
|
||||
def HDT(boatdata, msg):
|
||||
# Heading True
|
||||
print("-> HDT")
|
||||
print(msg.fields)
|
||||
|
||||
def MWV(boatdata, msg):
|
||||
# Windgeschwindigkeit und -winkel
|
||||
print(f"Wind: {msg.wind_angle}° {msg.wind_speed}kt")
|
||||
boatdata.setValue("AWA", msg.wind_angle)
|
||||
boatdata.setValue("AWS", msg.wind_speed)
|
||||
|
||||
def RSA(boatdata, msg):
|
||||
# Rudder Sensor Angle
|
||||
# negative Werte bedeuten Backbord
|
||||
# Boatdata: RPOS primär, PRPOS sekundär
|
||||
print("-> RSA")
|
||||
print(msg.fields)
|
||||
|
||||
def RTE(boatdata, msg):
|
||||
# Route
|
||||
print("-> RTE")
|
||||
print(msg.fields)
|
||||
|
||||
def VHW(boatdata, msg):
|
||||
boatdata.setValue("STW", float(msg.water_speed_knots))
|
||||
|
||||
def VTG(boatdata, msg):
|
||||
boatdata.setValue("COG", int(msg.true_track))
|
||||
#TODO klären was für Typen hier ankommen können
|
||||
# bytearray, str, decimal.Decimal?
|
||||
sog = float(msg.spd_over_grnd_kts)
|
||||
#str von OpenCPN: sog = float(msg.spd_over_grnd_kts[:-1])
|
||||
boatdata.setValue("SOG", sog)
|
||||
|
||||
def WPL(boatdata, msg):
|
||||
print("-> WPL")
|
||||
print(msg.fields)
|
||||
|
||||
# Aus Performancegründen eine direkte Sprungtabelle, ggf. können
|
||||
# zukünftig außer der Funktion noch weitere Daten gespeichert werdeb
|
||||
decoder = {
|
||||
"DBS": DBS,
|
||||
"DBT": DBT,
|
||||
"GLL": GLL,
|
||||
"MWV": MWV,
|
||||
"RSA": RSA,
|
||||
"RTE": RTE,
|
||||
"VHW": VHW,
|
||||
"VTG": VTG,
|
||||
"WPL": WPL
|
||||
}
|
||||
Reference in New Issue
Block a user