labview從入門到出家8(進階篇)--簡單好用的狀態機


      labview的狀態機類似於一個軟件框架的基本單元,好的軟件框架和軟件思路采用一個好的狀態機,就如虎添翼了。這章給大家講一個本人常用的一個狀態機,基本上以前的項目都是建立在這個狀態機上完成的,當然網上也有很多很好用的狀態機,如JKI等。不過幾乎都大同小異,看大家習慣用哪種了。下面直接附上狀態機概述,大家可以參照着寫一個,或者在老曹資源上下載該狀態機,上面還有幾個我常用的輔助VI,如Excel存儲,界面延時顯示等,原創不易,請大家多多支持(下載)拉。(https://download.csdn.net/download/lao__cao/19024666?spm=1001.2014.3001.5503)

1、整體邏輯是這樣的,前面板上目前有三個基本按鍵,確定,取消,退出。運行程序時,邏輯從左到右。(1)先將前面板定位到0,0原點位置;(2)初始化事件處理列表以及數據列表;(3)開始默認狀態處於NAN事件上,然后執行50ms超時事件。超時事件一般用來處理常規邏輯,或者程序空置,等待響應其他事件。

2、這里附上事件先進先出 “NEXT”  VI的邏輯,方便大家編寫邏輯,也可以直接下載本博客上的狀態機資源,直接運行,高亮顯示加強理解。

 

​    

3、現在點擊前面板確定按鈕,觸發值改變事件。觸發后程序跳轉到事件結構中,我們可以直接在事件結構中處理數據,或者統一編程風格,所有處理事件都跳轉到外層的條件結構中處理。注意程序下方插入OK事件的操作,這里我們可以插入一個OK字符串,表示下一個條件結構中執行的事件是“OK”事件,也可以插入一個字符數組,數組的排序就是執行事件的順序,通過移位寄存器一一讀取並一一處理(不了解移位寄存器的可以看第6章),同時可以在下面插入該事件的數據“OK_Information”,跟隨事件一同轉移。這里的數據可以是字符,數值,簇,數組等,最后通過變體還原數據。如之前說的,變體相當於面向對象語言中的泛型。

 

執行OK事件,該事件處理邏輯為讀取OK事件的數據。

4、同樣的,添加取消事件還有退出事件,大家后續的功能可以往外層的條件結構和內層的事件結構逐漸增加,內層事件結構響應界面操作,外層條件結構實現處理邏輯。外層處理邏輯可以通過插入事件的方式,進行靈活的跳轉。大家前期先熟悉該狀態機,下一章用該狀態機實現串口助手的功能,加強理解。

 

Exit事件比較特殊,因為執行完Exit后我們要退出程序了。左下方執行退出程序時,在先進先出NEXT VI下做了一個比較,如果是EXIT事件,則將while循環置TRUE,退出程序。程序最右側有一個關閉前面板的動作,這個看大家的需求,可要可不要。

5、最后,附上項目的文件結構,新手可以參考一下

項目文件結構,Data放程序執行的相關信息和數據,File放置項目對應的文件,SubVis放置子VI,子VI內部分模塊文件,最后來一個Main VI。

 

如有講解不到位的地方請留言指正,大家一起學習一起提升。原創不易,一鍵三連拉!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM