事件结构
事件结构是一种事件驱动型的编程模式,它需要在外部事件触发的情况下才能触发程序的运行,如按钮被按下、鼠标移动等,当事件发生时,自动触发一段程序运行,即回调函数,类似于硬件中断,因此也节省了CPU资源。
基本构成:

静态事件
事件分类:
- 应用程序事件:主要是关于应用程序状态变化的一些事件,如超时、应用程序关闭等。
- Vl事件:反应当前VI状态变化的一些事件,如VI前面板是否关闭,是否选择了某个菜单。
- 动态事件:用于处理用户自定义的事件和程序运行中临时注册的事件。
- 窗格事件:反应窗格或分隔栏的一些状态变化的事件,如窗体大小变化、鼠标进入分隔栏等。
- 控件事件:这类事件最为频繁,用来处理控件状态的变化事件,如控件的值发生改变等。
按事件发生的时间分类
- 通知型事件:可以理解成事后事件,例如一个控件的值改变事件,操作系统首先监测到键盘或鼠标的变化,然后通知前面板,等LabVIEW自身改变了控件的值后,最后才产生“值改变”事件。
- 过滤型事件:可以理解成事前事件,在LabVIEW处理事件之前,首先将权力交给开发人员,来决定事件是否继续或终止。过滤型事件的名称以问号结束。
静态事件案例
案例:当鼠标进入数值输入控件时,改变其控件的文本背景颜色,否则2秒后其数值输入控件中的值自动加1。
-
在程序框图中放置while循环结构和事件结构,在前面板中放置数值输入控件和停止按钮。

-
添加事件分支,设置数值控件的事件为鼠标进入,再添加一个事件分支,设置停止按钮的事件为值改变,最后设置超时事件为2s。


-
在程序框图中,鼠标右键-应用程序控制-属性节点,转化为写入,然后与控件引用连接,接着点击属性-数值文本-文本颜色-背景色,鼠标右键-对话框与用户界面-颜色盒常量,最后将颜色盒常量与随机数相乘,连接到属性节点中。



-
设置停止事件和超时事件。


-
运行结果。


动态事件
动态事件只有注册之后才可以使用。

案例一
案例一:使用注册事件,当点击选中复选框按钮时,实现鼠标进入数值输入控件时文本背景颜色发生改变,当取消选中复选框按钮时,实现鼠标进入数值输入控件时文本背景颜色不会发生改变。
-
在前面板中,创建数值输出控件和停止按钮,然后鼠标右键-经典-经典布尔-系统复选框,选择复选框按钮;在程序框图中放置好while循环结构和事件结构,并设置好“停止”事件分支。


-
在程序框图中,鼠标右键-对话框与用户界面-事件-注册事件,选中数值控件,鼠标右键-创建-引用,将数值的引用与注册事件连接,然后选择其事件为鼠标进入。

-
鼠标选中while循环结构,然后添加移位寄存器,接着选中事件结构,鼠标右键-显示动态事件接线端,这时,再添加事件分支,可看到有动态事件。


-
然后在 <数值>:鼠标进入 的事件分支中,设置数值输入控件文本背景颜色变化的操作。

-
继续添加事件分支,设置复选框的事件为值改变,并在该事件中放置条件结构,最后设置复选框起始为选中状态,相应的设置如下图所示。



- 运行结果如下。


案例二
案例二:在案例一的基础上增加值改变的注册事件,当数值输入控件中的值发生改变时,则弹出窗口,显示数值控件中的值。
- 在注册事件的控件中往下拉,即可增加注册事件,并将事件修改为值改变即可。


- 添加事件分支,添加动态源为 <数值>: 值改变。

- 在程序框图中,鼠标右键-字符串-数值/字符串转换-数值至十进制数字符串转换,将其与新值连接起来,接着鼠标右键-对话框与用户界面-单按钮对话框,将其与数值至十进制数字符串转换连接。

- 运行结果如下。


用户事件
用户事件是一种特殊的动态事件,它是通过“创建用户事件”节点来创建的,而事件的产生是由开发人员在编程中决定何时产生此事件的,最后需要去销毁。

案例
案例:使用用户事件,当字符串中的值发生改变时,弹出对话框,并显示字符串。
- 创建一个字符串显示控件和停止按钮,并在程序框图中设置好“停止”事件分支。

- 在程序框图中,鼠标右键-对话框与用户界面-事件-创建用户事件,再放置注册事件,将其连接起来,最后连接到事件结构的动态事件接线端上。

- 添加事件分支,创建动态事件为 <字符串>: 用户事件,并创建单按钮对话框将其与字符串连接到一起。

- 添加事件分支,为 “字符串”: 值改变 事件,放置产生用户事件控件,并与新值和创建用户事件的接线端进行连接。
这样的目的是,当字符串中的值发生改变时,则进入到该事件分支中,触发产生用户事件,接着再进入到用户事件的分支中。

- 最后运行结束需要销毁注册事件和用户事件。

- 运行结果。

1万+





