确保事件结构能在任何时候处理发生的事件
- 更新时间2025-08-27
- 阅读时长3分钟
LabVIEW在运行或预备运行时,对事件进行排序。当数据流允许结构执行时,事件结构将开始处理排队事件。LabVIEW甚至可以在事件结构等待处理事件之前产生事件。
只要VI在运行LabVIEW就将事件排在任务队列中,LabVIEW在数据流之后将事件入队列会使事件结构停止运行。例如,包含事件结构的循环可能在VI继续运行时停止执行。要使每个排队事件都被处理,应设计VI在事件结构停止执行之后立即停止运行。
注意 如果没有事件结构立即处理某一事件且启用了前面板锁定,该VI的用户界面将不响应任何操作。如果发生这种情况,单击中止按钮停止VI运行。右键单击事件结构并取消勾选编辑事件对话框中的锁定前面板直至本事件分支完成复选框可禁用前面板锁定。过滤事件则不能关闭前面板锁定。
使用While循环以便事件结构处理每一个事件
在 While循环中放置事件结构,事件不再发生时While循环停止。例如,在下列程序框图中,事件结构在While循环之外,前面板被数值改变分支锁定。
如改变数值控件的值,即产生一个事件。事件结构执行一次,并处理“值改变”事件。如再次改变数值控件的值,就再发生一个事件,因为启用了前面板锁定,用户界面将被锁定。事件结构已经执行了一次,因为不在While循环内,所以事件结构不能再次执行从而处理第二个事件。如单击停止布尔控件,停止While循环和VI。VI不会停止,因为程序框图还没有处理第二个事件。单击停止布尔控件,LabVIEW不会处理事件直到程序框图开始处理该事件。将事件结构放在While循环之中,即可避免上述情况。
避免使用条件结构决定事件结构处理事件的时间
避免在条件结构中放置事件结构。例如,在下列程序框图中,事件结构在While循环之内,前面板被数“值改变”分支锁定。
单击获取值输入控件,前面板无限锁定。连线至条件结构的False布尔常量可阻止事件结构在True分支中处理事件。由于事件启用了面板锁定,前面板等待事件结构,但数据流阻止事件结构处理事件。如禁用该应用程序的前面板锁定并单击获取值输入控件,前面板将响应操作并在按下停止按钮后结束。但数值不会增加,因为事件结构仍然无法执行事件处理。