# 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 ### Linux Abhängigkeiten installieren (Arch / pacman): ```bash sudo pacman -S cmake gcc qt6-base qt6-serialport ``` Bauen und starten: ```bash cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j ./build/apart-controller ``` > Auf anderen Distributionen heißen die Pakete z. B. `qt6-base-dev` und > `qt6-serialport-dev` (Debian/Ubuntu) bzw. `qt6-qtbase-devel` und > `qt6-qtserialport-devel` (Fedora). ### Windows Empfohlen ist die **MSYS2 MinGW64**-Toolchain. 1. [MSYS2](https://www.msys2.org/) installieren und die **„MSYS2 MinGW64“**-Shell öffnen. 2. Toolchain und Qt6 installieren: ```bash pacman -S --needed \ mingw-w64-x86_64-toolchain \ mingw-w64-x86_64-cmake \ mingw-w64-x86_64-ninja \ mingw-w64-x86_64-qt6-base \ mingw-w64-x86_64-qt6-serialport \ mingw-w64-x86_64-nsis ``` 3. Bauen: ```bash cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build ./build/apart-controller.exe ``` #### Installer erstellen Der Installer bündelt automatisch die Anwendung, alle Qt- und MinGW-Laufzeit-DLLs sowie die zur Laufzeit geladenen Qt-Plugins (Plattform-, Stil-, Bildformate). Aus dem `build`-Verzeichnis heraus: ```bash cd build cpack -G NSIS ``` Heraus kommt `Apart Concept 1 Controller-1.0.0-win64.exe` — ein eigenständiger Installer mit Start-Menü- und Desktop-Verknüpfung. Es müssen **keine** DLLs von Hand kopiert werden. ## 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) ```