1.0 Labview中事件结构在while循环中使用注意事项(超时时间)
核心原则:LabVIEW是数据流驱动,但事件结构具有“独占性”
While循环会按顺序执行其中的每一个框架(即每个子图)。当执行到事件结构时,LabVIEW会停下来等待你预先设定的事件(如“超时”、“值改变”、“鼠标点击”等)发生,如果没有设置等待的超时时间,那么会一直处于等待中无法运行while循环中的其他代码。
一、事件结构未设置“超时”事件(即超时连接为-1)
这是一种不推荐的做法
执行过程:
While循环开始迭代。
执行到事件结构。
事件结构进入无限等待状态,直到你设定的某个事件发生(如用户点击按钮)。
在事件发生之前,程序会一直卡在事件结构这里。
结论:在这种情况下,事件结构外的代码在事件发生前永远没有机会执行。只有当一个事件被捕获并处理完后,循环才会完成一次迭代,外部的代码才会执行一次,然后循环立即又进入事件结构继续等待下一个事件。
二:事件结构设置了“超时”事件(例如,超时时间为100ms)
这是最常见和推荐的做法。
执行过程:
While循环开始迭代。
执行到事件结构。
事件结构开始等待,最多等待你设置的“超时”时间(如100ms)。
有两种可能:
A. 在100ms内,有指定事件发生(如用户点击按钮):则立刻执行对应事件的分支,执行完毕后,事件结构退出,While循环继续执行事件结构后面的代码。
B. 在100ms内,没有任何指定事件发生:则执行“超时”分支(通常为空或放一些后台任务),执行完毕后,事件结构退出,While循环继续执行事件结构后面的代码。
结论:在这种情况下,事件结构外的代码是肯定会执行的,只是执行的频率取决于超时时间。超时时间决定了循环的最小周期。
【举例】
图一、while循环无法停止(因一直在等待事件)
图2、Stop可正常停止的情况