Erste funktionsfähige Tracker-Version

This commit is contained in:
2025-09-15 19:33:33 +02:00
parent ebb7b42d48
commit eb41bdafa4
6 changed files with 291 additions and 92 deletions

View File

@@ -9,9 +9,10 @@ TODO Multi-Sentence verarbeiten
import serial
from setproctitle import setthreadtitle
import pynmea2
# Empfangsthread
def rxd_0183(appdata, devname):
def rxd_0183(appdata,boatdata, devname):
# Prüfe ob NMEA0183-Port vorhanden ist und sich öffnen läßt
try:
ser = serial.Serial(devname, 115200, timeout=3)
@@ -351,28 +352,28 @@ def VPW(boatdata, msg):
def VTG(boatdata, msg):
# Track made good and speed over ground
"""
(('True Track made good', 'true_track', <class 'float'>),
('True Track made good symbol', 'true_track_sym'),
('Magnetic Track made good', 'mag_track', <class 'decimal.Decimal'>),
('Magnetic Track symbol', 'mag_track_sym'),
('Speed over ground knots', 'spd_over_grnd_kts', <class 'decimal.Decimal'>),
('Speed over ground symbol', 'spd_over_grnd_kts_sym'),
('Speed over ground kmph', 'spd_over_grnd_kmph', <class 'float'>),
('Speed over ground kmph symbol', 'spd_over_grnd_kmph_sym'),
('FAA mode indicator', 'faa_mode'))
['', 'T', '', 'M', '0.117', 'N', '0.216', 'K', 'A']
(('True Track made good', 'true_track', <class 'float'>),
('True Track made good symbol', 'true_track_sym'),
('Magnetic Track made good', 'mag_track', <class 'decimal.Decimal'>),
('Magnetic Track symbol', 'mag_track_sym'),
('Speed over ground knots', 'spd_over_grnd_kts', <class 'decimal.Decimal'>),
('Speed over ground symbol', 'spd_over_grnd_kts_sym'),
('Speed over ground kmph', 'spd_over_grnd_kmph', <class 'float'>),
('Speed over ground kmph symbol', 'spd_over_grnd_kmph_sym'),
('FAA mode indicator', 'faa_mode'))
['', 'T', '', 'M', '0.117', 'N', '0.216', 'K', 'A']
$IIVTG,312.000000,T,,M,2.000000,N,3.704000,K,A*28
"""
#print("-> VTG")
# msg.true_track true_track_sym
# msg.mag_track mag_track_sym
# msg.faa_mode
if msg.faa_mode != 'A':
return
#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)
#print("VTG", msg.spd_over_grnd_kts)
print("VTG", msg)
#Ggf. ist OpenCPN buggy!
cog = float(msg.true_track) # in Grad
sog = float(msg.spd_over_grnd_kts) # in Knoten
boatdata.setValue("COG", cog)
boatdata.setValue("SOG", sog)
def VWR(boatdata, msg):
# Relative Wind Speed and Angle