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

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

基于Qt的汽车仪表模拟

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

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

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

这里简单的实现了发动机的1.0版本,只有一个缸,有一个模拟启动后转速偏高,稳定后降下来的模拟,其实实现很简单。在我的项目里,实现这个小功能有麻烦,我分的内容太多了,所以逻辑我就不说了,就说这个发动机吧,哈哈。1.0里面连温度都没有做了。

头文件


  
  
  1. #ifndef ENGING_6VAT_H
  2. #define ENGING_6VAT_H
  3. /**
  4. 版本:1.0
  5. */
  6. #include <QObject>
  7. #include <QThread>
  8. #include <QTimer>
  9. class VAT : public QThread
  10. {
  11. Q_OBJECT
  12. public:
  13. virtual void run();
  14. signals:
  15. /**
  16. * @brief signal_VATSpeed
  17. * @param speed
  18. * 返回气缸的运行速度
  19. */
  20. void signal_VATSpeed(int speed);
  21. public:
  22. int accelerator = 100;
  23. bool stopflag = false;
  24. };
  25. class Enging_6vat : public QObject
  26. {
  27. Q_OBJECT
  28. public:
  29. explicit Enging_6vat(QObject *parent = nullptr);
  30. /**
  31. * @brief engintStart
  32. * 启动发动机
  33. */
  34. void engintStart();
  35. /**
  36. * @brief engintStop
  37. * 发动机停止
  38. */
  39. void engintStop();
  40. /**
  41. * @brief engintAccelerator
  42. * @param accelerator
  43. * 发动机油门0-100,默认为10
  44. */
  45. void engintAccelerator(int accelerator = 10);
  46. signals:
  47. /**
  48. * @brief engineRotateSpeed
  49. * @param rotateSpeed
  50. * 返回发动机转速
  51. */
  52. void signal_EngineRotateSpeed(int rotateSpeed);
  53. /**
  54. * @brief signal_EngineTemperature
  55. * @param temperature
  56. * 返回发动机温度
  57. */
  58. void signal_EngineTemperature(int temperature);
  59. public slots:
  60. private:
  61. VAT *m_VAT_1 = nullptr;
  62. };
  63. #endif // ENGING_6VAT_H

源文件


  
  
  1. #include "enging_6vat.h"
  2. #include <QtDebug>
  3. Enging_6vat::Enging_6vat(QObject *parent) : QObject(parent)
  4. {
  5. m_VAT_1 = new VAT();
  6. connect(m_VAT_1,&VAT::signal_VATSpeed,this,[=](int speed){
  7. emit signal_EngineRotateSpeed(speed);
  8. });
  9. }
  10. void Enging_6vat::engintStart()
  11. {
  12. m_VAT_1->stopflag = false;
  13. m_VAT_1->start();
  14. QTimer::singleShot(3000,this,[=](){m_VAT_1->accelerator = 80;});
  15. }
  16. void Enging_6vat::engintStop()
  17. {
  18. m_VAT_1->stopflag = true;
  19. }
  20. void Enging_6vat::engintAccelerator(int accelerator)
  21. {
  22. if(m_VAT_1)
  23. {
  24. m_VAT_1->accelerator = accelerator;
  25. }
  26. }
  27. void VAT::run()
  28. {
  29. while (1)
  30. {
  31. emit signal_VATSpeed(8*accelerator);
  32. if(stopflag)
  33. {
  34. break;
  35. }
  36. msleep(25);
  37. }
  38. }

体验地址: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

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

全部回复

上滑加载中

设置昵称

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

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

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