新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LabVIEW程序設計模式(三)—消息隊列型狀態機模式

        LabVIEW程序設計模式(三)—消息隊列型狀態機模式

        作者: 時間:2017-01-09 來源:網絡 收藏

        1. 第一類:Initial
        1. UI Initial:前面板界面的初始化。
        2. Data Initial:數據的初始化。
        1. 第二類:System
        1. Idle(Default):空閑狀態。
        2. CheckMoney:販賣機中的剩余錢數和剩余的貨物數以決定交易是否成功。
        3. Exit:退出程序。
        程序開始運行時進入UI Initial和Data Initial狀態,完成初始化操作。從圖中可以看出系統采用數組函數處理消息隊列。


        圖 8 自動販賣機背面板
        在UI Initial中,系統給標題欄和說明欄賦值,并將前面板的商品設置為不可購買狀態,因為在初始化時還沒有完成投幣動作。如圖 9所示。


        圖 9 UI Initial分支
        在Data Initial中包含兩個共享的數據:Money和GState,前者表示販賣機中剩余的幣值,初始化值為0;而后者表示販賣機中各個商品剩余的數量,初始化值為20。數據使用移位寄存器傳遞以便于在各個case分支中共享和使用,如圖 10所示。


        圖 10 Data Initial分支
        CheckMoney分支主要是為了防止不合法的交易(如投入的幣值不足或商品數量不足),如圖 11所示。


        圖 11 CheckMoney分支
        當程序運行到Exit分支時,將停止循環并退出程序,如圖 12所示。


        圖 12 Exit分支
        Idle分支用來監控前面板各個按鈕控件的變化并執行相應的狀態。該分支比較復雜,當檢測到第0個按鈕被按下時(即1USD按鈕),販賣機中的貨幣值應該加一,同時需要判斷是否達到了交易條件(即進入CheckMoney狀態)。其它的狀態可以執行相應的代碼即可,這里不再重復解釋。


        圖 13 Idle分支
        從本例可以看出,相比基本狀態機而言,盡管程序的復雜度增加了,但是在構建大型的應用程序時也更加地健壯,代碼也易于維護和查看。

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 黄平县| 如东县| 搜索| 西和县| 德惠市| 陵水| 陕西省| 沭阳县| 米易县| 江华| 墨江| 德安县| 内江市| 长治县| 海盐县| 广东省| 灵台县| 怀柔区| 松江区| 永城市| 穆棱市| 绥芬河市| 淮安市| 漾濞| 宝兴县| 通城县| 新乐市| 康定县| 东乌珠穆沁旗| 道孚县| 兴和县| 勐海县| 东光县| 栖霞市| 安宁市| 山西省| 凌海市| 萍乡市| 潮安县| 赫章县| 自治县|