1、钩子模式:
比如报警器的布防、撤防、报警、在家布防状态,在处理撤防消息的时候,都是跳转到撤防状态,那把这个统一的行为,放到上一级状态实现。

当然,因为在报警状态下,需要停止声光报警,所以报警状态可以重载一下这个消息的处理。

2、提示器模式:
比如wifi模块的数据查询和数据解析,都需要用到轮询机制。
那么可以添加一个消息DataReady,这样把数据查询和数据解析解耦了。

注意,为了提高性能,在发送DataReady之前可以针对数据完整性做基本判断,再发送,比如fifo满。这个模式针对wifi和gsm串口的数据轮询非常有用。

另外,布防延时和报警延时,也可以用这个模式,分解RTC步骤。

3、延迟事件模式
qpn不支持,暂不分析。

4、正交模式:
在一个活动对象的成员变量里面包含另外一个层次状态机的实例,实现两个互不相关的状态机同时运行。并且可以在不同的容器里面重用组件(层次状态机)。


通过上述几张图就可以明白正交构件的意义,系统可以同时处在两个状态里面,而且构件和容器可以通过相关api进行消息分发。

5、转换到历史状态:
暂时不使用。

层次状态机编程三:状态机设计模式相关推荐

  1. 【智能车竞赛】状态机编程在智能车竞速赛道中的应用 - 编程小记

    我曾试图通过一些代码上的小技巧,优化智能车竞速赛道的元素处理逻辑. 后来学长告诉我这叫做 "状态机" . --2022.07.20 一.我们为什么需要状态机? 定宽的白色赛道,在深 ...

  2. 白洁血战Node.js并发编程 01 状态机

    这一篇是这个系列的开篇,没有任何高级内容,就讲讲状态机. 状态机 状态机是模型层面的概念,与编程语言无关.它的目的是为对象行为建模,属于设计范畴.它的基础概念是状态(state)和事件(event). ...

  3. verdi显示状态机名字_如何写好状态机(三)

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  4. C语言状态机编程思想

    关注.星标公众号,直达精彩内容 文章来源:头条-嵌入式在左C语言在右 链接:https://www.toutiao.com/i6843028812112855564/ 有限状态机概念 有限状态机是一种 ...

  5. PLC状态机编程第六篇-优化PLC程序生成

    还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段.stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事 ...

  6. 嵌入式状态机编程简介

    不知道大家有没有这样一种感觉,就是感觉自己玩单片机还可以,各个功能模块也都会驱动,但是如果让你完整地写一套代码,却无逻辑与框架可言,上来就是开始写!东抄抄西抄抄,说明编程还处于比较低的水平.那么,如何 ...

  7. 吃透Chisel语言.31.Chisel进阶之通信状态机(三)——Ready-Valid接口:定义、时序和Chisel中的实现

    Chisel进阶之通信状态机(三)--Ready-Valid接口:定义.时序和Chisel中的实现 上一篇文章以Popcount为例,介绍了带数据通路的有限状态机FSMD的写法与实现,对于后面写复杂的 ...

  8. Verilog状态机常见三种写法

    1.1理论   Verilog状态机又称同步状态机(FSM,Finite State Machine),一般又叫状态机,在Verilog描述电路中大部分是同步执行(并行)的,但是很多时候需要处理明显具 ...

  9. 【状态机设计】Moore、Mealy状态机、三段式、二段式、一段式状态机书写规范

    目录 状态机介绍 状态机类型 Moore 型状态机 Mealy 型状态机 状态机设计流程 自动售卖机 状态机设计:3 段式(推荐) 实例 实例 状态机修改:2 段式 实例 状态机修改:1 段式(慎用) ...

  10. Verilog写状态机的三种描述方式之三段式

    Verilog写状态机的三段式描述方式1 1,RTL代码 2,门级网表 3,测试前仿真代码 4,前仿真波形+验证 状态机的设计思路: 一是从状态机变量入手,分析各个状态的输入.状态转移和输出: 二是先 ...

最新文章

  1. 【新手必看】17个常见的Python运行时错误
  2. 在mac上安装gitlab
  3. 欢乐纪中某A组赛【2019.7.12】
  4. python中for和while区别_Python学习第九篇——while和for的区别
  5. Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
  6. 又烧一辆!蔚来ES8维修时起火烧到只剩底盘 官方回应:已开启调查
  7. c51语言bit函数,keil C51中的本征函数库及使用说明
  8. 这种思路讲解数据仓库建模,你见过吗?数据人与架构师必看
  9. mysql for macOS安装
  10. c 实现走迷宫流程图_C语言走迷宫游戏流程图和代码框架
  11. 17、Python的循环结构(一)
  12. excel公式编辑器_用Excel制作 “抽奖”小软件,很简单!
  13. 职称论文发表的字数不够怎么办
  14. rap2服务端delos环境搭建
  15. 有符号数与无符号数的除法(转载)
  16. linux系统漏洞测试过程,Linux下bash破壳漏洞检测方法
  17. cucumber 如何中途退出 scenario
  18. 如何降低程序员的工资?【你中招没】
  19. 250μm松套光缆与900μm紧套光缆有何区别?
  20. 铁木辛柯matlab,欧拉梁单元 | 崔济东的博客 - www.jdcui.com

热门文章

  1. PyQt5 QTreeView树图
  2. linux中用tailf实时观看tomcat日志
  3. 测试脚本常用知识点python
  4. vue 富文本编辑器wangeditor 上传图片
  5. 【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程
  6. 实现了一个跨平台的 YUV 文件图片查看器
  7. java poi word 表格 重复_java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片...
  8. 嫡权法赋权法_赋权法_
  9. HBuilder开发app,扫描枪中,使用input输入框,然后点击扫描,获取不到条码!
  10. jclasslib安装