No description
Find a file
Tronax c548d5c9f7 Add separate Linux and Windows build instructions to README
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>
2026-06-13 10:10:05 +02:00
resources Apart Concept 1 Serial Controller Program with modern UI 2026-06-13 09:26:58 +02:00
src Apart Concept 1 Serial Controller Program with modern UI 2026-06-13 09:26:58 +02:00
.gitignore Add .gitignore and stop tracking build artifacts 2026-06-13 09:59:57 +02:00
CMakeLists.txt Fix Windows installer DLL bundling order 2026-06-13 09:58:47 +02:00
README.md Add separate Linux and Windows build instructions to README 2026-06-13 10:10:05 +02:00

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

Linux

Abhängigkeiten installieren (Arch / pacman):

sudo pacman -S cmake gcc qt6-base qt6-serialport

Bauen und starten:

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 installieren und die „MSYS2 MinGW64“-Shell öffnen.

  2. Toolchain und Qt6 installieren:

    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:

    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:

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)