Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

8.1.5. Software auf dem Computer

Die Software auf dem Computer verbindet das Touch-Bedienpanel mit einer komfortablen Konfiguration. Sie besteht aus einer Java-Bibliothek, einem Kommandozeilenprogramm und einer JavaFX-Anwendung. Damit lässt sich dieselbe Geräteanbindung sowohl aus eigenem Java-Code als auch interaktiv verwenden.

Die drei Java-Module

Modul Aufgabe
waveshare-lib Serielle Verbindung, JSON-Protokoll, Konfigurationen und Geräteereignisse
waveshare-client Ports auflisten, Konfigurationen lesen und schreiben, Profile abfragen und auswählen
ActiveSideDeviceFX Visueller Editor, Verwaltung lokaler App-Befehle und anwendungsabhängiger Profile, Verbindung im Hintergrund

Die Bibliothek kapselt die Kommunikation hinter einer austauschbaren Transport-Schnittstelle. Der normale Transport verwendet jSerialComm. Das erleichtert auch automatisierte Tests, die Geräteantworten simulieren können.

Der aktuelle gemeinsame Entwicklungsstand verwendet Protokoll 4 und Konfigurationsschema 3. Firmware und Client müssen zusammenpassen. Der Client prüft die Protokollversion beim Verbindungsaufbau und meldet inkompatible Geräte.

Der JavaFX-Editor

Im Editor lassen sich Seiten anlegen und Buttons auf einem Raster positionieren. Ein Button kann mehrere Spalten und Zeilen belegen. Mehrfachauswahl, gemeinsames Verschieben, Duplizieren und Undo helfen beim Aufbau größerer Seiten. Eine Vorschau zeigt das Layout und berücksichtigt die Drehung der jeweiligen Seite.

Die Oberfläche bietet außerdem Dialoge für Bilder, benannte App-Befehle, Profile und Anwendungsregeln. Konfigurationen lassen sich offline bearbeiten. Ein angeschlossenes Gerät wird erst für die Übertragung oder die laufende Kommunikation benötigt.

Die Anwendung verwendet JavaFX und wiederverwendbare Funktionen aus NeitzelLib, unter anderem für die Einbindung in den System-Tray und die Erkennung der aktiven Anwendung. Bei verfügbarem Tray verbirgt das Schließen des Hauptfensters den Editor, während die Verbindung weiterläuft. Über Open lässt sich das Fenster wieder öffnen. Quit beendet die Anwendung und behandelt ungespeicherte Änderungen.

Entwurf, Datei und Gerät

Beim Bearbeiten existiert ein Desktop-Entwurf. Save schreibt diesen in eine Datei. Send to device überträgt die Konfiguration und aktiviert den dazugehörigen lokalen Befehlskatalog und die Anwendungsregeln. Das getrennte Vorgehen erlaubt, eine neue Belegung vorzubereiten, während die bisherige Konfiguration weiter genutzt wird.

Die Desktop-Datei enthält auch Informationen, die nur auf dem Computer gebraucht werden. Dazu gehören Programmpfade, Argumente und Regeln für aktive Anwendungen. Das Gerät erhält die Seiten, ihre Aktionen und Profile. Ein App-Befehl wird dort über seinen Namen referenziert.

Beim Verbinden vergleicht die Anwendung die Konfigurationsidentität und den Inhalt. Bei abweichenden Ständen entscheidet der Benutzer, welche vollständige Konfiguration übernommen wird. Die Aktionen Load from device und Send to device legen die Übertragungsrichtung fest.

App-Befehle und Profile

Ein App-Befehl ordnet einem Namen eine ausführbare Datei und deren Argumente zu. Wenn das Gerät diesen Namen anfordert, startet die Desktop-Anwendung den Prozess und meldet das Ergebnis zurück. Eine erfolgreiche Rückmeldung bedeutet, dass der Start gelungen ist. Standardmäßig wird ein weiterer Start desselben Befehls unterdrückt, solange der von diesem Client gestartete Prozess läuft. Allow concurrent runs erlaubt parallele Starts.

