为了和用户交互,程序设计时经常要捕获用户的行为来触发相应的事件,一般采用的是在循环中嵌入事件结构如下图所示,发现(1)如果一直 没有触发事件,则无法停止循环?(2)按下停止按钮后,在运行完当次循环后还会循环一次?
针对这个问题搜索到了如下两篇文章,解释得很清楚,非常感谢。
http://www.eefocus.com/csxcs366/blog/11-01/202294_e0684.html
https://blog.youkuaiyun.com/ap0108220/article/details/16842267
总结来说为以下几点:
- 事件结构原理: 等待事件发生--->执行动作。程序会在设定的超时时间内等待事件发生,如果达到超时时间设定值则不等待,上图中,没有设置超时时间,所以程序会一直等待,无法停止。
- labview中的循环是do---while形式的,但又不同于c中的循环结构的执行顺序(循环体执行完毕后,判断是否能进行下次循环),labview是数据流驱动的,当次循环体的执行和下次循环条件的判断是同步开始的,为解决该问题,可以(A)利用顺序结构把循环条件的判断置于处理事件程序的后面(B)设置超时时间,添加超时事件分支,并将循环条件判定置于该分支中。
顺着前辈的博客找到了另外两个比较好的连接,谢谢。
《LabVIEW 编程思想(第2版)传送门》https://blog.youkuaiyun.com/xelloq/article/details/45220385
LabVIEW--北方客栈提到的书籍: LabVIEW 编程样式;软件工程方法在LabVIEW中的应用
;https://www.labview365.com/labview19987199942641535821349206528833521mdashmdash2772165289.html