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

举报
DreamLife 发表于 2022/04/15 22:24:22 2022/04/15
1.6k+ 0 0
【摘要】 基于Qt的汽车仪表模拟 距离上一次写以及相隔一个多月了,这一个月可不好过,估计大家都以为我吧剩下的两个界面写了,可以还没有写,写不动了,又感觉腻味了,加上最近一直在写文档,烦的要死。 这里说明下为什么要开始写发动机,有好多网友拿到体验程序处理可以看下启动动画就什么都看不到了,而我和面写的那接种模式不过是界面上的变化,没有更...

基于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);
          }
      }
  
 
 

体验地址:HMI项目_免费高速下载|百度网盘-分享无限制

 

2019/10/13 16:16

说明:

本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

设计图的所有权和解释权都归吉利汽车所有。

本项目所有资源文件均有打不死的小海复刻制作。

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

本项目仅限学习交流、禁止商业使用。

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/102534237

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。