78 lines
2.8 KiB
Markdown
78 lines
2.8 KiB
Markdown
# 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 (A–D), 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)
|
||
```
|