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