首页 > 代码库 > 实时控制软件设计作业_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
实时控制软件设计作业_02_停车场门禁系统状态机
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。