← Zpět na hlavní dokumentaci

Dokumentace modulu gui_helpers.py

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:

Globální proměnné

message_counter

Čí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
...

Funkce gui_append(text_widget, message)

Jednoduchá pomocná funkce, která:

Používá se výhradně z hlavního GUI vlákna.

Funkce process_queue(root, text_widget, q_to_main, q_from_main)

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:

Podporované příkazy z q_to_main

1) ("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)

2) ("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).

3) Běžné logovací zprávy

Všechny ostatní zprávy jsou vloženy do GUI text widgetu, automaticky očíslované pomocí message_counter.

Periodické volání

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ě.

Přehled komunikace

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í.