之前写过一篇状态机的实用文章,很多朋友说有几个地方有点难度不易理解,今天给大家换种简单写法,使用函数指针的方法实现状态机。
状态机简介
有限状态机FSM是有限个状态及在这些状态之间的转移和动作等行为的数学模型,是一种逻辑单元内部的高效编程方法,可以根据不同状态或者消息类型进行相应的处理逻辑,使得程序逻辑清晰易懂。
函数指针实现FSM
使用函数指针实现FSM可以分为3个步骤
-
建立相应的状态表和动作查询表
-
根据状态表、事件、动作表定位相应的动作处理函数
-
执行完成后再进行状态的切换
代码实现步骤
-
定义状态数据的枚举类型
-
typedef enum {
-
state_1=
1,
-
state_2,
-
state_3,
-
state_4
-
}State;
-
定义事件的枚举类型
-
typedef enum{
-
event_1=
1,
-
event_2,
-
event_3,
-
event_4,
-
event_5
-
}EventID;
-
定义状态表的数据类型
-
typedef
struct
-
{
-
int event;
//事件
-
int CurState;
//当前状态
-
void (*eventActFun)();
//函数指针
-
int NextState;
//下一个状态
-
}S
转载:https://blog.csdn.net/u012846795/article/details/109089158
查看评论