Apart Concept 1 Serial Controller Program with modern UI

This commit is contained in:
Tronax 2026-06-13 09:26:58 +02:00
commit c4bde4c18c
103 changed files with 38385 additions and 0 deletions

78
README.md Normal file
View file

@ -0,0 +1,78 @@
# Apart Concept 1 — RS232 Controller
Eine native Desktop-Anwendung (C++ / Qt6) zur vollständigen Steuerung des
**Apart Concept 1** 2-Zonen-Verstärkers über die serielle RS232-Schnittstelle.
Mit modernem GUI, **Dark/Light-Mode** und eingebautem **Simulator** zum Testen
ohne Hardware.
## Funktionen
Alle Attribute des offiziellen Concept-1-RS232-Protokolls werden unterstützt:
- **Steuerung:** Standby, Quellenwahl (AD), Musik-/Mikrofon-Lautstärke pro Zone
(mit Mute), EQ Bass/Höhen, Auto-Loudness
- **Konfiguration:** Multizone & Zone-Link (Stereo / 2 Zonen verknüpft / 2 Zonen
unabhängig), Max-Musik-/Max-Mic-Pegel pro Zone, Paging-Active + Live-Paging-Status,
Eingangs-Gain pro Quelle, editierbare Quellennamen
- **RS-232 / System:** ECHO, LF, BS, HEADER, VALFB; Geräteinfo
(Serial-, HW-, SW-Version); Werksreset (RESTORE)
- **Terminal:** farbcodiertes TX/RX-Log und manuelle Rohbefehle
## Protokoll-Eckdaten
| Parameter | Wert |
|---|---|
| Baudrate | 19200 |
| Datenbits | 8 |
| Parität | keine |
| Stopbits | 1 |
| Flow-Control | keine |
| Terminator | `<CR>` (0x0D) |
**Verkabelung (D-Sub 9):** Pin 2 = TX, Pin 3 = RX, Pin 5 = GND (Nullmodem zum PC).
## Abhängigkeiten
- CMake ≥ 3.19, C++17-Compiler
- **Qt6 Widgets** (Pflicht) — Paket `qt6-base`
- **Qt6 SerialPort** (optional, für echte Hardware) — Paket `qt6-serialport`
> Ohne `qt6-serialport` baut die App weiterhin und läuft im **Simulator-Modus**.
> Für echte RS232-Hardware das Paket installieren:
> ```
> sudo pacman -S qt6-serialport
> ```
## Bauen
```bash
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/apart-controller
```
## Bedienung
1. Oben **Transport** wählen: *Simulator* (kein Gerät nötig) oder
*Serielle Schnittstelle* (Port aus der Liste, ggf. mit `↻` aktualisieren).
2. **Verbinden** klicken. Beim Verbinden wird der Gerätezustand automatisch
eingelesen (`GET INFO`, Gains, Quellennamen, Versionen).
3. Bedienen über die Tabs **Steuerung**, **Konfiguration**, **RS232 / System**.
Alle Änderungen werden sofort als RS232-Befehl gesendet und der Zustand wird
über Value-Feedback synchron gehalten.
4. Theme über den Button rechts oben umschalten (wird gespeichert).
## Architektur
```
src/
protocol/ Concept1Protocol Befehlsaufbau & Reply-Parser (stateless)
Concept1State Gerätezustand
transport/ ITransport abstrakte Schnittstelle
SerialTransport echte RS232 (QtSerialPort, optional)
SimulatorTransport virtueller Concept 1
core/ Concept1Controller verbindet Transport+Protokoll, High-Level-API
ui/ MainWindow GUI mit Tabs
ThemeManager Dark/Light QSS + Persistenz
resources/ styles/*.qss Themes (Qt Resource System)
```