apart-controller/README.md

78 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
```