新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LabVIEW程序設計模式(二)—基本狀態機模式

        LabVIEW程序設計模式(二)—基本狀態機模式

        作者: 時間:2017-01-09 來源:網絡 收藏
        狀態機是一種最為經典的程序設計模式,在LabVIEW 7.1(含)之前它幾乎統治了大部分的LabVIEW主程序。最基本的狀態機結構如圖 1所示。狀態是狀態機運行的經脈,在開始使用狀態機模式撰寫程序時需要將應用分為若干個狀態。下面以圖中的應用為例說明基本狀態機的使用。
        【應用1】
        前面板具有3個按鈕(Control)和1個波形顯示控件Chart(Indicator),功能分別是:
        1. 開始采集:Label是start,單擊后開始進行模擬數據采集程序(這里使用隨機數代替)。
        2. 關于:Label是dialog,單擊后彈出對話框以說明這個程序的版權、幫助等信息。
        3. 停止:Label是stop,單擊后停止程序的運行。
        4. Chart:用于顯示獲取的隨機數。
        這是一個非常簡單的應用,但是具有一定的代表性。根據要求,該應用至少包含以下5種狀態結構。
        1. Initial:初始化狀態;
        2. Idle:空閑狀態,用于響應各種用戶界面操作;
        3. acquire:采集狀態,用于持續模擬采集數據;
        4. about:用于彈出關于和幫助對話框;
        5. stop:停止狀態,退出循環并中止程序。

        1. 背面板

        1. 前面板
        圖 1 基本的狀態機結構背面板
        仔細分析圖中的基本狀態機,可以看出狀態始終貫穿整個應用程序,并由移位寄存器進行值的寄存和傳遞。當前狀態分支的結果將決定下一個狀態,如圖中的Idle狀態。在這個狀態中,程序將自動檢測前面板的三個按鈕是否被按下。如果start被按下,則進入acquire狀態;如果dialog被按下,則進入about狀態;如果stop被按下,則進入stop狀態;否則如果沒有任何按鈕被按下,則仍然進入當前的Idle狀態繼續檢測。
        在acquire狀態中,為了保證程序的重復采集使得下一個狀態仍然為acquire,但是這樣會導致程序無法停止(中斷采集)。于是需要在acquire狀態分支中加入stop的探測,如果stop被按下,則不再進入acquire狀態而直接進入stop狀態。
        從應用1可以看出,基本狀態機模式大體上能夠滿足主程序結構的需要。該模式能夠很好地使得應用程序的各個功能以狀態的方式有順序地執行,并且保證了程序的可讀性(以狀態圖的方式顯示清晰明了)和擴展性(日后只需要擴展狀態即可擴展相應的功能)。
        事例中使用的是“string”型結構來標記狀態,事實上也可以使用其它的數據類型替換,如ring、numeric或enum。從嚴格意義而言,ring并不屬于一種數據類型,它只是一種特殊的numeric性,其性質與numeric基本上一樣。盡管ring與enum控件從外觀上看是一樣的,如圖 2所示,但是它們實質上是不同的。主要體現為以下7點。

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁陵县| 灵宝市| 漠河县| 迁安市| 江油市| 扶余县| 崇信县| 奉节县| 浪卡子县| 娱乐| 宁武县| 阜新市| 西林县| 威远县| 新津县| 浦县| 衡阳市| 长乐市| 瑞安市| 合肥市| 阳高县| 镇坪县| 修武县| 西峡县| 满城县| 理塘县| 乌兰浩特市| 类乌齐县| 栾川县| 新民市| 邵阳市| 中宁县| 寻乌县| 越西县| 嘉定区| 潮州市| 犍为县| 铜川市| 沙田区| 陵水| 东海县|