added signal (SIGINT) handler for gracefully exit

This commit is contained in:
2026-03-17 19:33:19 +01:00
parent eaec8d8691
commit 4a3758d5f1
+24 -5
View File
@@ -1,6 +1,7 @@
import socket
import selectors
import time
import signal, os
from msg_container import MsgContainer
from receiver.nmea_packetizer import NmeaPacketizer
@@ -34,8 +35,9 @@ class NetworkBackend(ABackend):
self.thread.start()
def stop(self):
self.loop_enable = False
self.thread.join()
if self.loop_enable:
self.loop_enable = False
self.thread.join()
def create_xcvr(self, name: str) -> Transceiver:
obj = Transceiver(self, name)
@@ -113,6 +115,12 @@ class NetworkBackend(ABackend):
finally:
self.sel.close()
def handler(signum, frame, be: NetworkBackend):
sig_name = signal.Signals(signum).name
print(f'Signal handler called with signal {sig_name} ({signum})')
be.stop()
be.disconnect()
if __name__ == "__main__":
server_list = [
{'name': " neo-f9p", 'host': "192.168.22.93", 'port': 8721},
@@ -120,8 +128,13 @@ if __name__ == "__main__":
]
transceiver = {}
# TCPIP multi source receiver
mc = NetworkBackend(server_list)
# Set the signal handler
signal.signal(signal.SIGINT, lambda signum, frame: handler(signum, frame, mc))
for grm in [" neo-f9p", "zed-x20p"]:
nmea_rx_list = [
Gll(grm, 'GN'),
@@ -170,9 +183,13 @@ if __name__ == "__main__":
# Start thread
mc.start()
for n in range(10):
for grm in [" neo-f9p", "zed-x20p"]:
transceiver[grm].send(b'Hallo')
while True:
try:
for grm in [" neo-f9p", "zed-x20p"]:
transceiver[grm].send(b'Hallo')
except ValueError:
break
time.sleep(1)
# Stop thread
@@ -180,3 +197,5 @@ if __name__ == "__main__":
# code never reached
mc.disconnect()