8.1.2. Architektur
ActiveSideDevice verbindet ein Touch-Bedienpanel mit einer Anwendung auf dem Computer. Die Aufteilung lässt sich an zwei Beispielen erklären. Eine Lautstärketaste sendet unmittelbar eine USB-Medienaktion an das Betriebssystem. Ein Button zum Starten eines Programms fordert dagegen einen benannten Befehl bei der Desktop-Anwendung an.
Bei einem Tastaturbutton erkennt die Firmware die Berührung und liest die hinterlegte Taste samt Modifiern aus der Konfiguration. Sie sendet einen USB-HID-Report für den Tastendruck und anschließend einen für das Loslassen. Der Computer verarbeitet die Eingabe wie die einer zusätzlichen Tastatur.
Damit lassen sich beispielsweise Aktionen in IntelliJ auslösen. Das Gerät sendet die Tastenkombination, während die Keymap der IDE bestimmt, was sie bewirkt. Die gewünschte Anwendung muss dafür den Fokus haben. Auch Mediensteuerung und relative Mausbewegungen laufen über HID. Diese Funktionen benötigen zur Ausführung keine laufende ActiveSideDevice-Desktop-Anwendung.
Ein Programmbutton enthält einen Namen wie editor. Die Firmware meldet die Betätigung über den USB-CDC-Kanal. Die Desktop-Anwendung sucht den Namen in ihrem aktiven Befehlskatalog, startet das zugeordnete Programm und gibt dem Gerät eine Rückmeldung. Programmpfade und Argumente bleiben auf dem Computer.
| Baustein | Aufgabe |
|---|---|
| Firmware | Touchoberfläche, Seiten und Profile, lokale Aktionen, Speicherung und USB-Kommunikation |
Java-Bibliothek waveshare-lib |
Geräteprotokoll, serielle Verbindung und typisierte Konfigurationsdaten |
CLI waveshare-client |
Ports auflisten, Konfiguration lesen und schreiben sowie Profile auswählen |
JavaFX-Anwendung ActiveSideDeviceFX |
Visueller Editor, Geräteverbindung, Befehlskatalog und automatische Profilauswahl |
Auf dem Gerät bilden ESP-IDF, LVGL und TinyUSB die technische Grundlage. Die Java-Seite verwendet für die serielle Verbindung jSerialComm. Wiederverwendbare JavaFX-Funktionen kommen aus NeitzelLib.
Der USB-Anschluss versorgt das Gerät und überträgt Daten. Die Firmware meldet ein zusammengesetztes USB-Gerät an. HID übernimmt Tastatur-, Medien- und Mausaktionen. CDC stellt den bidirektionalen Kanal für Konfiguration, Gerätereignisse und Programmbefehle bereit.
Diese Aufteilung erlaubt auch die Nutzung einer bereits gespeicherten Tastatur- oder Medienseite bei geschlossener Desktop-Anwendung. Für Bearbeitung und Übertragung der Konfiguration sowie Programmbefehle wird der CDC-Kanal benötigt. Die Details stehen im Kapitel Kommunikation und Protokoll.
Die Desktop-Anwendung hält einen bearbeitbaren Entwurf und den zuletzt synchronisierten Gerätestand auseinander. Änderungen im Editor werden erst durch Send to device auf dem Gerät aktiv. Save speichert eine Desktop-Datei. So kann ich an einer neuen Belegung arbeiten, während die vorhandene Belegung weiterläuft.
Jede Konfiguration besitzt eine UUID, eine Revision und eine Commit-ID. Beim Verbindungsaufbau werden Metadaten und Inhalt geprüft. Abweichungen werden durch eine bewusst gewählte vollständige Übertragung abgeglichen. Änderungen direkt am Gerät können nach einer Subscription zum Desktop gelangen. Dort aktualisieren sie die betroffenen Felder und lassen andere Entwurfsänderungen bestehen.
Der Desktop speichert zusätzlich lokale Informationen. Dazu gehören Programmpfade, Argumente, Anwendungsregeln und Anwendungseinstellungen. Das Gerät erhält die für seine Darstellung und Bedienung benötigten Daten. Bei automatisch gewählter Seitenkapazität wird der aufgelöste Wert mit übertragen, damit die Seite auch ohne Desktop-Verbindung gleich dargestellt wird.
Ein Profil legt fest, welche Seiten sichtbar sind. Beispielsweise kann ein Profil für die Entwicklung eine IntelliJ-Seite anzeigen, während ein anderes andere Werkzeuge in den Vordergrund rückt. Die Seiten selbst werden zwischen Profilen geteilt.
Die automatische Erkennung der aktiven Anwendung und die Auswertung von Regeln erfolgen auf dem Computer. Das Gerät kann Profile auch manuell auswählen. Ein Profilwechsel ist Laufzeitzustand und schreibt die Konfiguration nicht bei jedem Wechsel erneut in den Flash. Während einer Geste oder eines geöffneten Geräteeditors wartet ein angeforderter Wechsel, bis die Interaktion beendet ist.
Diese Beschreibung folgt dem Quellstand vom 8. November 2026 mit Protokoll 4 und Konfigurationsschema 3. Rasterlayout, Rotation und Profile sind darin implementiert. Die Prüfung der tatsächlichen Darstellung, Touchbedienung und des Verhaltens beim Abziehen und Wiederanschließen gehört zusätzlich zur Erprobung am Gerät.