PSF 有限狀態機的實現方法

2021-07-09 13:11:15 字數 819 閱讀 3098

1:switch case/if else設計方法

curevent = getevent();

curstate = getcurstate();

switch(curstate)

break; }

.... }

這種設計方法最簡單,通過一大堆判斷來處理,適合小規模的狀態切換流程,但如果規模擴大難以擴充套件和維護。

2:基於表結構的狀態機設計方法:建立相應的狀態表和動作查詢表,根據狀態表、事件、動作表定位相應的動作處理函式,執行完成後再進行狀態的切換。

乙個通用的狀態機處理模組的設計如下

/*狀態表註冊*/

void fsm_regist(fsm_t* pfsm,state_table_s* pstatetable)

/*狀態遷移*/

void fsm_movestate(fsm_t* pfsm,int state)

/*事件處理*/

void fsm_eventhandle(fsm_t* pfsm,int event),,

};/*狀態2的動作表*/

act_table_t state2acttable = ,

};/*狀態表*/

state_table_t fsmtable = ,,};

int main(int argc, _tchar* argv)

/*客戶端提供的狀態處理函式*/

void state1event1fun(void* pfsm)

void state1event3fun(void* pfsm)

void state2event2fun(void* pfsm)

有限狀態機

有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...

有限狀態機

以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...

有限狀態機

需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...