• 作业二


    停车场门禁控制系统


    根据本周课堂内容,设计一个停车场门禁控制系统的状态机。

    门禁控制系统的输入信号包括:
    起落杆位置传感器:有两个位置值信号(升起/落下)
    汽车入闸传感器:有两个值(True/False)
    汽车出闸传感器:有两个值(True/False)

    门禁控制系统的输出信号包括:
    起落杆电机控制信号:(上升/下降)
    通行灯信号:(红灯/绿灯)

    一辆汽车的通过流程为:

    1. 起落杆处于落下状态,通行灯为红灯。
    2. 汽车进入门禁系统,入闸传感器值变为True。
    3. 控制起落杆上升,直到起落杆位置传感器到达升起位置。
    4. 通行灯为绿灯。
    5. 汽车离开门禁,触发汽车出闸传感器值为True。
    6. 控制起落杆下降,直到起落杆位置传感器到达落下位置。
    7. 通行灯变为红灯。

    所描述的控制系统的状态机包括:
    状态机的所有状态
    状态机所接收到的外部事件
    状态机所产生的动作
    状态机的所有状态跃迁:(原状态、新状态、触发条件、产生动作)


    定义状态量:

    杆位置状态:gateOn=1表示升起位置,gateOn=0表示落下位置;

    灯状态:light=0表示红灯,light=1表示绿灯;

    入闸传感器:carIn=0表示没有汽车进入,carIn=1表示有汽车进入;

    出闸传感器:carOut=0表示没有汽车离开,carOut=1表示有汽车离开;

    其中carIn和carOut作为输入状态,gate和light作为输出状态。


    定义动作:

    杆动作:杆上升gateOpen(),杆下降gateClose();

    灯动作:灯变绿lightOn(),灯变红lightOff();


    可以将所有状态列为下表:


    状态跃迁图入下:


    代码如下:

    #include<iostream>
    using namespace std;
    
    bool carIn = 0, carOut = 0;
    bool  light = 0;
    bool gateOn = 0;
    
    bool gateOpen()
    {
        cout << "杆上升......" << endl;
        gateOn = 1;
        return gateOn;
    }
    
    bool gateClose()
    {
        cout << "杆下降......" << endl;
        gateOn = 0;
        return gateOn;
    }
    
    void lightOn()
    {
        cout << "--------------------------绿灯,请通行------------------------" << endl;
        light = 1;
    }
    
    void lightOff()
    {
        cout << "-----------------------红灯,禁止通行--------------------------" << endl;
        light = 0;
    }
    
    int main()
    {
        while (1)
        {
            cout << "是否有车进入:";
            cin >> carIn;
            if (carIn == 1)
            {
                if (gateOpen())         lightOn();
            }
    
            while (light)
            {
                cout << "车是否离开:";
                cin >> carOut;
                if (carOut == 1)
                {
                    if (!gateClose())         lightOff();
                }
            }
        }
        return 0;
    }
    

    贴张效果图:

  • 相关阅读:
    设计模式之解释器模式
    设计模式之中介者模式
    设计模式之职责链模式
    设计模式之命令模式
    设计模式之迭代器模式
    设计模式之备忘录模式
    设计模式之状态模式
    【转】CSS中position属性( absolute | relative | static | fixed )详解
    【转】fiddler-http协议调试代理工具
    TCP/IP、Http、Socket的区别
  • 原文地址:https://www.cnblogs.com/lihanyan/p/6171973.html
Copyright © 2020-2023  润新知