Gesten-Steuerung für programmierbare Displays mit Touchscreen
(Nur für bestimmte Geräte mit Touchscreen verfügbar, siehe feature matrix)
Übersicht
Siehe auch:
- Touchscreens in User Programmable Displays (UPTs)
- Handbuch zum Programmiertool
- Frequently Asked Questions
- Feature Matrix - mit Übersicht der programmierbaren Displays von MKT
1. Einleitung
Seit April 2012 verfügen einige der von MKT entwickelten Anzeigegeräte weder über eine Tastatur, noch über einen Drehknopf zur Bedienung.
Um bei diesen Geräten z.B. das System-Menü aufzurufen, wurde in der Gerätefirmware eine einfache Gesten-Steuerung per Touchscreen integriert,
die -wie in diesem Dokument beschrieben- aber auch zum Steuern der vom Endanwender erstellten Anzeigeseiten werden kann.
Hier das Beispiel der Geste zum Öffnen des Systemmenüs (rechteckiges "U"), in diesem Fall mit sichtbarer Spur (gepunktete Linie;
im Systemmenü unter 'System Setup'..'Display'..'Vis. Gesture' konfigurierbar) :
Geste 'U' auf einem 7-Zoll-Display, mit sichtbarer Spur
Jede Geste, die der Bediener auf dem Touchscreen 'zeichnet' (sichtbar oder unsichtbar),
wird von der Firmware entsprechend der folgenden Tabelle mit neun Feldern numeriert:
|
|
Eine Geste beginnt mit dem Druck des Fingers (bzw. Stiftes) auf der aktiven Displayfläche,
und endet mit dem Abheben des Fingers von der Touch-Fläche.
In dem Moment versucht das Programm, die Geste anhand der bei der Bewegung durchlaufenen Felder zu erkennen.
Die beim Zeichnen der Geste verwendete Bildschirmfläche (Pixel-Koordinaten) spielen dabei keine Rolle, lediglich die Form der Geste.
Die dabei durchlaufenden Felder werden, beginnend mit dem Start-Feld in der höchstwertigen Ziffer,
zu einem i.A. hexadezimal notierten "Gesten-Code" zusammengefügt (Beispiele dazu folgen im nächsten Kapitel).
Bedingungen für eine erfolgreiche Gestenerkennung sind:
- die Geste sollte sich über mindestens 25 Prozent der verfügbaren Display-Fläche erstrecken
- die Geste muss in einem einzigen Durchgang gezeichnet werden (Stift oder Finger nicht während des Zeichnens abheben)
- eine einzelne Geste muss nach spätestens 5 Sekunden beendet sein (d.h. keine "sehr langsamen" Gesten)
- die Geste sollte nur aus vertikalen und horizontalen Bewegungen bestehen (keine diagonalen Linien !)
- Der 'Pfad' der Geste ist auf 8 der maximal 9 Felder begrenzt
(Grund: Im 32 Bit langen "Code" der Geste belegt jedes durchlaufene Feld 4 Bit)
2. Für das System (Firmware) reservierte Gesten
Die folgenden Touchscreen-Gesten sind für das System reserviert. Sie haben Priorität gegenüber den vom Anwenderprogramm definierten Gesten, und können daher nicht zum Steuern Ihrer eigenen Display-Anwendung eingesetzt werden:
Geste 'ENTER', Code 0x36987 (hex), dient zum Öffnen der virtuellen Tastatur
Geste 'U', Code 0x1478963 (hex), zum Aufruf des Shutdown-Fensters (bzw. System-Menü)
3. Im Anwenderprogramm nutzbare Gesten
Einfachen Gesten, wie z.B. die im Foldengen aufgeführten "Wisch-Bewegungen", können mit Hilfe der Script-Sprache oder der 'programmierbaren Events' zur Steuerung des Anzeigeprogramms verwendet werden.Die in der folgenden Tabelle gezeigten hexadezimalen Codes können im Anzeigeprogramm für beliebige Zwecke verwendet werden (siehe Beispiel).
Ein Gesten-Code besteht aus einer Kombination aus 4-Bit-Nummern der Felder, die beim 'Zeichnen' der Geste durchlaufen wurden. Das erste Feld (in dem die Bewegung beginnt; in der Tabelle durch einen Kreis markiert) steht in der linken (höchstwertigen) Ziffer; die Nummer des letzten Feldes (in dem die Bewegung endete, d.h. der Stift wieder abgehoben wurde) steht in den niederwertigen 4 Bits (und damit in der letzten Ziffer bei hexadezimaler Schreibweise). Die Felder werden von 1 bis 9 numeriert (in der folgenden Tabelle in Grau erkennbar).
Beispiel: Die Geste "Wischen von Links nach Rechts" durchläuft die Felder 1, 2, und 3 (in dieser Reihenfolge), woraus sich der hexadezimale Code 0x123 ergibt. Der Prefix '0x' kennzeichnet in fast allen Programmiersprachen (außer Pascal) eine Zahl in hexadezimaler Schreibweise. Die hexadezimale Form erlaubt es, die 4-Bit-Gruppen (hier: Feldnummern) direkt zu erkennen.
|
|
|
|
Um diese (und ähnliche) Gesten im Anwenderprogramm zu nutzen, wird der Einsatz der
select..case-Anweisung in der Script-Sprache empfohlen.
Implementieren Sie dazu einen OnGesture-Handler in Ihrem Script.
Hier ein einfaches Script-Fragment,
mit dem verschiedene 'Wisch'-Gesten erkannt bzw 'abgefangen' werden können.
func OnGesture( int gestureCode, int gestureSize ) // Wird vom System aufgerufen wenn eine Touchscreen-Geste abgeschlossen ist. // Parameter: gestureCode = Art der Geste, siehe Handbuch (gestures_01.htm). // gestureSize = ungefähre Größe mit der die Geste gezeichnet wurde, // gemessen in "Prozent der Breite des Bildschirms". select gestureCode case 0x123 : // Wisch-Bewegung von Links nach Rechts display.goto_page( display.page_index - 1 ); // Sprung zur VORHERIGEN Seite case 0x321 : // Wisch-Bewegung von Rechts nach Links display.goto_page( display.page_index + 1 ); // Sprung zur NACHFOLGENDEN Seite else : // alle anderen Touchscreen-Gesten werden hier NICHT verarbeitet... return 0; // dem System den Aufruf des 'Default-Handlers' erlauben endselect; return 1; // Das Event (hier: Geste) wurde in diesem Handler verarbeitet endfunc;
Letzte Änderungen:
- 2012-04-02 : Erster Einsatz der Gesten-Steuerung im "UPT 800" (HMI mit 7"-Display, ohne Tastatur und Drehknopf)