LabVIEW暂停while循环


LuoBeice

自学LabVIEW遇到的一个问题:如何暂停while循环?

听起来好像很简单,但是我还是没有一个好法子,互联网是个好东西。在下面连接中我找到了相关的答案:

https://bbs.elecfans.com/m/jishu_1461000_1_2.html。居然还用到了状态机(我都还没自学到状态机)。不过程序框图还是好理解的。

下图是网友给出的答案:

思路:状态机,点击暂停,停止while循环,使用移位寄存器保存数据,进入等待状态,点击继续后,重新开始进入while循环,但因之前数据保存在移位寄存器中,故可以视为之前的while循环。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我认为网友的思路很巧妙:

1.利用状态机的思想,利用移位寄存器更新每次外层循环的值,根据内容选择不同的条件分支。

2.利用了“首次调用”的函数。该函数第一次被调用时为“真”,再次调用就是“假”。用来判断里层循环是否是“暂停“过。

3.未赋初值的移位寄存器。用以保存“暂停“时的数据。巧妙的用法,从前面板来看,看似循环没有断,但实际上循环却是断过一次了。

看完之后,我个人认为上述程序还有改进之处:

1.上述程序暂停之后只能按“继续“按钮才能继续。

2.上述程序停止外层循环停止不了(接线端子为“假“常量),我想添加一个”停止“按钮来停止整个程序。

以下是我改进之后的程序图:

程序框图需要的几点说明:

1.我上篇博客写到了while循环中停止按钮的使用注意事项。在这个程序框图中,添加“停止“按钮值改变事件分支时,要取消勾选”锁定前面板…“的选项。不然程序会锁死。

2.“假“分支下面也不再是一个while循环一直等待”继续“按钮按下了,而是一个等待”继续“按钮值改变的事件结构,这样就可以不断等待”继续“按钮按下的同时,也可以等待”停止“按钮按下。

我是LuoBeice,正在自学LabVIEW。我希望我的博文能真切地帮到需要的朋友。也请相关的大佬提出更好的建议。