Profile bestimmen, welche der gemeinsam verwalteten Seiten sichtbar sind. Anwendungsregeln können beispielsweise beim Wechsel zu IntelliJ ein Entwicklungsprofil auswählen. Optional lässt sich auch der Fenstertitel berücksichtigen. Die Auswahl kann automatisch erfolgen oder ausdrücklich auf ein manuelles Profil festgelegt werden.

Die Erkennung aktiver Anwendungen ist für macOS, Windows und Linux/X11 vorgesehen. Für Wayland ist sie derzeit nicht unterstützt. Auf macOS können Fensterdetails zusätzliche Berechtigungen benötigen. Die nativen Plattformfunktionen haben unterschiedliche Prüfstände, die im Abschnitt zum Entwicklungsstand erläutert werden.

Selbst bauen

Bibliothek und CLI zielen auf Java 17. Für den vollständigen Build einschließlich JavaFX ist ein JDK 21 mit Maven erforderlich. Die benötigten NeitzelLib-Module müssen zuvor lokal installiert werden. Im NeitzelLib-Checkout lautet der Aufruf mit JDK 21 wie folgt.

mvn -pl fx -am install

Anschließend wird im Checkout java-client gebaut.

mvn verify

Der Build prüft den Java-Code und erzeugt mit jpackage ein Anwendungsabbild für das aktuelle Betriebssystem und die aktuelle Architektur. Es enthält eine Java-Laufzeit. Nutzer dieses Abbilds benötigen daher keine separat installierte Java-Version.

Build-System Ausgabe im Modul ActiveSideDeviceFX
macOS target/app-image/ActiveSideDeviceFX.app
Linux target/app-image/ActiveSideDeviceFX/
Windows target/app-image/ActiveSideDeviceFX/

Für jedes Zielsystem ist ein eigener Build erforderlich. Das erzeugte App-Image enthält noch keinen Installer und keine Signierung oder Notarisierung. Für Entwicklungsprüfungen kann die Paketierung übersprungen werden.

mvn verify -Djpackage.skip=true

Ein Start über Maven ist ebenfalls möglich.

mvn -pl ActiveSideDeviceFX -am install
mvn -pl ActiveSideDeviceFX javafx:run

Die Kommandozeile

Die CLI eignet sich für schnelle Abfragen und Konfigurationskopien. Nach einem Build von waveshare-client zeigt dieser Aufruf die verfügbaren Ports.

java -jar waveshare-client/target/waveshare-client-1.0-SNAPSHOT.jar ports

Die folgenden Beispiele verwenden einen macOS-Portnamen. Er muss durch den tatsächlich aufgelisteten Port ersetzt werden.

java -jar waveshare-client/target/waveshare-client-1.0-SNAPSHOT.jar read /dev/cu.usbmodem1234 backup.json
java -jar waveshare-client/target/waveshare-client-1.0-SNAPSHOT.jar profile /dev/cu.usbmodem1234

Der Unterbefehl write überträgt eine vollständige Konfiguration. Er akzeptiert auch eine Desktop-Datei und entnimmt daraus die für das Gerät bestimmten Daten. Das Schreiben ersetzt den Gerätestand vollständig. Der CLI-Prozess führt keine App-Befehle im Hintergrund aus.

Entwicklungsstand

Die beschriebenen Raster-, Profil- und Editorfunktionen sind im aktuellen Quellcode vorhanden. Für den Profilstand vom 8. November 2026 sind erfolgreiche automatisierte Java-Tests, ein macOS-Anwendungsbuild und ein tatsächlicher Firmware-Flash mit USB-Erkennung und Konfigurationsabfrage dokumentiert. Diese Geräteabfrage betraf noch Schema 2.

Die inzwischen vorhandene Rasterimplementierung mit Schema 3 und Protokoll 4 benötigt ihre eigene Prüfung am Gerät. Auch die vollständige native Bedienung unter Windows und Linux sowie einige macOS-Berechtigungs- und Tray-Funktionen sind noch offene Prüfpunkte. Der erfolgreiche Build allein belegt diese Abläufe nicht.

Weiter geht es mit der Konfiguration und Nutzung.