Capture des événements d'entrée utilisateur
Vous pouvez capturer les événements d'entrée utilisateur dans l'application. Pour ce faire, vous pouvez implémenter un bloc fonctionnel qui s'exécute lorsque des événements utilisateur se produisent.
Avis
Exemple de projet pour capturer les modifications de variables via la saisie de l'utilisateur
L'exemple de projet enregistre les modifications de valeurs de variables déclenchées par la saisie de l'utilisateur dans la visualisation. Ce projet présente également l'implémentation de la méthode. ValueChanged
.
Capture de l'écriture des variables
Lorsque l'utilisateur termine la saisie d'une valeur (dans un champ de saisie), un événement de contrôle d'édition est fermé. Vous pouvez capturer cet événement dans l'application comme suit :
Créer un bloc fonctionnel qui implémente l'interface
VisuElems.IEditBoxInputHandler
de la bibliothèqueVisuElemBase
.Transmettre l'instance au gestionnaire d'événements global
VisuElems.Visu_Globals.g_VisuEventManager
en appelant la méthodeSetEditBoxEventHandler
.
Une visualisation comporte deux champs de saisie pour iInput_A
et rInput_B
et un élément de sortie de texte.
Les champs de saisie sont des rectangles sur lesquels l'utilisateur est invité à cliquer pour saisir du texte.
L'élément de sortie de texte est un rectangle où se trouve le contenu de la variable de texte PLC_PRG.stInfo
sont imprimés. La variable texte contient la dernière saisie effectuée par l'utilisateur dans l'un des champs de saisie, ainsi que les informations supplémentaires ajoutées.

