6.4 事件结构与程序界面-用户自定义事件
LabVIEW 自产的事件主要是指那些由用户对界面对象进行操作的事件,比如在某处点击鼠标,改变某个控件的值,以及程序自身状态变化(如“超时”)的事件。
果需要在程序中,在满足其它某种条件时也产生一个事件,就只能使用用户自定义事件了。
用户自定义事件是使用“创建用户事件”函数创建出来的事件。当需要抛出(指产生一个已经定义好的事件)一个用户自定义事件时,可以使用“产生用户事件”函数发出一个事件。程序抛出的用户自定义事件还可以携带自定义的某些数据。


一般的界面 VI 的程序框图会更接近下图所示:
程序框图的结构应该是越简单、越单一,越容易被人理解。

对于界面 VI 的程序框图而言,在循环事件结构外,应该只保留极少量必不可少的节点,其它的代码,统统移至循环事件结构内。其实,初始化和收尾完全可以被看作是两个自定义事件。需要时,发出事件,然后跳至事件结构中相应的分支去处理即可。
改进后的程序如下:

结构之外的唯一 VI 用于创建程序所需的自定义事件,比如 "初始化","结束" 这样的事件。它的程序框图如下:

实际界面程序中,往往不仅是“停止”按钮按下需要抛出“结束”事件。当用户点击了界面右上方的关闭窗口按钮,也需要按正常途径退出程序。也就是说,当“前面板关闭”事件发生后,程序也需要抛出一个“结束”事件。
主要是释放程序曾经创建或打开的各种资源,如销毁被创建的用户自定义事件、关闭打开的文件等等。最后,传 "真" 值给 while 循环的停止条件接线端,退出整个程序:

用户在抛出“用户事件”时,需要给这个事件指定一个“事件名”。循环事件结构捕获到这个事件后,跳入“用户事件”处理分支。在处理这个事件之前,首先查看一下“事件名”,然后再根据“事件名”对事件做不同的处理。

通用用户自定义事件的设计
一种扩展性更好的方案是,在程序中仅使用一个用户自定义事件,利用它的事件数据参数来区分事件的不同用途。
1自定义事件数据类型为一个簇,簇中包含两个元素:“事件名”和“事件数据”。
所以这个“事件数据”的类型可以使用变体

浙公网安备 33010602011771号