HMI-25-【发动机】弄个发动机

简介: 基于Qt的汽车仪表模拟

image.png

点此链接查看视频

距离上一次写以及相隔一个多月了,这一个月可不好过,估计大家都以为我吧剩下的两个界面写了,可以还没有写,写不动了,又感觉腻味了,加上最近一直在写文档,烦的要死。


这里说明下为什么要开始写发动机,有好多网友拿到体验程序处理可以看下启动动画就什么都看不到了,而我和面写的那接种模式不过是界面上的变化,没有更多的新的东西,所以暂时先调整一下顺序,同时也缓解一下我自己的情绪,每天写点没啥价值的东西,有的时候就也不想写了,所以决定先写个发动机。


这次先写一个发动机的1.0版本,内部都先没有,只有根据油门输入的值变成转速发出来。

image.png

这里简单的实现了发动机的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


image.png

目录
相关文章
|
前端开发 芯片
【芯片前端】保持代码手感——交通灯
【芯片前端】保持代码手感——交通灯
|
2月前
|
传感器 IDE 开发工具
基于Arduino的自行车转向指示灯
基于Arduino的自行车转向指示灯
23 0
|
5月前
|
传感器 数据采集 监控
LabVIEW火箭发动机试车台程序
LabVIEW火箭发动机试车台程序
61 2
|
5月前
|
传感器 数据采集 存储
LabVIEW飞机发动机测试与故障诊断系统
LabVIEW飞机发动机测试与故障诊断系统
60 2
|
7月前
LabVIEW软件模拟氢燃料电池在车辆中的应用
LabVIEW软件模拟氢燃料电池在车辆中的应用
50 4
|
7月前
|
机器学习/深度学习 运维 数据可视化
LabVIEW开发汽车发动机故障模拟器
LabVIEW开发汽车发动机故障模拟器
35 0
|
传感器 算法 安全
聊聊身边的嵌入式,来去如风的电动自行车
聊聊身边的嵌入式,来去如风的电动自行车
|
数据管理
便携式钻孔测斜仪的一般设置
点击日期调整左右按钮对下方的日期进行年月调整,日期点击即可更改,点击时间文本框上下箭头对时分秒进行调整。
便携式钻孔测斜仪的一般设置
|
传感器 数据安全/隐私保护 UED
知趣网谢阗地:我们为啥要做车载空气净化器?
当雾霾天不只影响到以北京为代表的少数地区时,空气质量和呼吸环境开始前所未有地被全国人民所关注。关心个人及他人健康让人们也开始愿意为更好的空气环境付出额外的成本,空气净化设备随之大有井喷之势。
201 0
知趣网谢阗地:我们为啥要做车载空气净化器?
飞机改装服务
本文研究全球及中国市场飞机改装服务现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势