From 4427995ed60ef63f82f4b505b28cfbe91f9169b3 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 23 Mar 2026 15:42:24 +0100 Subject: [PATCH] - send() uses bytes no Msg --- a_backend.py | 2 +- network_backend.py | 4 ++-- readme.md | 10 ++++++++++ receiver/ubx_query.py | 26 ++++++++++++++++++++++++++ transceiver.py | 4 ++-- 5 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 receiver/ubx_query.py diff --git a/a_backend.py b/a_backend.py index ac3eb76..ff5306b 100644 --- a/a_backend.py +++ b/a_backend.py @@ -2,5 +2,5 @@ from abc import ABC from msg_container import MsgContainer class ABackend(ABC): - def send(self, name: str, msg: MsgContainer): + def send(self, name: str, data: bytes): pass diff --git a/network_backend.py b/network_backend.py index b8ebb7e..92c5c3d 100644 --- a/network_backend.py +++ b/network_backend.py @@ -28,9 +28,9 @@ class NetworkBackend(ABackend): self.thread = Thread(target=self.event_loop) self.loop_enable = True - def send(self, name: str, msg: MsgContainer): + def send(self, name: str, data: bytes): sock = self.find_by_name(name) - sock['queue'].put(msg) + sock['queue'].put(data) if sock is not None: self.sel.modify(sock['sock'], selectors.EVENT_READ + selectors.EVENT_WRITE, None) diff --git a/readme.md b/readme.md index d013d5f..74ecc50 100644 --- a/readme.md +++ b/readme.md @@ -13,3 +13,13 @@ https://content.u-blox.com/sites/default/files/documents/ZED-X20P-00B_DataSheet_ https://content.u-blox.com/sites/default/files/documents/ZED-X20P_IntegrationManual_UBXDOC-963802114-12901.pdf?utm_content=UBXDOC-963802114-12901 ## Interface spec https://content.u-blox.com/sites/default/files/documents/u-blox-20-HPG-2.00_InterfaceDescription_UBXDOC-304424225-19888.pdf?utm_content=UBXDOC-304424225-19888 + +# Real time Kinematics +## ESA Article +https://gssc.esa.int/navipedia/index.php?title=Real_Time_Kinematics + +# RTCM 3.0 +## Overview +https://www.geopp.de/pdf/gppigs06_rtcm_f.pdf +## Cheat sheet +https://www.use-snip.com/kb/knowledge-base/an-rtcm-message-cheat-sheet/ diff --git a/receiver/ubx_query.py b/receiver/ubx_query.py new file mode 100644 index 0000000..d41ef05 --- /dev/null +++ b/receiver/ubx_query.py @@ -0,0 +1,26 @@ +from msg_container import MsgContainer +from ubx.ubx import frame_parse, frame_parse_hdr, frame_create +from ubx.msg import UbxMsg +from transceiver import Transceiver +from ubx_receiver import UbxReceiver +from threading import BoundedSemaphore + +class Query(UbxReceiver): + def __init__(self, transceiver: Transceiver, parser: UbxMsg, mclass: int|None = None, mid: int|None = None): + UbxReceiver.__init__(self, parser, mclass, mid) + self.transceiver = transceiver + self.sema = BoundedSemaphore() + self.msg = UbxMsg() + + def on_recv(self, msg: MsgContainer): + if self.is_msg(msg): + data, hdr = frame_parse(msg.data) + msg_parsed = self.parser.from_bytes(data) + self.msg = msg_parsed + self.sema.release() + + def query(self, data: bytes): + frame = frame_create(0x01, 0x35, b'') + self.transceiver.send(frame) + self.sema.acquire() + print(self.msg) diff --git a/transceiver.py b/transceiver.py index dd63128..3b31e0f 100644 --- a/transceiver.py +++ b/transceiver.py @@ -11,6 +11,6 @@ class Transceiver(MsgSource): def on_recv(self, msg: MsgContainer): self.call_sinks(msg) - def send(self, msg: MsgContainer): - self.backend.send(self.name, msg) + def send(self, data: bytes): + self.backend.send(self.name, data)