Qt [GC9-15]:HUD-导航及告警部分

举报
DreamLife 发表于 2022/04/15 01:01:45 2022/04/15
【摘要】 基于Qt的汽车仪表模拟 这部分将说说我HUD的导航部分和警告部分。在HUD上面显示的导航信息极少,只有方向和距离,其他就没有了。   这里可以直接看下HUD导航的接口,我这里弄了两个就,是因为导航的距离只有在距离为100的时候才会出现,所以导航有两个接口,一个是设置方向,一个是设置距离,代码同[GC9-14...

基于Qt的汽车仪表模拟

这部分将说说我HUD的导航部分和警告部分。在HUD上面显示的导航信息极少,只有方向和距离,其他就没有了。

 

这里可以直接看下HUD导航的接口,我这里弄了两个就,是因为导航的距离只有在距离为100的时候才会出现,所以导航有两个接口,一个是设置方向,一个是设置距离,代码同[GC9-14]相似,宏定义+接口

 


  
  
  1. //导航方向
  2. #define NAVIGATIONDIRECTION_OFF 0
  3. #define NAVIGATIONDIRECTION_STRAIGHT 1 //直行
  4. #define NAVIGATIONDIRECTION_TURNLEFT 2 //左转
  5. #define NAVIGATIONDIRECTION_TURNRIGHT 3 //右转
  6. #define NAVIGATIONDIRECTION_FRONTLEFT 4 //左前方
  7. #define NAVIGATIONDIRECTION_FRONTRIGHTT 5 //右前方
  8. #define NAVIGATIONDIRECTION_LEFTREAR 6 //左后方
  9. #define NAVIGATIONDIRECTION_RIGHTREAR 7 //右后方
  10. #define NAVIGATIONDIRECTION_TURNROUND 8 //掉头
  11. //导航距离
  12. #define NAVIGATIONDISTANCE_1 0 //0距离
  13. #define NAVIGATIONDISTANCE_2 1 //1距离
  14. #define NAVIGATIONDISTANCE_3 2 //2距离

 


  
  
  1. void HUD::set_NavigationDirection(int direction)
  2. {
  3. switch (direction) {
  4. case NAVIGATIONDIRECTION_OFF:
  5. ui->label_point->hide();
  6. ui->label_dial_1->hide();
  7. ui->label_dial_2->hide();
  8. ui->label_dial_3->hide();
  9. ui->label_line->hide();
  10. ui->label_down->hide();
  11. ui->label_left->hide();
  12. ui->label_leftDown->hide();
  13. ui->label_leftUp->hide();
  14. ui->label_right->hide();
  15. ui->label_rightDown->hide();
  16. ui->label_rightUp->hide();
  17. ui->label_turnRound->hide();
  18. ui->label_up->hide();
  19. break;
  20. case NAVIGATIONDIRECTION_STRAIGHT:
  21. ui->label_point->show();
  22. ui->label_down->show();
  23. ui->label_up->show();
  24. ui->label_dial_1->hide();
  25. ui->label_dial_2->hide();
  26. ui->label_dial_3->hide();
  27. ui->label_line->hide();
  28. ui->label_left->hide();
  29. ui->label_leftDown->hide();
  30. ui->label_leftUp->hide();
  31. ui->label_right->hide();
  32. ui->label_rightDown->hide();
  33. ui->label_rightUp->hide();
  34. ui->label_turnRound->hide();
  35. break;
  36. case NAVIGATIONDIRECTION_TURNLEFT:
  37. ui->label_point->show();
  38. ui->label_down->show();
  39. ui->label_up->hide();
  40. ui->label_dial_1->hide();
  41. ui->label_dial_2->hide();
  42. ui->label_dial_3->hide();
  43. ui->label_line->hide();
  44. ui->label_left->show();
  45. ui->label_leftDown->hide();
  46. ui->label_leftUp->hide();
  47. ui->label_right->hide();
  48. ui->label_rightDown->hide();
  49. ui->label_rightUp->hide();
  50. ui->label_turnRound->hide();
  51. break;
  52. case NAVIGATIONDIRECTION_TURNRIGHT:
  53. ui->label_point->show();
  54. ui->label_down->show();
  55. ui->label_up->hide();
  56. ui->label_dial_1->hide();
  57. ui->label_dial_2->hide();
  58. ui->label_dial_3->hide();
  59. ui->label_line->hide();
  60. ui->label_left->hide();
  61. ui->label_leftDown->hide();
  62. ui->label_leftUp->hide();
  63. ui->label_right->show();
  64. ui->label_rightDown->hide();
  65. ui->label_rightUp->hide();
  66. ui->label_turnRound->hide();
  67. break;
  68. case NAVIGATIONDIRECTION_FRONTLEFT:
  69. ui->label_point->show();
  70. ui->label_down->show();
  71. ui->label_up->hide();
  72. ui->label_dial_1->hide();
  73. ui->label_dial_2->hide();
  74. ui->label_dial_3->hide();
  75. ui->label_line->hide();
  76. ui->label_left->hide();
  77. ui->label_leftDown->hide();
  78. ui->label_leftUp->show();
  79. ui->label_right->hide();
  80. ui->label_rightDown->hide();
  81. ui->label_rightUp->hide();
  82. ui->label_turnRound->hide();
  83. break;
  84. case NAVIGATIONDIRECTION_FRONTRIGHTT:
  85. ui->label_point->show();
  86. ui->label_down->show();
  87. ui->label_up->hide();
  88. ui->label_dial_1->hide();
  89. ui->label_dial_2->hide();
  90. ui->label_dial_3->hide();
  91. ui->label_line->hide();
  92. ui->label_left->hide();
  93. ui->label_leftDown->hide();
  94. ui->label_leftUp->hide();
  95. ui->label_right->hide();
  96. ui->label_rightDown->hide();
  97. ui->label_rightUp->show();
  98. ui->label_turnRound->hide();
  99. break;
  100. case NAVIGATIONDIRECTION_LEFTREAR:
  101. ui->label_point->show();
  102. ui->label_down->show();
  103. ui->label_up->hide();
  104. ui->label_dial_1->hide();
  105. ui->label_dial_2->hide();
  106. ui->label_dial_3->hide();
  107. ui->label_line->hide();
  108. ui->label_left->hide();
  109. ui->label_leftDown->show();
  110. ui->label_leftUp->hide();
  111. ui->label_right->hide();
  112. ui->label_rightDown->hide();
  113. ui->label_rightUp->hide();
  114. ui->label_turnRound->hide();
  115. break;
  116. case NAVIGATIONDIRECTION_RIGHTREAR:
  117. ui->label_point->show();
  118. ui->label_down->show();
  119. ui->label_up->hide();
  120. ui->label_dial_1->hide();
  121. ui->label_dial_2->hide();
  122. ui->label_dial_3->hide();
  123. ui->label_line->hide();
  124. ui->label_left->hide();
  125. ui->label_leftDown->hide();
  126. ui->label_leftUp->hide();
  127. ui->label_right->hide();
  128. ui->label_rightDown->show();
  129. ui->label_rightUp->hide();
  130. ui->label_turnRound->hide();
  131. break;
  132. case NAVIGATIONDIRECTION_TURNROUND:
  133. ui->label_point->hide();
  134. ui->label_down->hide();
  135. ui->label_up->hide();
  136. ui->label_dial_1->hide();
  137. ui->label_dial_2->hide();
  138. ui->label_dial_3->hide();
  139. ui->label_line->hide();
  140. ui->label_left->hide();
  141. ui->label_leftDown->hide();
  142. ui->label_leftUp->hide();
  143. ui->label_right->hide();
  144. ui->label_rightDown->hide();
  145. ui->label_rightUp->hide();
  146. ui->label_turnRound->show();
  147. break;
  148. default:
  149. break;
  150. }
  151. }

 


  
  
  1. void HUD::set_NavigationDistance(int distance)
  2. {
  3. ui->label_line->hide();
  4. switch (distance) {
  5. case NAVIGATIONDISTANCE_1:
  6. ui->label_dial_1->show();
  7. ui->label_dial_2->hide();
  8. ui->label_dial_3->hide();
  9. break;
  10. case NAVIGATIONDISTANCE_2:
  11. ui->label_dial_1->show();
  12. ui->label_dial_2->show();
  13. ui->label_dial_3->hide();
  14. break;
  15. case NAVIGATIONDISTANCE_3:
  16. ui->label_dial_1->show();
  17. ui->label_dial_2->show();
  18. ui->label_dial_3->show();
  19. break;
  20. default:
  21. break;
  22. }
  23. }

告警,我观察我车上的HUD只有两个表示,一个ESP一个是油量低时的提示

 

 


  
  
  1. #define WARNINGTYPE_GASOLINE 1 //油量警告
  2. #define WARNINGTYPE_ESP 2 //电子稳定系统,电子限滑

 


  
  
  1. void HUD::set_Warning(int warningType,bool isOn)
  2. {
  3. switch (warningType) {
  4. case WARNINGTYPE_GASOLINE:
  5. if(isOn)
  6. {
  7. ui->label_gasoline->show();
  8. }
  9. else
  10. {
  11. ui->label_gasoline->hide();
  12. }
  13. break;
  14. case WARNINGTYPE_ESP:
  15. if(isOn)
  16. {
  17. ui->label_esp->show();
  18. }
  19. else
  20. {
  21. ui->label_esp->hide();
  22. }
  23. break;
  24. default:
  25. break;
  26. }
  27. }

 

以上就是HUD的内容了,目前HUD所有的界面显示接口已经完成,HUD所有接口如下所以,在后面与控制台交互中,计划将增加一个HUD的数据接口,专门用来与控制台交互。


  
  
  1. /*
  2. * 设置汽车速度,单位为千米每小时
  3. */
  4. void set_Current_Speed(int temp);
  5. /*
  6. * 设置转向灯
  7. */
  8. void set_TurnLight(int signalType,bool isOn);
  9. /*
  10. * 设置车道偏离
  11. */
  12. void set_LaneDeparture(int position, bool isOn);
  13. /*
  14. * 设置智适应巡航模式
  15. */
  16. void set_AdaptiveCruiseControl(int controlModel);
  17. /*
  18. * 设置车距
  19. */
  20. void set_CarDistance(int level);
  21. /*
  22. * 设置警告
  23. */
  24. void set_Warning(int warningType, bool isOn);
  25. /*
  26. * 设置导航方向
  27. */
  28. void set_NavigationDirection(int direction);
  29. /*
  30. * 设置导航距离
  31. */
  32. void set_NavigationDistance(int distance);

 2019/07/23 15:34

 

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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