Document dependency install per platform, the MSYS2 MinGW64 toolchain setup for Windows, and the cpack/NSIS installer step. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
133 lines
4.1 KiB
Markdown
133 lines
4.1 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
|
||
|
||
### 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)
|
||
```
|