实时控制软件设计作业_02_停车场门禁系统状态机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时控制软件设计作业_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
以上是关于实时控制软件设计作业_02_停车场门禁系统状态机的主要内容,如果未能解决你的问题,请参考以下文章