HMI-25-【发动机】弄个发动机
基于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);
-
}
-
}
2019/10/13 16:16
说明:
本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计、吉利汽车HMI项目。
设计图的所有权和解释权都归吉利汽车所有。
本项目所有资源文件均有打不死的小海复刻制作。
本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。
本项目仅限学习交流、禁止商业使用。
文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。
原文链接:dreamlife.blog.csdn.net/article/details/102534237
- 点赞
- 收藏
- 关注作者
评论(0)