包含接口(示例“IKeyEventHandler”)
要求
- 创建一个标准项目并选择 CODESYS ControlWin V3 作为设备。
- 向应用程序添加“可视化”。
- 可视化管理器会自动添加到项目中。
- 在库管理器中将库 VisuElemBase 添加为顶级库。

- 通过扫描网络连接目标系统。

创建事件处理程序
- 创建一个名为 EventHandler 的新 FB 并实现接口 IKeyEventHandler 。

使用 FB 自动创建方法“HandleKeyEvent”:

- 将 UDINT 类型的输出变量添加到 EventHandler:
声明
FUNCTION_BLOCK EventHandler IMPLEMENTS IKeyEventHandler
VAR_INPUT
END_VAR
VAR_OUTPUT
udiKeyDownCount : UDINT;
END_VAR
VAR
END_VAR
- 编辑方法 HandleKeyEvent ,使计数器仅在按下某个键时递增:
声明
{warning 'add method implementation '}
(* 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
(* The event type. The value is true if a key up event was released.*)
bKeyUpEvent : BOOL;
(* The key code*)
dwKey : DWORD;
(* The modifiers. Possible values are:
VISU_KEYMOD_SHIFT : DWORD := 1;
VISU_KEYMOD_ALT : DWORD := 2;
VISU_KEYMOD_CTRL : DWORD := 4;*)
dwModifiers : DWORD;
(* A pointer to the client structure were tje event was released*)
pClient : POINTER TO VisuStructClientData;
END_VAR
实现
IF bKeyUpEvent THEN
THIS^.udiKeyDownCount := THIS^.udiKeyDownCount + 1;
END_IF
实例化事件处理程序
在 PLC_PRG 中创建一个 FB 实例,以及一个用于读取当前值的变量:
声明
PROGRAM PLC_PRG
VAR
instEvHandler : EventHandler;
udiCurValue : UDINT;
END_VAR
实现
udiCurValue := instEvHandler.udiKeyDownCount;
将 EventHandler 分配给可视化
版本 < V3.5.SP10
在旧版本中,以下方法是不可能的,因为无法从可视化管理器分配程序: 对于这些版本,必须在程序代码中进行初始化。
- 创建一个类型为 Program 的新 POU,并将其命名为 VisuInit。
- 编写如下程序代码:
声明
PROGRAM VisuInit
VAR
END_VAR
实现
VisuElems.VisuElemBase.g_VisuEventManager.SetKeyEventHandler(PLC_PRG.instEvHandler);
- 在可视化管理器中分配程序。

下载并启动项目
- 将项目下载到控制器并启动应用程序。
- 可视化自动启动。
- 单击可视化窗口以确保它是活动窗口。
- 每次在键盘上按下一个键时,变量 udiCurValue 递增 1。
