3 Star 7 Fork 5

Z先生 / 状态机自动生成工具

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

状态机自动生成工具

介绍

图形化配置状态机并自动生成相应代码
支持子状态分量的配置

软件架构

winform

安装教程

  1. 在可执行程序DiagramDemo.exe同级目录新建文件夹DiagromShapes
  2. 复制BasicsShape.dll到目录DiagromShapes下
  3. 复制FastAutomationFrame.Diagram.dll到可执行程序DiagramDemo.exe同级目录下
  4. 双击DiagramDemo.exe运行程序

使用说明

  1. 将左侧状态方框拖入绘图区
  2. 点击状态方框,填入左侧Attribute下的Name属性,该属性即为状态名
  3. 点击状态方框后四周出现箭头,点击箭头可以连接至其他状态,表示该状态可以转换至其他状态 avatar
  4. 双击状态方框或选中状态方框后按下+键可以创造一个子状态域,子状态域的操作和主状态相同
  5. 按下Esc键可以退出当前子状态域返回父状态域
  6. 点击代码生成选择保存目录后可以保存生成的代码 fsm.cfsm.h

代码架构

  1. 对于状态名一律使用用户填入Name的大写,函数使用Name的小写
  2. 对于子状态,状态名将会带上父状态的状态名,比如OPEN状态下的LOW状态,系统自动编写名字为OPEN_LOW,在该状态下还有SLEEP状态,则编写名字为OPEN_LOW_SLEEP
  3. 代码分为主状态和子状态,子状态是否有自己的子状态都归类于子状态
  4. void fsm_loop();为轮询函数
  5. ***_run()以run结尾的函数都运行在fsm_loop()中,表示当前状态下所需要进行的操作,对于子状态,只有在父状态运行时才会运行对应子状态
  6. ***_to_***()中间带有to的函数表示状态转换所进行的操作,状态转化只会在同级状态中进行
  7. unsigned char get_state_now();
    void set_state_now(unsigned char state);
    表示主函数的设置和获取
  8. void set_sub_state(unsigned char state,unsigned char substate);
    unsigned char get_sub_state(unsigned char state);
    表示子状态的设置和获取,其中state表示父状态的状态名
  9. 所有的**_to_**函数都直接在set()函数中运行,注意是否阻塞

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
BSD 3-Clause License Copyright (c) 2021, Z先生 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

图形化配置状态机并自动生成相应代码 展开 收起
C# 等 2 种语言
BSD-3-Clause
取消

发行版 (1)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/brand_zhou/AutoState.git
git@gitee.com:brand_zhou/AutoState.git
brand_zhou
AutoState
状态机自动生成工具
master

搜索帮助