实时控制软件第二次作业--停车场门禁控制系统状态机

作者:李君威U201310747

状态机图示:

将起落杆的位置状态和通行灯信号作为两个类对象,汽车出入闸传感器信号作为输入,编写代码:

 1 // qichemenjin.cpp
 2 //Copy right by Justin.
 3
 4 #include "stdafx.h"
 5 #include <iostream>
 6 using namespace std;
 7 class Liftlever
 8 {
 9 public:
10     bool Leverstate;  //起落杆位置
11     void Changeleverstate()
12     {
13         Leverstate = !Leverstate;
14     };
15 };
16
17 class Light
18 {
19 public:
20     bool Lightstate;  //通行灯信号
21     void Changelightstate()
22     {
23         Lightstate = !Lightstate;
24     };
25 };
26
27 void showleverstate(bool state)
28 {
29     if(state==true)
30         cout << "起落杆升起" << endl;
31     else
32         cout << "起落杆落下" << endl;
33 };
34
35 void showlightstate(bool state)
36 {
37     if (state == true)
38         cout << "绿灯亮" << endl;
39     else
40         cout << "红灯亮" << endl;
41 };
42
43 Liftlever Liftleverdemo;
44 Light Lightdemo;
45
46 bool Controlsystem(char car)
47 {
48     switch (car)
49     {
50     case ‘y‘:
51         Liftleverdemo.Changeleverstate();
52         break;
53     case ‘n‘:
54         break;
55     };
56
57     showleverstate(Liftleverdemo.Leverstate);
58
59     switch (Liftleverdemo.Leverstate)
60     {
61     case true:
62         Lightdemo.Lightstate = true;
63         cout << "绿灯亮" << endl;
64         break;
65     case false:
66         Lightdemo.Lightstate = false;
67         cout << "红灯亮" << endl<<endl;
68         break;
69     };
70     return Lightdemo.Lightstate;
71 };
72
73
74 int main()
75 {
76     char carin;
77     char carout;
78     while (1)
79     {
80         cout << "是否有车辆进入?(y/n)" << endl;
81         cin >> carin;
82         bool nextstep = Controlsystem(carin);
83         while (nextstep)
84         {
85             cout << "车辆是否已经驶出?(y/n)" << endl;
86             cin >> carout;
87             nextstep = Controlsystem(carout);
88         };
89     };
90     return 0;
91 }

运行结果:

时间: 2024-10-18 08:19:11

实时控制软件第二次作业--停车场门禁控制系统状态机的相关文章

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

画出动作转换图为: 使用模块化设计,将起落杆.出入传感器和通行灯设计成四个模块,分别继承设计好的系统模块接口: 1 //FSM_Interface.h 2 #pragma once 3 4 namespace FSM 5 { 6 7 class ISystemUnit //系统单元接口 8 { 9 public: 10 11 virtual void Initialize() = 0; //初始化 12 13 virtual void Execute() = 0; //执行动作 14 15 vi

第二周作业 停车场门禁控制系统状态机

根据要求 一.输入信号 1.入闸传感器:汽车进入 carin 2.出闸传感器:汽车离开 carout 3.起落杆上传感器,起落杆上升 sensorup 4.起落杆下传感器,起落杆下降 sensordown 二.输出动作 1.起落杆的生降 2.红绿灯的变换 三.状态跃迁及触发信号 S1:Idle 进入时设置通行灯为红灯,电机停止. 当汽车入闸传感器carin变为True时,转移到状态S2 S2: BarrierRising 进入时设置电机正转,保持通行灯状态 当上限位传感器sensorup变为Tr

实时控制软件设计作业_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为反转放下

实时控制软件第二次作业

0. Fork例程到自己的GitHub账号: 开发环境搭建 1. QEMU安装 建议使用qemu-system-gnuarmeclipse,该qemu分支对stm32f4有更好的支持,主要面向Eclipse开发环境. 到网页 https://github.com/gnu-mcu-eclipse/qemu/releases/tag/gae-2.8.0-20161227 下载二进制文件 gnuarmeclipse-qemu-debian64-2.8.0-201612271623-dev.tgz到~/

停车场门禁控制系统的状态机

其状态机如下图: #include<iostream>using namespace std;void main(){ char enter_or_out; //1表示入闸传感器ture,0表示出闸传感器ture int up_or_downt = 0; //1表示起落杆升起,0表示起落杆落下 cout << "状态初始化..." << '\n'; cout << "当前状态为起落杆落下,红灯状态,禁止通行" <

停车场门禁系统状态机

一辆汽车的通过流程为: 起落杆处于落下状态,通行灯为红灯. 汽车进入门禁系统,入闸传感器值变为True. 控制起落杆上升,直到起落杆位置传感器到达升起位置. 通行灯为绿灯. 汽车离开门禁,触发汽车出闸传感器值为True. 控制起落杆下降,直到起落杆位置传感器到达落下位置. 通行灯变为红灯. 所描述的控制系统的状态机包括: 状态机的所有状态 状态机所接收到的外部事件 状态机所产生的动作 状态机的所有状态跃迁:(原状态.新状态.触发条件.产生动作) 状态机的状态分析: 根据工作条件和形式,状态机总共

实时控制软件设计 第一次作业

#include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense> using Eigen::MatrixXd; using namespace std; class Point {  public:  double x;  double y;  void Showpoint(void);  void movexy(MatrixXd p);//平移算子  void r

实时控制软件第四周作业

冰球游戏系统模块设计: Gui窗口模块:负责整个游戏界面的绘制,作为整个游戏软件的运行载体,目前计划采用Qt窗体程序进行游戏主窗口的创建: OpenGL模块:在Gui窗口中进行游戏元素的绘制: 物理引擎模块:负责进行物理逻辑的计算,主要是碰撞和速度: 定时器模块:负责控制绘制频率: 游戏元素 AI逻辑的处理: 主要是怎样使机械手AI判断球的轨迹并进行拦截. 具体设计如下: 模块接口:所有模块不应该使用构造函数和析构函数以保证按一定的顺序初始化和退出.使用StartUp和ShutDown代替构造函

实时软件控制第二周作业

停车场门禁控制系统的状态机设计 门禁控制系统的输入信号包括: 起落杆位置传感器:有两个位置值信号(升起/落下) 汽车入闸传感器:有两个值(True/False) 汽车出闸传感器:有两个值(True/False) 门禁控制系统的输出信号包括: 起落杆电机控制信号:(上升/下降) 通行灯信号:(红灯/绿灯) 一辆汽车的通过流程为: 起落杆处于落下状态,通行灯为红灯. 汽车进入门禁系统,入闸传感器值变为True. 控制起落杆上升,直到起落杆位置传感器到达升起位置. 通行灯为绿灯. 汽车离开门禁,触发汽