第二周作业

本文介绍了一个基于状态机的门禁控制系统实现方案。该系统包括四个主要状态:等待汽车、起落杆上升、汽车通行及起落杆下降。通过使用传感器检测汽车进出和起落杆的位置来触发状态转换,并据此控制起落杆的动作和通行灯的变化。
  • 状态机的所有状态

等待汽车

起落杆上升

汽车通行

起落杆下降

 

  • 状态机所接收到的外部事件

入闸传感器:汽车进入门禁 s_in

出闸传感器:汽车通过门禁 s_out

起落杆位置传感器:起落杆到达顶部 s_up

起落杆位置传感器:起落杆到达底部 s_down

 

  • 状态机所产生的动作

起落杆上升或下降

通行灯亮红灯或绿灯

 

  • 状态机的所有状态跃迁:(原状态、新状态、触发条件、产生动作)

 

#include "stdafx.h"

#include <iostream>

#include <windows.h>

using namespace std;

 

bool s_in;      //汽车进入

bool s_out;     //汽车离开

bool s_up;      //起落杆上升

bool s_down;    //起落杆下降

 

void raising()

{

    cout << "起落杆上升中......" << endl;

    Sleep(3000);

    s_up = 1;

}

void dropping()

{

    cout << "汽车已通过" << endl;

    cout << "起落杆下降中......" << endl;

    Sleep(3000);

    s_down = 1;

}

void passing()

{

    cout << "汽车通过中......" << endl;

    Sleep(3000);

    s_out = 1;

}

void waiting()

{

    cout << "等待汽车状态,是否有车进入:";

    cin >> s_in;

}

void light_green()

{

    cout << "通行灯为绿灯,可以通过" << endl;

}

void light_red()

{

    cout << "通行灯为红灯,不可通过" << endl;

}

 

int main(void)

{

    while (1)

    {

        waiting();

        if (s_in)

        {

            raising();

        };

 

        if (s_up)

        {

            light_green();

            passing();

        }

        if (s_out)

        {

            dropping();

        }

        if (s_down)

        {

            light_red();

        }

    }

    return 0;

}

 

 

转载于:https://www.cnblogs.com/magicxu/p/6143220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值