← Zpět na hlavní dokumentaci

Dokumentace modulu thread_worker.py

Modul thread_worker.py obsahuje logiku pro vlákna, která periodicky čtou hodnoty z GUI, analyzují data LiC a provádějí Time-dependent balancing (TDB). Slouží k automatizaci balancování článků a aktualizaci Entry polí v hlavním GUI.

Globální proměnné

Hlavní funkce

Práce s vlákny a TDB

  1. Vlákno je spouštěno přes Th_work_start() a běží dokud je _bezi = True.
  2. Periodicky získává hodnoty z GUI radiobuttonů a analyzuje je.
  3. Při aktivním TDB řídí stav tlačítka a provádí RUN cykly balancování.
  4. Hlídá překročení limitů LiC a zastavuje balancování podle definovaných pravidel.
  5. Komunikace s GUI probíhá přes fronty queue_to_main a queue_from_main.

Integrace s GUI

Modul upravuje přímo Entry pole v ui_entries.py a používá funkce z: ui_buttons, ui_radiobuttons, my_tools a globals. Výsledky analýzy LiC jsou okamžitě zobrazeny a barvy Entry polí signalizují stav balancování.

Stavový diagram – Thread Worker (Th_work_nekonecne_vlakno)

Tento stavový diagram ukazuje kompletní logiku vlákna Th_work_nekonecne_vlakno(): načítání radiobuttonů přes queue, logiku Time-Dependent Balancing (TDB), stavový automat StateOfTDB 0 → 1 → 2 → 3 → stop, ochranné podmínky (low/high voltage), opakované reset_and_send, řízení RUN cyklu a tlačítka TDB.

State Machine – Th_work_nekonecne_vlakno() Nekonečná smyčka while _bezi: TimerMessage++, získání radiobuttonů z GUI přes fronty q_to_main.put(("GET_RADIO_VALUES")) current_values = q_from_main.get() If StateOfTDB == 0: → AvgAndAnalyse() Pokud btn_tdbClick == True: Přepnout time_dependent_balancing Aktualizace barvy tlačítka TDB Pokud lower_than_3 nebo higher_than_4_2: → vypnout TDB → postupně 3× CALL_RESET_AND_SEND přes q_to_main → CountRunCommands = 0 Stavový automat TDB (StateOfTDB) State 0 Čekání, příprava dat State 1 Načtení config.json Výpočet prahů, aktivace TDB State 2 Parse StrStatus Compare radio vs parsed status Pokud OK → State 3 a create_run_file() State 3 RUN aktivní – LTC3300 balancuje Počítání CountRunCommands Pokud Count > DelayOfRunCommand: → CALL_RESET_AND_SEND + návrat do State 0 ukončení RUN Pokud TDB vypnuto: time_dependent_balancing=False, StateOfTDB=0 návrat na začátek smyčky