63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# 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
|