有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)及執(zhí)行方法
【專利摘要】一種有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)包括引擎單元、存儲(chǔ)單元及執(zhí)行單元。引擎單元用于接收輸入事件。存儲(chǔ)單元用于存儲(chǔ)有限狀態(tài)機(jī)的當(dāng)前狀態(tài)以及狀態(tài)轉(zhuǎn)移表。執(zhí)行單元用于從存儲(chǔ)單元中獲取有限狀態(tài)機(jī)的當(dāng)前狀態(tài),并根據(jù)引擎單元提供的輸入事件以及存儲(chǔ)單元中存儲(chǔ)的狀態(tài)轉(zhuǎn)移表獲取當(dāng)前狀態(tài)機(jī)要轉(zhuǎn)移的下一狀態(tài)機(jī)以及使用獲取的下一狀態(tài)機(jī)更新有限狀態(tài)機(jī)的當(dāng)前狀態(tài)。所述狀態(tài)轉(zhuǎn)移表包括N層狀態(tài)機(jī),上層狀態(tài)機(jī)包括若干相斥的下層狀態(tài)機(jī),下層狀態(tài)機(jī)是通過繼承上層狀態(tài)機(jī)而獲得,下層狀態(tài)機(jī)設(shè)置有進(jìn)入其所繼承的上層狀態(tài)機(jī)的接口模塊。N層狀態(tài)機(jī)中的每個(gè)狀態(tài)機(jī)只有一個(gè)實(shí)例,只處理與該實(shí)例直接關(guān)聯(lián)的輸入事件。本發(fā)明還提供了一種有限狀態(tài)機(jī)的執(zhí)行方法。
【專利說明】有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)及執(zhí)行方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及有限狀態(tài)機(jī),特別涉及有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)及執(zhí)行方法。
【背景技術(shù)】
[0002]有限狀態(tài)機(jī)具有有限個(gè)狀態(tài),一般包括狀態(tài)及狀態(tài)之間的轉(zhuǎn)移關(guān)系。在有限狀態(tài)機(jī)的系統(tǒng)開發(fā)中,狀態(tài)之間的轉(zhuǎn)移根據(jù)當(dāng)前狀態(tài)及當(dāng)前的輸入事件設(shè)定相應(yīng)的條件語句而實(shí)現(xiàn)。如此,當(dāng)系統(tǒng)包括大量的狀態(tài)時(shí),各個(gè)狀態(tài)在轉(zhuǎn)移過程中相互交叉,相互影響,導(dǎo)致系統(tǒng)設(shè)計(jì)越來越復(fù)雜,使得系統(tǒng)難以維護(hù)和擴(kuò)展。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明提供了一種易于維護(hù)和擴(kuò)展的有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)及執(zhí)行方法。
[0004]一種有限狀態(tài)機(jī)的執(zhí)行系統(tǒng),所述有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)包括:引擎單元,用于接收輸入事件,作為有限狀態(tài)機(jī)的觸發(fā)事件;存儲(chǔ)單元,用于存儲(chǔ)有限狀態(tài)機(jī)的當(dāng)前狀態(tài)以及狀態(tài)轉(zhuǎn)移表;執(zhí)行單元,用于從存儲(chǔ)單元中獲取有限狀態(tài)機(jī)的當(dāng)前狀態(tài),并根據(jù)引擎單元提供的輸入事件以及存儲(chǔ)單元中存儲(chǔ)的狀態(tài)轉(zhuǎn)移表獲取當(dāng)前狀態(tài)機(jī)要轉(zhuǎn)移的下一狀態(tài)機(jī)以及根據(jù)獲取的下一狀態(tài)機(jī)更新有限狀態(tài)機(jī)的當(dāng)前狀態(tài);所述狀態(tài)轉(zhuǎn)移表包括N層狀態(tài)機(jī),上層狀態(tài)機(jī)包括若干相斥的下層狀態(tài)機(jī),屬于同一上層狀態(tài)機(jī)的若干個(gè)下層狀態(tài)機(jī)是通過繼承該上層狀態(tài)機(jī)而獲得,下層狀態(tài)機(jī)設(shè)置有進(jìn)入其所繼承的上層狀態(tài)機(jī)的接口模塊,使得下層狀態(tài)機(jī)可以將消息傳遞給其繼承的上層狀態(tài)機(jī),N層狀態(tài)機(jī)中的每個(gè)狀態(tài)機(jī)只有一個(gè)實(shí)例,只處理與該實(shí)例直接關(guān)聯(lián)的輸入事件,N層中的狀態(tài)機(jī)層在接收到與其并無直接聯(lián)系的輸入事件時(shí),通過接口模塊將該輸入事件傳送至上層的狀態(tài)機(jī)處理,如上層的狀態(tài)機(jī)與該輸入事件也不直接關(guān)聯(lián),則上層的狀態(tài)機(jī)通過其接口模塊將該輸入事件傳送至更上層的狀態(tài)機(jī),直至傳送至處理該輸入事件的狀態(tài)機(jī)。
[0005]一種有限狀態(tài)機(jī)的執(zhí)行方法,包括步驟:接收輸入事件,作為有限狀態(tài)機(jī)的觸發(fā)事件;獲取有限狀態(tài)機(jī)的當(dāng)前狀態(tài),并根據(jù)引擎單元提供的輸入事件以及一狀態(tài)轉(zhuǎn)移表,獲取當(dāng)前狀態(tài)機(jī)要轉(zhuǎn)移的下一狀態(tài)機(jī),所述狀態(tài)轉(zhuǎn)移表包括N層狀態(tài)機(jī),上層狀態(tài)機(jī)包括若干相斥的下層狀態(tài)機(jī),屬于同一上層狀態(tài)機(jī)的若干個(gè)下層狀態(tài)機(jī)是通過繼承該上層狀態(tài)機(jī)而獲得,下層狀態(tài)機(jī)設(shè)置有進(jìn)入其所繼承的上層狀態(tài)機(jī)的接口模塊,使得下層狀態(tài)機(jī)可以將消息傳遞給其繼承的上層狀態(tài)機(jī),N層狀態(tài)機(jī)中的每個(gè)狀態(tài)機(jī)只有一個(gè)實(shí)例,只處理與該實(shí)例直接關(guān)聯(lián)的輸入事件,N層中的狀態(tài)機(jī)層在接收到與其并無直接聯(lián)系的輸入事件時(shí),通過接口模塊將該輸入事件傳送至上層的狀態(tài)機(jī)處理,如上層的狀態(tài)機(jī)與該輸入事件也不直接關(guān)聯(lián),則上層的狀態(tài)機(jī)通過其接口模塊將該輸入事件傳送至更上層的狀態(tài)機(jī),直至傳送至處理該輸入事件的狀態(tài)機(jī);根據(jù)獲取的下一狀態(tài)機(jī)更新有限狀態(tài)機(jī)的當(dāng)前狀態(tài)。
[0006]上述有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)及執(zhí)行方法在刪除某狀態(tài)機(jī)時(shí)只需刪除該狀態(tài)機(jī)即可,并不影響其他狀態(tài)機(jī)的設(shè)置,而在建立新的狀態(tài)機(jī)時(shí),只需建立該新的狀態(tài)機(jī)及該新的狀態(tài)機(jī)與對(duì)應(yīng)的上層狀態(tài)機(jī)之間的繼承關(guān)系即可,易于維護(hù)和擴(kuò)展。
【專利附圖】
【附圖說明】
[0007]圖1為一實(shí)施方式中有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)的模塊圖。
[0008]圖2為圖1中的狀態(tài)轉(zhuǎn)移表的示意圖。
[0009]圖3為一實(shí)施方式中有限狀態(tài)機(jī)的執(zhí)行方法的流程圖。
[0010]主要元件符號(hào)說明
【權(quán)利要求】
1.一種有限狀態(tài)機(jī)的執(zhí)行系統(tǒng),所述有限狀態(tài)機(jī)的執(zhí)行系統(tǒng)包括: 引擎單元,用于接收輸入事件,作為有限狀態(tài)機(jī)的觸發(fā)事件; 存儲(chǔ)單元,用于存儲(chǔ)有限狀態(tài)機(jī)的當(dāng)前狀態(tài)以及狀態(tài)轉(zhuǎn)移表; 執(zhí)行單元,用于從存儲(chǔ)單元中獲取有限狀態(tài)機(jī)的當(dāng)前狀態(tài),并根據(jù)引擎單元提供的輸入事件以及存儲(chǔ)單元中存儲(chǔ)的狀態(tài)轉(zhuǎn)移表獲取當(dāng)前狀態(tài)機(jī)要轉(zhuǎn)移的下一狀態(tài)機(jī)以及根據(jù)獲取的下一狀態(tài)機(jī)更新有限狀態(tài)機(jī)的當(dāng)前狀態(tài);其特征在于: 所述狀態(tài)轉(zhuǎn)移表包括N層狀態(tài)機(jī),上層狀態(tài)機(jī)包括若干相斥的下層狀態(tài)機(jī),屬于同一上層狀態(tài)機(jī)的若干個(gè)下層狀態(tài)機(jī)是通過繼承該上層狀態(tài)機(jī)而獲得,下層狀態(tài)機(jī)設(shè)置有進(jìn)入其所繼承的上層狀態(tài)機(jī)的接口模塊,使得下層狀態(tài)機(jī)可以將消息傳遞給其繼承的上層狀態(tài)機(jī),N層狀態(tài)機(jī)中的每個(gè)狀態(tài)機(jī)只有一個(gè)實(shí)例,只處理與該實(shí)例直接關(guān)聯(lián)的輸入事件,N層中的狀態(tài)機(jī)層在接收到與其并無直接聯(lián)系的輸入事件時(shí),通過接口模塊將該輸入事件傳送至上層的狀態(tài)機(jī)處理,如上層的狀態(tài)機(jī)與該輸入事件也不直接關(guān)聯(lián),則上層的狀態(tài)機(jī)通過其接口模塊將該輸入事件傳送至更上層的狀態(tài)機(jī),直至傳送至處理該輸入事件的狀態(tài)機(jī)。
2.一種有限狀態(tài)機(jī)的執(zhí)行方法,包括步驟: 接收輸入事件,作為有限狀態(tài)機(jī)的觸發(fā)事件; 獲取有限狀態(tài)機(jī)的當(dāng)前狀態(tài),并根據(jù)引擎單元提供的輸入事件以及一狀態(tài)轉(zhuǎn)移表,獲取當(dāng)前狀態(tài)機(jī)要轉(zhuǎn)移的下一狀態(tài)機(jī),所述狀態(tài)轉(zhuǎn)移表包括N層狀態(tài)機(jī),上層狀態(tài)機(jī)包括若干相斥的下層狀態(tài)機(jī),屬于同一上層狀態(tài)機(jī)的若干個(gè)下層狀態(tài)機(jī)是通過繼承該上層狀態(tài)機(jī)而獲得,下層狀態(tài)機(jī)設(shè)置有進(jìn)入其所繼承的上層狀態(tài)機(jī)的接口模塊,使得下層狀態(tài)機(jī)可以將消息傳遞給其繼承的上層狀態(tài)機(jī),N層狀態(tài)機(jī)中的每個(gè)狀態(tài)機(jī)只有一個(gè)實(shí)例,只處理與該實(shí)例直接關(guān)聯(lián)的輸入事件,N層中的狀態(tài)機(jī)層在接收到與其并無直接聯(lián)系的輸入事件時(shí),通過接口模塊將該輸入事件傳送至上層的狀態(tài)機(jī)處理,如上層的狀態(tài)機(jī)與該輸入事件也不直接關(guān)聯(lián),則上層的狀態(tài)機(jī)通過其接口模塊將該輸入事件傳送至更上層的狀態(tài)機(jī),直至傳送至處理該輸入事件的狀態(tài)機(jī); 根據(jù)獲取的下一狀態(tài)機(jī)更新有限狀態(tài)機(jī)的當(dāng)前狀態(tài)。
【文檔編號(hào)】G06F9/44GK103513971SQ201210204651
【公開日】2014年1月15日 申請(qǐng)日期:2012年6月20日 優(yōu)先權(quán)日:2012年6月20日
【發(fā)明者】章國(guó)全, 王登勇 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司