实时控制软件设计作业_02_停车场门禁系统状态机

本文主要是介绍实时控制软件设计作业_02_停车场门禁系统状态机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

根据课堂内容,该状态机系统的状态图可描述如下:

 

根据状态图设计的状态机系统,C语言代码如下:

 1 #include <iostream.h>
 2 using namespace std;
 3 
 4 bool in = false;    //汽车入闸传感器值
 5 bool out = false;    //汽车出闸传感器值
 6 bool pos = false;    //起落杆位置传感器,false代表放下,true代表抬起
 7 int eng = 0;    //电机控制信号,0为停止,1为正转抬起,2为反转放下
 8 bool lig = false;    //通行灯控制信号,false为红灯,true为绿灯
 9 int n = 0;    //代表该系统当前状态
10 
11 void status_1(){
12     eng = 0;
13     lig = false;
14     cout << "起落杆已落下。通行灯为红灯,禁止通过。";
15 }
16 
17 void status_2{
18     eng = 1;
19     cout << "检测到车辆,正在抬升起落杆,请稍后……";
20 }
21 
22 void status_3{
23     eng = 0;
24     lig = true;
25     cout << "起落杆已抬起,通行灯为绿,请通过!";
26 }
27 
28 void status_4{
29     eng = 2;
30     lig = false;
31     cout << "车辆已通过,正在下放起落杆。";
32 }
33 
34 int test_status(){
35     if (in == true){
36         if (out == false){
37             if(pos == false){
38                 return 2;
39             }
40         }
41         if (pos == true){
42             if (out == false){
43                 return 3;
44             }
45         }
46     }else{
47         if (out == true){
48             if(pos == true){
49                 return 4;
50             }
51         }else{
52             if(pos == false){
53                 if(out == false){
54                     return 1;
55                 }
56             }
57         }
58 }
59 
60 void main(){
61     while(1){
62         n = test_status();
63         switch(n){
64         case 1 :
65             status_1();
66             break;
67         case 2 :
68             status_2();
69             break;
70         case 3 :
71             status_3();
72             break;
73         case 4 :
74             status_4();
75             break;
76         case 0 :
77             cout << "异常状态,请排查系统状况";
78             break;
79         }
80     }
81 }
82             

 

转载于:https://www.cnblogs.com/dyxscript/p/6139279.html

这篇关于实时控制软件设计作业_02_停车场门禁系统状态机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764766

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理

滚雪球学MyBatis(02):环境搭建

环境搭建 前言 欢迎回到我们的MyBatis系列教程。在上一期中,我们详细介绍了MyBatis的基本概念、特点以及它与其他ORM框架的对比。通过这些内容,大家应该对MyBatis有了初步的了解。今天,我们将从理论走向实践,开始搭建MyBatis的开发环境。了解并掌握环境搭建是使用MyBatis的第一步,也是至关重要的一步。 环境搭建步骤 在开始之前,我们需要准备一些必要的工具和软件,包括J

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

Java高级Day38-网络编程作业

112.网络编程作业 //1.使用字符流的方式,编写一个客户端程序和服务器端程序//2.客户端发送"name",服务器端接收到后,返回"我是nova"//3.客户端发送"hobby",服务器端接收到后,返回"编写java程序"//4.不是这两个问题,回复"你说啥呢"​​===============//客户端//===============public class SocketT