• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      層次狀態(tài)機(jī)在數(shù)字對(duì)講機(jī)中的應(yīng)用與實(shí)現(xiàn)

      2019-10-17 09:19:09呂金華
      無線互聯(lián)科技 2019年13期
      關(guān)鍵詞:對(duì)講機(jī)狀態(tài)

      呂金華

      摘? ?要:文章闡述數(shù)字對(duì)講機(jī)系統(tǒng)的狀態(tài)管理設(shè)計(jì)方案,著重描述了層次狀態(tài)機(jī)的原理與實(shí)現(xiàn),闡述了其功能與特點(diǎn)。

      關(guān)鍵詞:狀態(tài);層次狀態(tài)機(jī);對(duì)講機(jī)

      對(duì)講機(jī)手持終端隨著信令的引入,增加了大量的功能,從模擬對(duì)講機(jī)到數(shù)字對(duì)講機(jī)的過渡,從while大循環(huán)到操作系統(tǒng)的引入,系統(tǒng)越來越龐大,對(duì)講機(jī)的狀態(tài)越來越多。這是由于大量地使用了相互關(guān)聯(lián)的條件編碼,導(dǎo)致系統(tǒng)復(fù)雜且不容易理解。如果能消除這些條件分支的一部分,代碼就會(huì)更容易理解和測(cè)試,并且減少代碼相互關(guān)聯(lián)的分支,使得代碼呈數(shù)量級(jí)減少。因此,引入狀態(tài)來管理復(fù)雜的交互系統(tǒng)是很重要的。

      不妨從以下幾方面一起探討狀態(tài)管理的實(shí)現(xiàn)。

      1? ? 方案背景

      數(shù)字對(duì)講機(jī)系統(tǒng)是交互狀態(tài)較多的系統(tǒng),狀態(tài)存在內(nèi)嵌情況,對(duì)講機(jī)的整體狀態(tài)調(diào)度所使用的是平面狀態(tài)機(jī)(Plane State Machine,F(xiàn)SM),可以實(shí)現(xiàn)功能派發(fā),而掃描功能內(nèi)部就使用了層次狀態(tài)機(jī)(Hierarchical State Machine,HSM)實(shí)現(xiàn)功能的嵌套情況[1]。實(shí)際上,HSM與FSM是可以相互轉(zhuǎn)換的,可以把HSM展開用FSM來實(shí)現(xiàn),而FSM也可以看作是單層的HSM,若在嵌套情況較多的系統(tǒng)中,用FSM實(shí)現(xiàn)會(huì)較為龐大。綜合以上的方案比較,建議使用層次狀態(tài)機(jī)框架(Hierarchical State Machine frame,HSM frame)實(shí)現(xiàn)數(shù)字對(duì)講機(jī)系統(tǒng)的狀態(tài)管理設(shè)計(jì)。

      2? ? 狀態(tài)管理設(shè)計(jì)實(shí)現(xiàn)

      HSM是對(duì)狀態(tài)行為建模最直觀的方法,也是實(shí)現(xiàn)事件驅(qū)動(dòng)系統(tǒng)的一種很好的形式方法[2]。主要用來描述對(duì)象、子系統(tǒng)、系統(tǒng)的生命周期。通過層次狀態(tài)機(jī)可以了解到一個(gè)對(duì)象能到達(dá)的所有狀態(tài)以及對(duì)象收到的事件對(duì)對(duì)象狀態(tài)的影響等。狀態(tài)機(jī)指定對(duì)象的行為以及不同狀態(tài)行為的差異。同時(shí),它還能說明事件是如何改變一個(gè)對(duì)象的狀態(tài)。因此,非常適用于軟件開發(fā)。

      層次狀態(tài)機(jī)的事件處理算法簡(jiǎn)單描述如下:(1)首先,在當(dāng)前狀態(tài)以及其祖先狀態(tài)的狀態(tài)事件表中搜索匹配事件,如果搜索到,保存操作以及目的狀態(tài)標(biāo)識(shí)。(2)在old棧中保存當(dāng)前狀態(tài)到根節(jié)點(diǎn)路徑,在new棧中保存目的狀態(tài)到根節(jié)點(diǎn)路徑。(3)將old棧中的頂層元素依次與new棧的頂層元素匹配,如果匹配則都出棧,不匹配,停止。(4)當(dāng)前的old棧中節(jié)點(diǎn)即為該事件導(dǎo)致的退出狀態(tài),從棧底掃描到棧頂,依次執(zhí)行exit_func。(5)執(zhí)行以前保存的操作。(6)掃描new棧,從棧頂?shù)綏5滓来螆?zhí)行enter_func。(7)最后檢測(cè)目的狀態(tài)是否是葉節(jié)點(diǎn)狀態(tài),否,則依次進(jìn)入default_child節(jié)點(diǎn),并執(zhí)行enter_func。

      2.1? 狀態(tài)基本概念

      為便于理解,下面給出HSM中的相關(guān)概念。

      2.1.1? State(狀態(tài))

      就是一個(gè)系統(tǒng)在其生命周期中某一時(shí)刻的運(yùn)行情況,此時(shí),系統(tǒng)會(huì)執(zhí)行一些動(dòng)作,或者等待一些外部輸入。

      2.1.2? Guard(條件)

      狀態(tài)機(jī)對(duì)外部消息進(jìn)行響應(yīng)的時(shí)候,除了需要判斷當(dāng)前的狀態(tài),還要判斷跟這個(gè)狀態(tài)相關(guān)的一些條件是否成立。這種判斷稱為guard(條件)。guard通過允許或者禁止某些操作來影響狀態(tài)機(jī)的行為[3]。

      2.1.3? Event(事件)

      就是在一定的時(shí)間和空間上發(fā)生的對(duì)系統(tǒng)有意義的事情,它可以觸發(fā)狀態(tài)轉(zhuǎn)換。

      2.1.4? Action(動(dòng)作)

      當(dāng)一個(gè)Event被狀態(tài)機(jī)系統(tǒng)分發(fā)的時(shí)候,狀態(tài)機(jī)用Action(動(dòng)作)來進(jìn)行響應(yīng),比如修改一下變量的值、進(jìn)行輸入輸出、產(chǎn)生另外一個(gè)Event或者遷移到另外一個(gè)狀態(tài)等。

      2.1.5? Transition(遷移)

      從一個(gè)狀態(tài)切換到另一個(gè)狀態(tài)被稱為Transition(遷移)。引起狀態(tài)遷移的事件被稱為triggering event(觸發(fā)事件),或者簡(jiǎn)稱為trigger(觸發(fā))[4]。

      2.1.6? HSM

      層次狀態(tài)機(jī)主要用來描述對(duì)象、子系統(tǒng)、系統(tǒng)的生命周期。通過層次狀態(tài)機(jī)可以了解到一個(gè)對(duì)象能到達(dá)的所有狀態(tài)以及對(duì)象收到的事件對(duì)對(duì)象狀態(tài)的影響等。狀態(tài)機(jī)指定對(duì)象的行為以及不同狀態(tài)行為的差異。同時(shí),它還能說明事件是如何改變一個(gè)對(duì)象的狀態(tài)。因此,非常適用于軟件開發(fā)。

      層次狀態(tài)機(jī)較之經(jīng)典的平面狀態(tài)機(jī),最重要的改進(jìn)就是引入了層次式狀態(tài)。狀態(tài)層次嵌套的主要特性來自抽象與層次的結(jié)合。這是一種降低復(fù)雜性的傳統(tǒng)途徑,也就是軟件中的繼承。在面向?qū)ο笾?,類繼承概念描述了類和對(duì)象之間的關(guān)系。狀態(tài)嵌套允許子狀態(tài)繼承來自其超狀態(tài)的狀態(tài)行為,因此,它被稱為行為繼承。

      2.2? 層次狀態(tài)機(jī)的功能與特點(diǎn)

      狀態(tài)機(jī)所描述的行為不像傳統(tǒng)的數(shù)據(jù)處理,它完全是由事件驅(qū)動(dòng)的,事件能以任何順序、在任何時(shí)刻出現(xiàn),狀態(tài)機(jī)必須隨時(shí)準(zhǔn)備好處理這些事情。狀態(tài)機(jī)分平面式狀態(tài)機(jī)和層次式狀態(tài)機(jī),這里只用到層次式狀態(tài)機(jī)。

      如圖1所示:a中top為頂層狀態(tài),s1,s2為兩個(gè)獨(dú)立的狀態(tài),s21,s22為s2的子狀態(tài)。b為狀態(tài)機(jī)在代碼中的數(shù)據(jù)組織,在代碼中,每種狀態(tài)都對(duì)應(yīng)于一個(gè)結(jié)構(gòu)體,它里面有一個(gè)super指針,指向其超狀態(tài),top狀態(tài)的super指針為空指針,這樣就構(gòu)成了層次狀態(tài)機(jī)。

      利用層次狀態(tài)機(jī)的原理,適配到對(duì)講機(jī)系統(tǒng)中,把系統(tǒng)劃分為九個(gè)二級(jí)狀態(tài),分別是守候、接收、發(fā)射、省電、讀寫頻、遙斃、掃描、緊急報(bào)警、監(jiān)聽。若二級(jí)存在內(nèi)嵌狀態(tài)(即進(jìn)入了某種狀態(tài)后還需要回來繼續(xù)進(jìn)行原狀態(tài)的動(dòng)作),則進(jìn)一步劃分該狀態(tài)的子狀態(tài)。

      2.3? 基于數(shù)字對(duì)講機(jī)系統(tǒng)的狀態(tài)管理設(shè)計(jì)

      對(duì)講機(jī)狀態(tài)轉(zhuǎn)換過程由對(duì)講機(jī)狀態(tài)機(jī)控制,狀態(tài)機(jī)為層次狀態(tài)機(jī)(HSM),層次狀態(tài)機(jī)響應(yīng)外部事件,做出相應(yīng)的處理。應(yīng)用狀態(tài)機(jī)必須構(gòu)造狀態(tài)機(jī)。

      圖2構(gòu)造的對(duì)講機(jī)狀態(tài)機(jī)為其在代碼中的組織形式,每種狀態(tài)都對(duì)應(yīng)于一個(gè)結(jié)構(gòu)體,它里面有一個(gè)super指針,指向其超狀態(tài),其中,top為頂層狀態(tài),top狀態(tài)的super指針為空指針,另外,每個(gè)狀態(tài)還有一個(gè)指向該狀態(tài)的消息響應(yīng)函數(shù)指針hndlr,這樣就構(gòu)成了層次狀態(tài)機(jī)。

      狀態(tài)機(jī)運(yùn)行時(shí)會(huì)不斷地檢測(cè)自己的消息隊(duì)列里有沒有事件,如果有,則執(zhí)行當(dāng)前狀態(tài)下的事件響應(yīng)函數(shù),如果沒有發(fā)生狀態(tài)轉(zhuǎn)換,則流程結(jié)束,如果發(fā)生了狀態(tài)轉(zhuǎn)換,則將從當(dāng)前狀態(tài)一層一層退出到與目標(biāo)狀態(tài)共同的超狀態(tài)。每退出一層狀態(tài),都會(huì)響應(yīng)該層的退出事件,執(zhí)行退出事件響應(yīng)函數(shù),然后由該共同的超狀態(tài)一層層進(jìn)入到目標(biāo)狀態(tài),每進(jìn)入一層狀態(tài),都會(huì)響應(yīng)該層的進(jìn)入事件,執(zhí)行進(jìn)入事件響應(yīng)函數(shù),直到進(jìn)入目標(biāo)狀態(tài)為止[5]。

      各狀態(tài)需要提供的函數(shù)如下:

      (1)進(jìn)入狀態(tài)的初始化函數(shù)(ENTRY_EVT時(shí)執(zhí)行)。

      (2)退出狀態(tài)的清除函數(shù)(EXIT_EVT時(shí)執(zhí)行)。

      (3)監(jiān)聽條件函數(shù)(參看上文Guard的概念,不是必需提供的,這個(gè)判斷可以放在各狀態(tài)內(nèi)執(zhí)行,也可以放在狀態(tài)管理內(nèi)執(zhí)行)。

      3? ? 結(jié)語(yǔ)

      狀態(tài)管理的實(shí)現(xiàn)可以有多種方法,在數(shù)字對(duì)講機(jī)項(xiàng)目中,引入層次狀態(tài)機(jī)的思想實(shí)現(xiàn)狀態(tài)管理,其結(jié)構(gòu)清晰,層層進(jìn)入、層層退出的狀態(tài)遷移思想,使得狀態(tài)在遷移過程中各層次的進(jìn)入退出函數(shù)都得以執(zhí)行,保證了各狀態(tài)遷移路徑的正確性,增強(qiáng)了系統(tǒng)的穩(wěn)定性和可靠性。

      [參考文獻(xiàn)]

      [1] MIRO S,PAUL M.State-Oriented programming[C].San Diego:2007 Summer Computer Simulation Conference,2003.

      [2]MIRO S.嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì):實(shí)用狀態(tài)圖C_C++實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2004.

      [3]詹姆斯,艾娃,格拉迪.UML參考手冊(cè)[M].姚淑珍,譯.北京:機(jī)械工業(yè)出版社,2005.

      [4]吳繼華,王誠(chéng).設(shè)計(jì)與驗(yàn)證—Verilog.hdl[M].北京:人民郵電出版社,2006.

      [5]池元武.用狀態(tài)機(jī)原理進(jìn)行軟件設(shè)計(jì)[EB/OL].(2012-03-15)[2019-07-10].http://www.doc88.com/p-296208942779.html.

      Application and implementation of hierarchical state machine in digital interphone

      Lyu Jinhua

      (Guangzhou Haige Communications Group Incorporated Company, Guangzhou 510663, China)

      Abstract:This paper expounds the design scheme of state management for digital two-way-radio system, emphatically describes the principle and implementation of hierarchical state machine, and expounds its functions and characteristics.

      Key words:state; hierarchical state machine; two-way-radio

      猜你喜歡
      對(duì)講機(jī)狀態(tài)
      一種基于ResNet的車鉤狀態(tài)識(shí)別方法及其應(yīng)用
      幫助聾啞人士交流的“對(duì)講機(jī)”
      極端的狀態(tài)
      家用對(duì)講機(jī)的概述
      電子制作(2019年22期)2020-01-14 03:16:38
      狀態(tài)聯(lián)想
      淺析對(duì)講機(jī)技術(shù)狀態(tài)分類管理
      大科技(2016年17期)2016-07-12 09:02:35
      極度生存狀態(tài)下的人道主義
      熱圖
      家庭百事通(2016年3期)2016-03-14 08:07:17
      堅(jiān)持是成功前的狀態(tài)
      山東青年(2016年3期)2016-02-28 14:25:52
      耳機(jī)式對(duì)講機(jī)
      登封市| 清水河县| 来宾市| 曲阜市| 盐津县| 贡山| 绵阳市| 焦作市| 静乐县| 定西市| 教育| 三亚市| 历史| 景德镇市| 咸丰县| 勐海县| 平凉市| 上犹县| 威信县| 南汇区| 葵青区| 香港| 黔西| 安陆市| 玉树县| 屯昌县| 体育| 鲁甸县| 肇州县| 安多县| 保定市| 易门县| 武威市| 龙胜| 玉溪市| 星子县| 泗洪县| 闽清县| 横峰县| 盘锦市| 巴楚县|