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。我希望我的博文能真切地幫到需要的朋友。也請相關的大佬提出更好的建議。