From d044e35901789723b6a04024a4009334c3d5a971 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 16 Mar 2026 07:51:00 +0100 Subject: [PATCH] parse bytes instead of strings --- msg_receiver.py | 3 +-- nmea/GGA.py | 8 +++----- nmea/GLL.py | 7 +++---- nmea/GSA.py | 7 +++---- nmea/GSV.py | 7 +++---- nmea/RMC.py | 7 +++---- 6 files changed, 16 insertions(+), 23 deletions(-) diff --git a/msg_receiver.py b/msg_receiver.py index 82cef43..d93140a 100644 --- a/msg_receiver.py +++ b/msg_receiver.py @@ -11,8 +11,7 @@ class MsgReceiver(MsgSink): def is_msg(self, msg: MsgContainer): res = False try: - data = msg.data.decode(encoding="utf-8") - res = re.match(self.filter, data) is not None + res = re.match(bytes(self.filter, encoding="utf-8"), msg.data) is not None except UnicodeDecodeError: pass return res diff --git a/nmea/GGA.py b/nmea/GGA.py index 7b6074a..1132d11 100644 --- a/nmea/GGA.py +++ b/nmea/GGA.py @@ -29,9 +29,7 @@ class Gga(Nmea): self.data = Gga.Msg() def on_recv(self, msg: MsgContainer): - data = msg.data.decode(encoding="utf-8") - data_list = data.split(',') - + data_list = msg.data.split(b',') self.msg = data_list[0] self.data.utc_time = data_list[1] self.data.latitude = data_list[2] @@ -46,7 +44,7 @@ class Gga(Nmea): self.data.geoid_separation = data_list[11] self.data.geoid_separation_unit = data_list[12] self.data.diff_age = data_list[13] - self.data.ref_id = data_list[14].split('*')[0] - self.data.checksum = data_list[14].split('*')[1] + self.data.ref_id = data_list[14].split(b'*')[0] + self.data.checksum = data_list[14].split(b'*')[1] print(f"{self.name}:{self.msg} {self.data}") diff --git a/nmea/GLL.py b/nmea/GLL.py index 85973da..feb2234 100644 --- a/nmea/GLL.py +++ b/nmea/GLL.py @@ -23,8 +23,7 @@ class Gll(Nmea): self.data = Gll.Msg() def on_recv(self, msg: MsgContainer): - data = msg.data.decode(encoding="utf-8") - data_list = data.split(',') + data_list = msg.data.split(b',') self.msg = data_list[0] self.data.latitude = float(data_list[1])/100 self.data.ns_indicator = data_list[2] @@ -32,7 +31,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.mode = data_list[7].split('*')[0] - self.data.checksum = data_list[7].split('*')[1] + self.data.mode = data_list[7].split(b'*')[0] + self.data.checksum = data_list[7].split(b'*')[1] print(f"{self.name}:{self.msg} {self.data}") diff --git a/nmea/GSA.py b/nmea/GSA.py index f977866..0bc75b8 100644 --- a/nmea/GSA.py +++ b/nmea/GSA.py @@ -23,8 +23,7 @@ class Gsa(Nmea): self.data = Gsa.Msg() def on_recv(self, msg: MsgContainer): - data = msg.data.decode(encoding="utf-8") - data_list = data.split(',') + data_list = msg.data.split(b',') self.msg = data_list[0] self.data.mode = data_list[1] self.data.fix_type = data_list[2] @@ -32,7 +31,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.signal_id = data_list[18].split('*')[0] - self.data.checksum = data_list[18].split('*')[1] + self.data.signal_id = data_list[18].split(b'*')[0] + self.data.checksum = data_list[18].split(b'*')[1] print(f"{self.name}:{self.msg} {self.data}") diff --git a/nmea/GSV.py b/nmea/GSV.py index 25a7fa0..bf42ed5 100644 --- a/nmea/GSV.py +++ b/nmea/GSV.py @@ -24,8 +24,7 @@ class Gsv(Nmea): self.data = Gsv.Msg() def on_recv(self, msg: MsgContainer): - msg_data = msg.data.decode(encoding="utf-8") - data_list = msg_data.split(',') + data_list = msg.data.split(b',') self.msg = data_list[0] data = self.data @@ -41,8 +40,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.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] + data.signal_id = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[0] + data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[1] if self.data.number_of_msg == self.data.seq_number: self.data = Gsv.Msg() diff --git a/nmea/RMC.py b/nmea/RMC.py index 7083c69..9800672 100644 --- a/nmea/RMC.py +++ b/nmea/RMC.py @@ -16,8 +16,7 @@ class Rmc(Nmea): self.data = Rmc.Msg() def on_recv(self, msg: MsgContainer): - data = msg.data.decode(encoding="utf-8") - data_list = data.split(',') + data_list = msg.data.split(b',') self.msg = data_list[0] self.data.utc_time = data_list[1] self.data.status = data_list[2] @@ -31,7 +30,7 @@ class Rmc(Nmea): 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] + self.data.nav_status = data_list[13].split(b'*')[0] + self.data.checksum = data_list[13].split(b'*')[1] print(f"{self.name}:{self.msg} {self.data}")