Propriétés du rectangle | |
| |
| |
Propriétés du rectangle | |
| |
| |
Propriétés du rectangle pour la sortie texte | |
| |
|
Mise en œuvre de PLC_PRG
PROGRAM PLC_PRG VAR_INPUT iInput_A:INT; (* Used in the visualization as user input variable*) rInput_B:REAL; (* Used in the visualization as user input variable*) stInfo : STRING; (* Informs about the user input via the edit control field; String gets composed by method 'VariableWritten; Result is displayed in the lower rectangle of the visualization *) END_VAR VAR inst : POU; bFirst : BOOL := TRUE; END_VAR IF bFirst THEN bFirst := FALSE; VisuElems.Visu_Globals.g_VisuEventManager.SetEditBoxEventHandler(inst); (* Call of method VariableWritten *) END_IF
Mise en œuvre de POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IEditBoxInputHandler (* no further declarations, no implementation code *)
Méthode VariableWritten
affecté à POU
METHOD VariableWritten : BOOL (* provides some information always when an edit control field is closed in the visualization, that is a variable gets written by user input in one of the upper rectangles *) VAR_INPUT pVar : POINTER TO BYTE; varType : VisuElems.Visu_Types; iMaxSize : INT; pClient : POINTER TO VisuElems.VisuStructClientData; END_VAR // String stInfo, which will be displayed in the lower rectangle, is composed here PLC_PRG.stInfo := 'Variable written; type: '; PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, INT_TO_STRING(varType)); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', adr: '); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(pVar)); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', by: '); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, SEL(pClient^.globaldata.clienttype = VisuElems.Visu_ClientType.Targetvisualization,'other visu', 'targetvisu'));
Capture des événements du clavier
Lorsque l'utilisateur appuie et relâche la touche, un événement clavier est généré dans la visualisation. Vous pouvez capturer cet événement dans l'application comme suit :
Créer un bloc fonctionnel qui implémente l'interface
VisuElems.IKeyEventHandler
de la bibliothèqueVisuElemBase
.Transmettre l'instance au gestionnaire d'événements global
VisuElems.Visu_Globals.g_VisuEventManager
en appelant la méthodeSetKeyEventHandler
.
Une visualisation comporte un élément de sortie texte. Cet élément est un rectangle contenant le contenu de la variable texte. PLC_PRG.stInfo
sont imprimés. La variable texte contient des informations sur la dernière touche appuyée par l'utilisateur.
Propriétés du rectangle pour la sortie texte | |
| |
|
Mise en œuvre du programme PLC_PRG
PROGRAM PLC_PRG VAR_INPUT stInfo : STRING; END_VAR VAR inst : POU; bFirst : BOOL := TRUE; END_VAR IF bFirst THEN bFirst := FALSE; VisuElems.Visu_Globals.g_VisuEventManager.SetKeyEventHandler(inst); END_IF
Implémentation du bloc fonctionnel POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IKeyEventHandler (* no further declarations, no implementation code *)
Mise en œuvre de la méthode VariableWritten
du bloc fonctionnel POU
/// This method will be called after a key event is released. /// RETURN: /// TRUE - When the handler has handled this event and it should not be handled by someone else /// FALSE - When the event is not handled by this handler METHOD HandleKeyEvent : BOOL VAR_INPUT /// Event type. The value is true if a key-up event was released. bKeyUpEvent : BOOL; /// Key code dwKey : DWORD; /// Modifier. Possible values: /// VISU_KEYMOD_SHIFT : DWORD := 1; /// VISU_KEYMOD_ALT : DWORD := 2; /// VISU_KEYMOD_CTRL : DWORD := 4; dwModifiers : DWORD; /// Pointer to the client structure were the event was released pClient : POINTER TO VisuStructClientData; END_VAR VAR END_VAR PLC_PRG.stInfo := 'KeyEvent up: '; PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, BOOL_TO_STRING(bKeyUpEvent)); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', key: '); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(dwKey)); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', modifier: '); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, DWORD_TO_STRING(dwModifiers)); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, ', by: '); PLC_PRG.stInfo := CONCAT(PLC_PRG.stInfo, SEL(pClient^.globaldata.clienttype = VisuElems.Visu_ClientType.Targetvisualization,'other visu', 'targetvisu'));
Enregistrement des modifications de valeur des variables déclenchées par des événements d'entrée
Tous les éléments de visualisation qui modifient la valeur d'une variable par saisie utilisateur appellent l'interface IValueChangedListener
. Avec cette interface, les changements de valeur peuvent être enregistrés puis traités par programmation.
Avis
Exemple de projet pour capturer les modifications de variables via la saisie de l'utilisateur
L'exemple de projet enregistre les modifications de valeurs de variables déclenchées par la saisie de l'utilisateur dans la visualisation. Ce projet présente également l'implémentation de la méthode. ValueChanged
.
Implémenter un bloc fonctionnel (exemple :
POU
) qui implémente l'interfaceIValueChangedListener
.FUNCTION_BLOCK POU IMPLEMENTS VisuElems.IValueChangedListener
Dans l'arborescence des périphériques, le Valeur modifiée la méthode est insérée sous le bloc de fonction.
Dans un programme (exemple : PLC_PRG), implémenter le code IEC qui enregistre l'interface.
VisuElems.g_itfValueChangedListenerManager.AddValueChangedListener(itfValueChangedListener)
PLC_PRG obtient toutes les modifications de valeur au moyen de Valeur modifiée méthode.
Vous pouvez désormais enregistrer et traiter les modifications de valeur.
Capture des entrées sur les éléments avec des options d'entrée
Lorsqu'un utilisateur clique sur un élément réagissant à une saisie (par exemple, un rectangle avec une configuration de saisie), un événement est déclenché. Vous pouvez capturer cet événement dans l'application comme suit :
Créer un bloc fonctionnel qui implémente l'interface
VisuElems.IInputOnElementEventHandler
de la bibliothèqueVisuElemBase
.Transmettre l'instance au gestionnaire d'événements global
VisuElems.Visu_Globals.g_VisuEventManager
en appelant la méthodeSetInputOnElementEventHandler
.
Une visualisation comporte un rectangle qui réagit aux entrées. Par exemple, le basculement d'une variable a été configuré avec OnMouseDown
. Lorsque l'élément est cliqué par une souris ou une entrée tactile, un événement HandleInputOnElementEvent
est soulevé.
Implémentation de la fonction VisuInit
FUNCTION VisuInit : BOOL // Set the input on element event handler VisuElems.VisuElemBase.g_VisuEventManager.SetInputOnElementEventHandler(PLC_PRG.evInputOnElementEventHandler);
Implémentation du bloc fonctionnel POU
FUNCTION_BLOCK POU IMPLEMENTS VisuElems.VisuElemBase.IInputOnElementEventHandler (* no further declarations, no implementation code *)
Mise en œuvre de la méthode HandleInputOnElementEvent
du bloc fonctionnel POU
(* This method will be called when an input on a visualization element was executed. RETURN: TRUE - When the handler has handled this event and it should not be handled by someone else FALSE - When the event is not handled by this handler*) METHOD HandleInputOnElementEvent : BOOL VAR_INPUT event : VisuElems.VisuStructInputOnElementEvent; END_VAR IF event.eType = VisuElems.VisuEnumInputOnElementType.MouseDown THEN SysProcessExecuteCommand('python D:\Beep.py', 0); END_IF
(* Content Beep.py: import winsound freq=500 duration=200 winsound.Beep(freq,duration) *)