14、状态机实现技术解析

状态机实现技术解析

1. 一维状态表与状态设计模式概述

在状态机的实现中,一维状态表的直接实现里,转换是更复杂的对象,包含以下内容:
- 指向守卫函数的指针
- 下一状态
- 指向动作函数的指针列表

而面向对象的状态机实现方法被称为状态设计模式。其目的是使状态机对象在运行时从一个状态转换到另一个状态时,看起来像是改变了其类。

1.1 时间炸弹状态机的一维状态转换表

以下是时间炸弹的一维状态转换表:
| 当前状态 | 事件 (参数) | [守卫条件] | 下一状态 | 动作 |
| ---- | ---- | ---- | ---- | ---- |
| setting | UP | [me->timeout < 60] | setting | ++me->timeout; BSP_display(me->timeout); |
| setting | DOWN | [me->timeout > 1] | setting | ––me->timeout; BSP_display(me->timeout); |
| setting | ARM | | timing | me->code = 0; |
| setting | TICK | | timing | |
| timing | UP | | timing | me->code <<= 1; me->code |= 1; |
| timing | DOWN | | timing | me->code <<= 1;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值