基于Qt的汽车仪表模拟
距离上一次写以及相隔一个多月了,这一个月可不好过,估计大家都以为我吧剩下的两个界面写了,可以还没有写,写不动了,又感觉腻味了,加上最近一直在写文档,烦的要死。
这里说明下为什么要开始写发动机,有好多网友拿到体验程序处理可以看下启动动画就什么都看不到了,而我和面写的那接种模式不过是界面上的变化,没有更多的新的东西,所以暂时先调整一下顺序,同时也缓解一下我自己的情绪,每天写点没啥价值的东西,有的时候就也不想写了,所以决定先写个发动机。
这次先写一个发动机的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
2019/10/13 16:16