状态机相关 编程 资料 收集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wowocpp/article/details/84999046

状态机 QP

写状态机时,还是很烦的,觉得PT在这个方面最直观,但在一些特定领域并不合适。
QP也是大家比较推崇的,但是感觉有点大(至少我觉得),刚好逛github碰到一个叫SM的库,
据说是模仿QP的,看起来感觉不错,就改写了一点,在windows下写了个demo,觉得在arm下也应该是一样的,

原作者地址
https://github.com/leijian001/sm
源码
之前用过不少pt,感觉挺好,也没出过什么问题,不知道这个怎么样,下载看看

这个最简状态机框架可以这样用:

  • 定义一个FSM,再定义这个FSM的一个通用消息变量Evt,把FSM+Evt封装起来,这样就得到一个AO,然后程序里可以有多个AO,它们互相通过发送消息进行协作。
  • 每个AO再增加一个定时器消息变量EvtTimer,可以实现延时动作。

由于消息变量Evt可以看成是长度为1的队列,所以AO可能丢失消息。但如果把Evt扩展为长度大于1的队列,就又回到QPN的完整设计。

所以,简单的项目可以用这个框架,实际工程里建议直接用QPN框架,它基本功能都齐了。

(稍后补充)

猜你喜欢

转载自blog.csdn.net/wowocpp/article/details/84999046