一个自动将状态机生成代码的软件

文章介绍了一款名为HEART-BLUE的软件,它允许用户通过图形界面设计状态图,自动生成C/C++代码,实现状态机逻辑。该工具旨在简化状态机的维护,降低代码的耦合度,避免全局变量的滥用。文章展示了软件的简单应用实例,并提供了软件及示例工程的下载链接。
摘要由CSDN通过智能技术生成

如果你是一个程序员,对状态机应该有一定的了解,甚至会经常使用。

        使用状态机的时候,一般都是自己设计程序去实现状态机,但,当要维护代码时,就会显得不方便,特别是比较复杂的时候。

        我幻想着有一个软件,能在图形界面上设计状态图,然后自动生成C\C++代码。生成的代码实现了状态机本身,和状态转换的逻辑关系,程序员与生成的代码之间的接口就是:定义动作、向状态机提交事件。很简单。没错,低耦合高内聚就是代码努力的方向。我们都不想全局变量满天飞。。。

        经过我一段时间的努力,终于把这个软件做出来了,取名为“HEART-BLUE”。以下就是界面:



这是一个很简单的三个状态之间的转换。输入事件evGo,驱动状态机发生跳转,于是会执行相应的动作AcEntryA,AcEntryB,AcEntryC。程序输出:

还有复杂一点的状态机。一个电子小时钟,用2个按键,实现调节日期,时间和计时的功能。


用VC2005实现:


时钟VC2005工程资源地址:

http://download.csdn.net/detail/my_jeff/6412633

HEART-BLUE资源地址:

http://download.csdn.net/detail/my_jeff/6408985 ……



状态机生成的3个C++代码文件(simpleABC):

/
//VERSION: 1.0.0.1
//AUTHOR:  JEFF
//TIME:    2013-10-15 22:12:57
//DESCRIPTION: Generate if not exist.
/

#ifndef _SIMPLEABC_C_DEF_H_
#define _SIMPLEABC_C_DEF_H_
//DEFINITION
#define SS_VOID        void

#define SS_BOOL        unsigned char
#define SS_TRUE        1
#define SS_FALSE       0

#define SS_BYTE        unsigned char
#define SS_WORD        unsigned short
#define SS_LONG        unsigned long


//
//User
#define SS_ARR_EVENT_INNER_AUTO                //
#define SS_STATE_CLASS                       CMyState

#ifdef SS_ARR_EVENT_INNER_AUTO //Inner queue size ...
#else
#define SS_ARR_EVENT_INNER_SIZE        20
#endif

#define DO_SOMETHING_WHEN_INNER_QUEUE_OVER_FLOW \
    ss_var_01 = ss_var_02;  //Make queue empty.
/


#endif  //#ifndef _SIMPLEABC_C_DEF_H_


/
//VERSION: 1.0.0.1
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值