设想另一个应用场景,老人或小孩房间给一个模块,按一下,大人房间的模块就会响(蜂鸣器)。这样,老人或小孩有什么事情时,可以不用喊就让别人知道。
可以先参考“蜂鸣器控制实现”。
Step 1:请实现以下方案
应用:简单蜂鸣器无线控制
功能描述:
-
系统由一个蜂鸣器模块和一个控制模块组成;
-
蜂鸣器模块上有1个LED灯,一个按钮和一个蜂鸣器;控制模块上有1个按钮和1个LED灯;
-
初始状态下,按一下控制模块上的按钮,表示“呼唤”动作。控制模块发出消息,LED闪烁,表示对方模块在告警状态;蜂鸣器模块收到消息后,其上的蜂鸣器发声,LED闪动;
-
告警状态下,按一下蜂鸣器模块上的按钮,表示“确认”动作。蜂鸣器模块LED亮,蜂鸣器停止发声;表示当前状态为“告警确认”状态;
-
告警状态或告警确认状态下,按一下控制模块上的按钮,表示“取消呼唤”动作。控制模块发出消息,LED灭;蜂鸣器模块收到消息后,蜂鸣器停止发声,LED灭;
Step 2:考虑到消息发送过程会发生丢失,请实现以下方案
应用:蜂鸣器无线控制
功能描述:
-
系统由一个蜂鸣器模块和一个控制模块组成;
-
蜂鸣器模块上有1个LED灯,一个按钮和一个蜂鸣器;控制模块上有1个按钮和1个LED灯;
-
初始状态下,按一下控制模块上的按钮,表示“呼唤”动作。控制模块发出消息;蜂鸣器模块收到消息后,其上的蜂鸣器发声,LED闪动;蜂鸣器模块须回复确认消息,控制模块收到确认消息后,LED闪烁,表示对方模块在告警状态;
-
告警状态下,按一下蜂鸣器模块上的按钮,表示“确认”动作。蜂鸣器模块发出响应消息,控制模块收到后,回复确认消息。控制模块LED亮;蜂鸣器模块收到确认消息后,LED亮,蜂鸣器停止发声;表示当前状态为“告警确认”状态;
-
告警状态或告警确认状态下,按一下控制模块上的按钮,表示“取消呼唤”动作。控制模块发出消息;蜂鸣器模块收到消息后,其上的蜂鸣器停止发声,LED灭;蜂鸣器模块须回复确认消息,控制模块收到确认消息后,LED灭,表示对方模块回复初始状态;
要求:
-
设计消息类型和消息结构;
-
画出系统的FSM状态图(有限状态机);
-
画控制模块和蜂鸣器模块的流程图;
完成了?很好!
可以考虑一下以下扩展,或者开始其它类型的设计。
扩展1:请实现以下多点对点方案
应用:多控制器无线蜂鸣器
功能简述:
-
有多个控制模块,蜂鸣器模块上有多个LED灯和按键对应各个控制模块;
-
其它功能同上;
要求:细化功能描述;其它同上
扩展2:增加通信状态
应用:带连接状态无线控制蜂鸣器
功能简述:
-
在Step2的基础上;
-
蜂鸣器模块与控制模块之间周期性的发送hello消息;
-
收到hello消息后,保持LED灯亮,表示连接正常;
-
一定时间段(比如3.5个hello周期)内没有收到消息,则LED灯灭表示连接不正常;
-
其它功能同上;
要求:细化功能描述;其它同上
提示:可能要用到定时任务机制。
完成了?很好!
看看下一个感兴趣的主题吧。
|
文章评论(0条评论)
登录后参与讨论