Gesten-Steuerung für programmierbare Displays mit Touchscreen

(Nur für bestimmte Geräte mit Touchscreen verfügbar, siehe feature matrix)

Übersicht

  1. Einleitung
  2. Für das System (Firmware) reservierte Gesten
  3. Im Anwenderprogramm nutzbare Gesten

Siehe auch:



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) :

gesture with visible trace
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:

9-field gesture area
Fläche für Touchscreen-Gesten mit neun Feldern

gesture to open the shutdown window / system menu
Geste 'U' zum Öffnen des Shutdown-Dialogs


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:

gesture to open the virtual keyboard
Geste 'ENTER', Code 0x36987 (hex), dient zum Öffnen der virtuellen Tastatur



gesture to open the shutdown window / system menu
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.


Geste 'von Links nach Rechts'
'Wischen von links nach rechts',
Code 0x123 (hex)

Geste 'von Rechts nach Links'
'Wischen von rechts nach links',
Code 0x321 (hex)

Geste 'von Oben nach Unten'
'Wischen von Oben nach Unten',
Code 0x147 (hex)

Geste 'von Unten nach Oben'
'Wischen von Unten nach Oben',
Code 0x741 (hex)

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)