VersaGUI/doc/03_tray_app.md
2026-03-30 19:51:38 +02:00

2.2 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)
  • Ö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[223]
EvtConfigData Chunk in _rxConfigBuf eintragen (KeyId * 6 = Byte-Offset)
EvtConfigEnd DeviceConfig.FromBytes()ConfigForm.RefreshAll()
EvtMacroBegin _rxMacroBuf = new byte[256]
EvtMacroData Chunk in _rxMacroBuf eintragen
EvtMacroEnd MacroTable.FromBytes()
EvtPong MessageBox "Ping OK"
EvtConfigAck MessageBox "Config gespeichert"
EvtConfigNack MessageBox "Config FEHLER"
EvtMacroAck MessageBox "Makros gespeichert"
EvtKeyDown TODO: HOST_COMMAND-Aktion ausführen
EvtEncCw/Ccw TODO: Encoder HOST_COMMAND

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