# 状态机源码 **Repository Path**: guanmingweiabc/state-machine-source-code ## Basic Information - **Project Name**: 状态机源码 - **Description**: 状态机仓库 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2022-11-08 - **Last Updated**: 2024-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ``` ``` //下面是使用例程 #include #include "Windows.h" #include "statemachine.h" //事件1 void Event1(smEvent_t* event) { static int cnt = 0; switch (event->curState) { case SM_EVENT_ENTER: //这里可以初始化一下相关变量,也可以不写 printf("进入状态机1\r\n"); break; case SM_EVENT_EXEC: SmSetNextEvent(event, 1);//设置状态机进入事件2 printf("状态机1执行了%d\r\n", cnt++); break; case SM_EVENT_EXIT: //可以对离开状态机后进行一些处理,也可以什么都不写 printf("离开状态机1\r\n"); break; } } //事件2 void Event2(smEvent_t* event) { static int cnt = 0; switch (event->curState) { case SM_EVENT_ENTER: printf("进入状态机2\r\n"); break; case SM_EVENT_EXEC: SmSetNextEvent(event, 0); printf("状态机2执行了%d\r\n", cnt++); break; case SM_EVENT_EXIT: printf("离开状态机2\r\n"); break; } } smEvent_t eventList[2];//声明一个事件列表 smCore_t smCore; //声明状态机核心变量 int main() { SmEventInit(&eventList[0], Event1, 0);//初始化变量 id号必须从0连续开始 SmEventInit(&eventList[1], Event2, 1); SmInit(&smCore, eventList, 2); //初始化状态机核心 printf("你好"); while (1) { SmProcess(&smCore);//状态机轮询 Sleep(1000); } //ALiCloudToMqttTopic((char*)"123", (char*)"456", (char *)test,buf, 100); //std::cout << buf; } _强调_ _ ``` ``` ```