<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > LabVIEW程序設(shè)計模式(三)—消息隊列型狀態(tài)機模式

          LabVIEW程序設(shè)計模式(三)—消息隊列型狀態(tài)機模式

          作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏

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


          圖 8 自動販賣機背面板
          在UI Initial中,系統(tǒng)給標題欄和說明欄賦值,并將前面板的商品設(shè)置為不可購買狀態(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í)行相應(yīng)的狀態(tài)。該分支比較復雜,當檢測到第0個按鈕被按下時(即1USD按鈕),販賣機中的貨幣值應(yīng)該加一,同時需要判斷是否達到了交易條件(即進入CheckMoney狀態(tài))。其它的狀態(tài)可以執(zhí)行相應(yīng)的代碼即可,這里不再重復解釋。


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

          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();