新聞中心

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

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

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

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


圖 8 自動(dòng)販賣機(jī)背面板
在UI Initial中,系統(tǒng)給標(biāo)題欄和說(shuō)明欄賦值,并將前面板的商品設(shè)置為不可購(gòu)買狀態(tài),因?yàn)樵诔跏蓟瘯r(shí)還沒(méi)有完成投幣動(dòng)作。如圖 9所示。


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


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


圖 11 CheckMoney分支
當(dāng)程序運(yùn)行到Exit分支時(shí),將停止循環(huán)并退出程序,如圖 12所示。


圖 12 Exit分支
Idle分支用來(lái)監(jiān)控前面板各個(gè)按鈕控件的變化并執(zhí)行相應(yīng)的狀態(tài)。該分支比較復(fù)雜,當(dāng)檢測(cè)到第0個(gè)按鈕被按下時(shí)(即1USD按鈕),販賣機(jī)中的貨幣值應(yīng)該加一,同時(shí)需要判斷是否達(dá)到了交易條件(即進(jìn)入CheckMoney狀態(tài))。其它的狀態(tài)可以執(zhí)行相應(yīng)的代碼即可,這里不再重復(fù)解釋。


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

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


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

關(guān)閉