2.6 KiB
2.6 KiB
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:
EvtKeyDownempfangen → Aktion aus Config laden → URL/Programm starten - Eigenes Tray-Icon statt
SystemIcons.Application - Debug-Log (
versapad_rx.txt) entfernen