VersaGUI/doc/03_tray_app.md

2.6 KiB
Raw Blame History

TrayApp

Datei: TrayApp.cs

Verantwortung

  • App-Lebenszyklus als ApplicationContext (kein Hauptfenster)
  • Tray-Icon mit Verbindungsstatus und Kontextmenü
  • Empfang und Routing aller Board-Events (via SerialManager.PacketReceived)
  • Config/Makro-Dump-Empfang (chunked, via _rxConfigBuf / _rxMacroBuf)
  • ACK/NACK-Weiterleitung an SerialManager
  • Öffnen des ConfigForm (nur eine Instanz gleichzeitig)

Tray-Menü

[●/○] VersaPad  verbunden / nicht verbunden   (disabled, nur Anzeige)
──────────────────────────────────────────────
Konfiguration...   → OpenConfigForm()
──────────────────────────────────────────────
Beenden            → Application.Exit()

Icon und Tooltip spiegeln den Verbindungsstatus:

  • Verbunden: SystemIcons.Information, Text "VersaPad verbunden"
  • Getrennt: SystemIcons.Application, Text "VersaPad nicht verbunden"

(TODO: eigenes Icon einbinden)

Board-Event-Handling (OnPacket)

Event-ID Aktion
EvtConfigBegin _rxConfigBuf = new byte[740]
EvtConfigData Chunk in _rxConfigBuf eintragen (KeyId * 6 = Byte-Offset)
EvtConfigEnd DeviceConfig.FromBytes()ConfigForm.RefreshAll()
EvtConfigAck serial.SignalConfigAck() — gibt SendConfig()-Thread frei
EvtConfigNack serial.SignalConfigNack() — gibt SendConfig()-Thread frei (Fehler)
EvtMacroBegin _rxMacroBuf = new byte[512]
EvtMacroData Chunk in _rxMacroBuf eintragen
EvtMacroEnd MacroTable.FromBytes()
EvtMacroAck serial.SignalMacroAck() — gibt SendMacros()-Thread frei
EvtMacroNack serial.SignalMacroNack() — gibt SendMacros()-Thread frei (Fehler)
EvtPong MessageBox "Ping OK"
EvtKeyDown TODO: HOST_COMMAND-Aktion ausführen
EvtEncCw/Ccw TODO: Encoder HOST_COMMAND

ACK/NACK-Events zeigen keine eigene MessageBox mehr — das Ergebnis wird nach Abschluss beider Transfers gebündelt in ConfigForm.OnSave() angezeigt.

Verbindungslebenszyklus

OnConnected():
    Icon + Text + Menü-Item aktualisieren
    serial.RequestConfig()   → Config-Dump vom Board
    serial.RequestMacros()   → Makro-Dump vom Board

OnDisconnected():
    Icon + Text + Menü-Item aktualisieren

TODOs in dieser Klasse

  • HOST_COMMAND-Ausführung: EvtKeyDown empfangen → Aktion aus Config laden → URL/Programm starten
  • Eigenes Tray-Icon statt SystemIcons.Application
  • Debug-Log (versapad_rx.txt) entfernen