首页 > 代码库 > 《实时控制软件设计》第二周作业
《实时控制软件设计》第二周作业
状态分析
由题目描述,只有两种不同事件,一个是车辆进入,一个是车辆离开,与之对应的传感器信号,起落杆信号,通行灯信号都是一同变化,因此可以简化成两种复合状态。
代码实现
传感器头文件
// // Created by zhuhaihao on 2016/12/4. // #ifndef STATEMACHINE_STATEMACHINE_H #define STATEMACHINE_STATEMACHINE_H class Sensor { public: Sensor(); Sensor(bool state); bool getState() const; void setState(bool newState) ; void restore() ; private: // 这里用一个状态表示车辆进入传感器信号和车辆离开传感器信号的状态 // 如果为true表示车辆进入 false表示车辆离开 bool state; }; #endif //STATEMACHINE_STATEMACHINE_H
传感器实现
// // Created by zhuhaihao on 2016/12/4. // #include "../Header/Sensor.h" #include <iostream> using namespace std; Sensor::Sensor() { state = false; } Sensor::Sensor(bool state) { this->state = state; } bool Sensor::getState() const { return this->state; } void Sensor::setState(bool newState) { this->state = newState; } void Sensor::restore() { this->state = false; }
其余部件的代码类似于传感器。所有代码在这里 https://github.com/hacktw/RTCSD2016
// // Created by zhuhaihao on 2016/12/4. // #include "../Header/GurdSystem.h" #include <iostream> using namespace std; void GurdSystem::carIn() { this->sensor.setState(true); cout << "now the car are comming in..." << endl; if ( !this->lifter.getState() ) { this->lifter.action(); cout << "lifter up..." << endl; } if ( !this->light.getState() ) { this->light.action(); cout << "light green..." << endl; } } void GurdSystem::carOut() { this->sensor.setState(false); cout << "now the car are comming out..." << endl; if ( this->lifter.getState() ) { this->lifter.action(); cout << "lifter down..." << endl; } if ( this->light.getState() ) { this->light.action(); cout << "light red..." << endl; } }
测试截图
《实时控制软件设计》第二周作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。