距离上一次写以及相隔一个多月了,这一个月可不好过,估计大家都以为我吧剩下的两个界面写了,可以还没有写,写不动了,又感觉腻味了,加上最近一直在写文档,烦的要死。
这里说明下为什么要开始写发动机,有好多网友拿到体验程序处理可以看下启动动画就什么都看不到了,而我和面写的那接种模式不过是界面上的变化,没有更多的新的东西,所以暂时先调整一下顺序,同时也缓解一下我自己的情绪,每天写点没啥价值的东西,有的时候就也不想写了,所以决定先写个发动机。
这次先写一个发动机的1.0版本,内部都先没有,只有根据油门输入的值变成转速发出来。
这里简单的实现了发动机的1.0版本,只有一个缸,有一个模拟启动后转速偏高,稳定后降下来的模拟,其实实现很简单。在我的项目里,实现这个小功能有麻烦,我分的内容太多了,所以逻辑我就不说了,就说这个发动机吧,哈哈。1.0里面连温度都没有做了。
头文件
#ifndef ENGING_6VAT_H #define ENGING_6VAT_H /** 版本:1.0 */ #include <QObject> #include <QThread> #include <QTimer> class VAT : public QThread { Q_OBJECT public: virtual void run(); signals: /** * @brief signal_VATSpeed * @param speed * 返回气缸的运行速度 */ void signal_VATSpeed(int speed); public: int accelerator = 100; bool stopflag = false; }; class Enging_6vat : public QObject { Q_OBJECT public: explicit Enging_6vat(QObject *parent = nullptr); /** * @brief engintStart * 启动发动机 */ void engintStart(); /** * @brief engintStop * 发动机停止 */ void engintStop(); /** * @brief engintAccelerator * @param accelerator * 发动机油门0-100,默认为10 */ void engintAccelerator(int accelerator = 10); signals: /** * @brief engineRotateSpeed * @param rotateSpeed * 返回发动机转速 */ void signal_EngineRotateSpeed(int rotateSpeed); /** * @brief signal_EngineTemperature * @param temperature * 返回发动机温度 */ void signal_EngineTemperature(int temperature); public slots: private: VAT *m_VAT_1 = nullptr; }; #endif // ENGING_6VAT_H
源文件
#include "enging_6vat.h" #include <QtDebug> Enging_6vat::Enging_6vat(QObject *parent) : QObject(parent) { m_VAT_1 = new VAT(); connect(m_VAT_1,&VAT::signal_VATSpeed,this,[=](int speed){ emit signal_EngineRotateSpeed(speed); }); } void Enging_6vat::engintStart() { m_VAT_1->stopflag = false; m_VAT_1->start(); QTimer::singleShot(3000,this,[=](){m_VAT_1->accelerator = 80;}); } void Enging_6vat::engintStop() { m_VAT_1->stopflag = true; } void Enging_6vat::engintAccelerator(int accelerator) { if(m_VAT_1) { m_VAT_1->accelerator = accelerator; } } void VAT::run() { while (1) { emit signal_VATSpeed(8*accelerator); if(stopflag) { break; } msleep(25); } }
体验地址:https://pan.baidu.com/s/1rQFZx5JIud8lWdjMHl0tpg