LabVIEW程序設計模式(三)—消息隊列型狀態(tài)機模式
- 第一類:Initial
- UI Initial:前面板界面的初始化。
- Data Initial:數(shù)據(jù)的初始化。
- 第二類:System
- Idle(Default):空閑狀態(tài)。
- CheckMoney:販賣機中的剩余錢數(shù)和剩余的貨物數(shù)以決定交易是否成功。
- Exit:退出程序。
圖 8 自動販賣機背面板
在UI Initial中,系統(tǒng)給標題欄和說明欄賦值,并將前面板的商品設置為不可購買狀態(tài),因為在初始化時還沒有完成投幣動作。如圖 9所示。
圖 9 UI Initial分支
在Data Initial中包含兩個共享的數(shù)據(jù):Money和GState,前者表示販賣機中剩余的幣值,初始化值為0;而后者表示販賣機中各個商品剩余的數(shù)量,初始化值為20。數(shù)據(jù)使用移位寄存器傳遞以便于在各個case分支中共享和使用,如圖 10所示。
圖 10 Data Initial分支
CheckMoney分支主要是為了防止不合法的交易(如投入的幣值不足或商品數(shù)量不足),如圖 11所示。
圖 11 CheckMoney分支
當程序運行到Exit分支時,將停止循環(huán)并退出程序,如圖 12所示。
圖 12 Exit分支
Idle分支用來監(jiān)控前面板各個按鈕控件的變化并執(zhí)行相應的狀態(tài)。該分支比較復雜,當檢測到第0個按鈕被按下時(即1USD按鈕),販賣機中的貨幣值應該加一,同時需要判斷是否達到了交易條件(即進入CheckMoney狀態(tài))。其它的狀態(tài)可以執(zhí)行相應的代碼即可,這里不再重復解釋。
圖 13 Idle分支
從本例可以看出,相比基本狀態(tài)機而言,盡管程序的復雜度增加了,但是在構建大型的應用程序時也更加地健壯,代碼也易于維護和查看。
評論