Anwendung
Sie können folgende Befehle per Parameter an den TcTouchLockCLI übergeben:
Befehl | Funktion |
---|---|
-silent | Optional: Der TcTouchLockCLI gibt keine Ausgabe zurück. |
-list | Listet alle angeschlossenen Geräte mit Namen, ID und Touch-Status auf. |
-setID | Setzt die eingegebene ID. Ist nur ein Gerät angeschlossen, wird die eingegebene ID automatisch gesetzt. Bei mehreren Geräten muss das gewünschte Gerät durch eine Berührung des Monitors ausgewählt werden. |
-setFocus | Setzt den Touch-Fokus auf das mit der ID angegebene Gerät. Alle anderen Geräte werden gesperrt. |
-unlockAll | Entsperrt alle Geräte. |
-help/-? | Listet die Funktionen des TcTouchLockCLI auf. |
Bedeutung | Code |
---|---|
Kein Fehler | 0 |
Falsche/keine Parametereingabe | 1 |
Falsche/keine Identifikationsnummer | 2 |
Kein Gerät gefunden | 3 |
Sind alle Multitouch-Panel-Geräte an den IPC angeschlossen, können Sie den angeschlossenen Geräten individuelle IDs zuweisen. Mit Hilfe des Befehls –setID können Sie bei einem angeschlossenen Gerät automatisch die ID setzen. Sind mehrere Geräte angeschlossen, müssen Sie nach Eingabe des Befehls –setID den zuzuordnenden Touchscreen berühren.
Sie können nun die Sperrung bestimmter Touchscreens über TwinCAT oder die Kommandozeilenapplikation vornehmen. Für die Anwendung in der SPS steht dazu ein eigener Funktionsbaustein zur Verfügung (siehe unten).
In der Kommandozeilenapplikation können Sie den Fokus mit Hilfe des Befehls –setFocus auf eine ID setzen. In der Folge ist eine Eingabe nur noch über das Gerät mit Fokus möglich. Wenn Sie mit dem Befehlt –setFocus eine nicht verfügbare ID angeben, werden alle angeschlossenen Touchscreens gesperrt. Mit dem Befehl –unlockAll können Sie diesen Fokus wieder aufheben.
FB_TcTouchLock_AquireFocus
Sie können alternativ zur ausführbaren Datei den Fokus auf angeschlossene Panel mit dem Funktionsbaustein FB_TcTouchLock_AcquireFocus anfordern und freigeben. Folgende Voraussetzungen müssen Sie dabei beachten:
- Entwicklungsumgebung: TwinCAT v3.1. >= 4022.31
- Zielplattform: PC oder CX (x86, x64)
- Einzubindende SPS-Bibliothek (Kategoriegruppe): Tc2_IoFunctions (IO)
Wird der Fokus an einem Panel angefordert, wenn ein anderes Panel ihn derzeit besitzt, so muss der Fokus von diesem zunächst frei gegeben werden. Sobald die Freigabe erfolgt ist, wird der Fokus automatisch auf das im Wartezustand befindliche Gerät gesetzt.
Die Panel, auf die durch den Funktionsblock zugegriffen werden, müssen Sie zuvor durch die Kommandozeilenapplikation TcTouchLockCLI.exe konfigurieren. Dabei müssen Sie jedem Gerät eine spezifische Identifikationsnummer zuweisen (siehe oben).
VAR_INPUT
VAR_INPUT
bEnable : BOOL;
sSetID : STRING(32);
tLEDTime : TIME := 200;
END_VAR
bEnable: TRUE = Fokus anfordern, FALSE = Fokus abgeben
sSetID: ID des Gerätes
tLEDTime: Die Ausgabe-LED blinkt im festgelegten Intervall (100ms – 1s), während der Fokus angefordert wird
VAR_OUTPUT
VAR_OUTPUT
bAcquired:
BOOL := FALSE;(* Focus status information *)
bLED:
BOOL := FALSE;(* LED control output *)
bBusy:
BOOL;(* TRUE => function in progress *)
:
bError:BOOL;(* Error flag *)
nErrID:
UDINT;(* Error code *)
END_VAR
bAcquired: TRUE, wenn der Client den Fokus besitzt und FALSE, wenn er ihn verliert.
bLED: Dieser Ausgang hat je nach Modus folgende Bedeutung:
Modus | Bedeutung |
---|---|
Konstant TRUE | Das Panel besitzt den Fokus |
Konstant FALSE | Das Panel besitzt den Fokus nicht |
Toggelt | Das Panel wartet darauf den Fokus zu erhalten |
bBusy: TRUE solange der Funktionsbaustein aktiv ist.
bError: TRUE, wenn ein ADS-Fehler bei der Übertragung des Kommandos auftritt. Der bBusy-Ausgang wird zuvor zurückgesetzt.
nErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer oder einen befehlsspezifischen Fehlercode zurück (Tabelle).
Fehlercodes | Fehlerbeschreibung |
---|---|
0x0000 | Kein Fehler |
0x0006 | Ziel-Port nicht gefunden |
Beispiel: Touch-Focus über Sondertaste steuern
Sie können den Fokus beispielweise über eine Sondertaste des Panels setzen. Da der Fokus auch bei gesperrter Eingabe über den Touchscreen angefordert werden soll, müssen Sie eine Eingabemöglichkeit außerhalb des sperrbaren Touchscreens berücksichtigen. Über den TwinCAT System Manager wird die Sondertaste mit der entsprechenden Input-Variable des PLC Programms verknüpft. Pro Panel wird eine FB_TcTouchLock_AquireFocus Instanz erzeugt und mit der ID des Panels konfiguriert. Nach Drücken der Sondertaste an einem Panel, wobei der Baustein R_TRIG die steigende Flanke detektiert, versucht das PLC Programm über die entsprechende FB_TcTouchLock_AquireFocus Instanz den Touch-Fokus zu setzen. Der Funktionsbaustein kann außerdem einen Ausgang ansteuern (z.B. eine LED), der signalisiert, ob der Touch-Fokus erfolgreich gesetzt wurde oder ob noch versucht wird den Fokus zu holen. Erneutes Drücken der Sondertaste setzt den Touch-Fokus wieder zurück und ermöglicht damit ein Setzen des Touch-Fokus auf andere Panel.

Das PLC-Programm sieht für zwei Panel folgendermaßen aus:
PROGRAM MAIN
VAR
button1 AT%IX0.0 : BOOL;
button2 AT%IX0.1 : BOOL;
led1 AT%QX0.0 : BOOL;
led2 AT%QX0.1 : BOOL;
fbPanel1 : FB_TcTouchLock_AcquireFocus := ( sSetID := 'A' );
fbPanel2 : FB_TcTouchLock_AcquireFocus := ( sSetID := 'B' );
trigger1 : R_TRIG;
trigger2 : R_TRIG;
END_VAR
(* Panel 1 *)
trigger1( CLK := button1 );
IF trigger1.Q THEN
fbPanel1.bEnable := NOT fbPanel1.bEnable;
END_IF
fbPanel1(bLED=>LED1);
(* Panel 2 *)
trigger2( CLK := button2 );
IF trigger2.Q THEN
fbPanel2.bEnable := NOT fbPanel2.bEnable;
END_IF
fbPanel2(bLED=>LED2 );