- fixed parsing

- added RMC
This commit is contained in:
2026-03-15 21:08:19 +01:00
parent d4fa77aaa0
commit f04a6655a4
5 changed files with 50 additions and 5 deletions
+4 -2
View File
@@ -10,6 +10,7 @@ from nmea.GLL import Gll
from nmea.GSA import Gsa
from nmea.GSV import Gsv
from nmea.GGA import Gga
from nmea.RMC import Rmc
class NetworkBackend(ABackend):
def __init__(self, servers: list[dict]):
@@ -92,10 +93,11 @@ if __name__ == "__main__":
mc = NetworkBackend(server_list)
for grm in [" neo-f9p", "zed-x20p"]:
rx_list = [
Gll(grm, 'GP'),
Gsa(grm, 'GP'),
Gll(grm, 'GN'),
Gsa(grm, 'GN'),
Gsv(grm, 'GP'),
Gga(grm, 'GP'),
Rmc(grm, 'GN'),
Gga(grm, 'GN')
]
# Topology
+3 -1
View File
@@ -11,6 +11,7 @@ class Gll(Nmea):
self.ew_indicator = None
self.utc_time = None
self.status = None
self.mode = None
self.checksum = None
def __repr__(self):
@@ -31,6 +32,7 @@ class Gll(Nmea):
self.data.ew_indicator = data_list[4]
self.data.utc_time = data_list[5]
self.data.status = data_list[6]
self.data.checksum = data_list[7]
self.data.mode = data_list[7].split('*')[0]
self.data.checksum = data_list[7].split('*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+3 -1
View File
@@ -11,6 +11,7 @@ class Gsa(Nmea):
self.p_dop = None
self.h_dop = None
self.v_dop = None
self.signal_id = None
self.checksum = None
def __repr__(self):
@@ -31,6 +32,7 @@ class Gsa(Nmea):
self.data.p_dop = float(data_list[15])
self.data.h_dop = float(data_list[16])
self.data.v_dop = float(data_list[17])
self.data.checksum = data_list[18]
self.data.signal_id = data_list[18].split('*')[0]
self.data.checksum = data_list[18].split('*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+3 -1
View File
@@ -12,6 +12,7 @@ class Gsv(Nmea):
self.elevation = []
self.azimuth = []
self.snr = []
self.signal_id = None
self.checksum = None
def __repr__(self):
@@ -40,7 +41,8 @@ class Gsv(Nmea):
data.azimuth.append(data_list[data_set_size*n+6])
data.snr.append(data_list[data_set_size*n+7])
data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8]
data.signal_id = data_list[data_set_size*(num_sats_in_msg-1)+8].split('*')[0]
data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8].split('*')[1]
if self.data.number_of_msg == self.data.seq_number:
self.data = Gsv.Msg()
+37
View File
@@ -0,0 +1,37 @@
from msg_container import MsgContainer
from nmea.receiver import Nmea
class Rmc(Nmea):
class Msg:
def __init__(self):
pass
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="RMC")
self.msg = None
self.data = Rmc.Msg()
def on_recv(self, msg: MsgContainer):
data = msg.data.decode(encoding="utf-8")
data_list = data.split(',')
self.msg = data_list[0]
self.data.utc_time = data_list[1]
self.data.status = data_list[2]
self.data.latitude = float(data_list[3])/100
self.data.ns_indicator = data_list[4]
self.data.longitude = float(data_list[5])/100
self.data.ew_indicator = data_list[6]
self.data.speed = data_list[7]
self.data.course = data_list[8]
self.data.date = data_list[9]
self.data.mag_var = data_list[10]
self.data.mag_var_ew = data_list[11]
self.data.mode = data_list[12]
self.data.nav_status = data_list[13].split("*")[0]
self.data.checksum = data_list[13].split("*")[1]
print(f"{self.name}:{self.msg} {self.data}")