Hallo liebe Leute und RasPi-Fans,
Für einen MIDI-Controller-Selbstbau habe ich mir den Raspberry Pi als Steuerrechner ausgesucht.
Das Ding hat jede Menge Knöpfe, RGB-LEDs, einige kleine Displays und ein 1280x480 TFT Display (per HDMI).
Ich möchte einige wichtige Informationen ansprechend auf dem TFT darstellen und hab vor, dafür Qt5 zu verwenden.
Hab dafür auch bereits eine CrossCompiler Toolchain mit QtCreator auf einem Ubuntu-PC am Laufen und kann Applikationen schreiben und direkt auf dem Target (Raspberry Pi) testen.
Implementiert habe ich eine QuickView ViewList, die als .qml Datei vorliegt und von einer main.cpp zur Anzeige gebracht wird.
Die Liste besteht aus Einträgen für abgespeicherte Konfigurationssetups, die jeweils einen individuellen Namen bekommen.
Angezeigt wird eine kurze Liste aus aktuell eingestellte Konfigurationssetup sowie dem Vorgänger und dem Nachfolger.
Der Charme von QT ist, dass die Liste schön animiert scrollt, wenn man den Index/Eintrag ändert.
Zur Auswertung der Knöpfe (GPIOs) und Ansteuerung der kleinen Displays (I2C) verwende ich wiringPi innerhalb des Qt Projects.
Meine Wunsch ist, die qml-Liste eine Position weiterzuschalten, wenn ein bestimmter Knopf gedrückt wird und die kleinen Displays upzudaten.
wiringPi ISR ist installiert und funktioniert auch.
Ich habe leider nicht sehr viel Ahnung von objektorientierter Programmierung aber habe ich gelernt, dass bei Qt die gesamte Kommunikation zwischen den Objekten über Signale, Events und Slots erfolgt. Und dass mit dam "Aktivieren" des GUI objects via app.exec() ein Endlos-Event-Auswertungs-Loop gestartet wird und die Ausführung von weiterem Code im Thread (in dem Fall in main.cpp) nicht möglich ist.
Und hier habe ich ein Verständnisproblem:
Wie kann ich denn dann die von mir benötigte zyklische Abfrage der Knöpfe/GPIOs bzw. Auswertung des Interrupts realisieren? Bisher habe ich solche Dinge in einer Endos while-loop gemacht. Das geht aber bei einer Qt Applikation nicht.
Kann/muss ich aus der GPIO/Interruptauswertungsroutine ein Objekt bzw. eine Klasse machen mit Signalen und Slots? Und die dann einbinden in meinem main.cpp und connecten mit meinem QuickView Objekt?
Oder wie geht das? Hat jemand Code-Beispiele?
Bin für all Hinweise sehr dankbar 