Modul gui_helpers.py obsahuje pomocné funkce pro zobrazování logů v GUI
a pro bezpečnou komunikaci mezi vlákny pomocí dvou front:
q_to_main a q_from_main.
Tyto funkce se starají o:
root.after().Číselný čítač logovacích zpráv. Každá zpráva přijatá z vlákna je v GUI automaticky číslována:
001: Connected 002: Uresp received 003: Values parsed ...
Jednoduchá pomocná funkce, která:
Používá se výhradně z hlavního GUI vlákna.
Hlavní smyčka pro zpracování fronty zpráv z pracovních vláken.
Tato funkce je volána každých 100 ms přes root.after() a plní
zásadní roli při komunikaci mezi:
("GET_RADIO_VALUES")
BLE vlákno vyžádá aktuální stavy všech radiobuttonů → GUI vrátí seznam
osmi hodnot přes q_from_main.
values = get_radio_values() q_from_main.put(values)
("CALL_RESET_AND_SEND")
Požadavek na spuštění funkce reset_and_send(), který musí proběhnout
v hlavním GUI threadu (jinak Tkinter spadne).
Všechny ostatní zprávy jsou vloženy do GUI text widgetu, automaticky
očíslované pomocí message_counter.
Smyčka je naplánována přes:
root.after(100, process_queue, root, text_widget, q_to_main, q_from_main)
To zaručuje bezpečné provádění GUI operací v hlavním threadu bez zamrznutí
okna a bez použití .mainloop() v jiném vlákně.
1) BLE vlákno → GUI
q_to_main.put("Connected")
q_to_main.put(("GET_RADIO_VALUES", None))
q_to_main.put(("CALL_RESET_AND_SEND", None))
2) GUI → BLE vlákno
values = q_from_main.get()
Dvojice front umožňuje plnohodnotnou obousměrnou komunikaci bez blokování.