有限状态机代码生成器 FsmCrater

有限状态机代码生成器 FsmCrater V0.1.0

链接:https://pan.baidu.com/s/1B6oPkTwfdvOncIcZ6FfFhw
提取码:icbg

界面预览
在这里插入图片描述
生成代码预览.c
在这里插入图片描述
生成代码预览.h
在这里插入图片描述

快速上手

1、解压即用FsmCrater.exe
在这里插入图片描述
首次使用先选择生成器
在这里插入图片描述
在tools目录下有一个fsmCrater_C.exe,由于本辣鸡就会C语言,就先弄了一个。
您也可以编写自己的fsmCrater_XXX.exe来实现其他语言的状态机生成器,或者写一个更好的C语言状态机框架
后续会再写一篇文章说明如何写这个fsmCrater_XXX.exe
配置好生成器后以后再打开软件就不用重新配了
在这里插入图片描述
new一个工程后就可以摆状态了
顾名思义的两个按钮
注意添加节点时,节点的名称将作为变量名,故只能使用数字、字母、下划线。而说明则会作为注释内容
在这里插入图片描述
双击状态转移矩阵(就是红圈里的那个表)中的某个单元格,即可添加/取消从源到目标的连线
在这里插入图片描述
状态机构建差不多了,点击生成!
会出现询问是否生成库文件,点是即可
在这里插入图片描述
可以看到生成的四个文件:
cfsm_core.c/h即为库文件
fsmapp_newfsm.c/h即为生成的状态机代码
注意!生成后的代码不要着急在里面写用户代码,拷贝到你的工程再干活,否则下次生成就覆盖了!
在这里插入图片描述
打开fsmapp_newfsm.h,可以看最底下有调用方法,很简单只需要指定一个初始状态start,然后一直loop这个状态机就好了
在这里插入图片描述
打开fsmapp_newfsm.c,该文件分两部分,上面用“状态机: newfsm 自动生成 不要编辑↓” “状态机: newfsm 自动生成 不要编辑↑”括起来的不要编辑,如果想改状态机可以在代码生成器上做修改然后重新生成
在这里插入图片描述
状态机: newfsm 用户代码区↓—状态机: newfsm 用户代码区↑ 这个区间的代码是用户实现逻辑的地方
这里以"newfsm"状态机下的"1"状态为例介绍四类函数,写完这四类函数,状态机就可以正常工作了。注意是四类,你总共要写多少函数与状态机的复杂程度有关,所以设计状态机的时候一定想想如何化简
void newfsm_XInitFun(cfsm_modeIndex_Type lastModeIndex)
描述:其他状态转移到X状态时,X状态的初始化动作
输入参数 lastModeIndex:进入该状态前的上一个状态
void newfsm_XLoopFun(void)
描述:状态X的loop函数
cfsm_modeSwitchFlag_type newfsm_ConditionFun_A_to_B(cfsm_modeIndex_Type nextModeIndex)
描述:状态A是否达到向状态B转移的条件判断
输入参数 nextModeIndex:即将转移的下一个状态。实际上这个传入参数一定是B状态,预留这个接口是为了后续用户自己写统一转移函数
输出参数:返回cfsm_modeSwitchFlag_invalid 则没有达到转移条件,返回cfsm_modeSwitchFlag_valid 则达到转移条件
void newfsm_ActionFun_A_to_B(cfsm_modeIndex_Type nextModeIndex)
描述:状态A向状态B转移时要执行的动作
输入参数 lastModeIndex:转移的源状态。实际上这个传入参数一定是A状态,预留这个接口是为了后续用户自己写统一转移函数

在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值