mainwindow.cpp 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. // car_control_module.set_lat_lgt_ctrl_req(false);
  9. // car_control_module.set_target_gear( GearPrkgAssistReq::kNoRequest);
  10. // car_control_module.set_target_pinion_ag_in_deg(0);
  11. // car_control_module.set_target_acc_mps2(0);
  12. // car_control_module.set_turn_light_status(TurnLightIndicReq::kOff);
  13. // car_control_module.sm_task_20ms();
  14. // QTimer * timerTask = new QTimer();
  15. // connect(timerTask,SIGNAL(timeout()),this,SLOT(onTimerTask()));
  16. // timerTask->setTimerType(Qt::PreciseTimer);
  17. // timerTask->start(20);
  18. QTimer * timer = new QTimer();
  19. connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
  20. timer->setTimerType(Qt::PreciseTimer);
  21. timer->start(20);
  22. mpthread = new std::thread(&MainWindow::threadctrl,this);
  23. }
  24. MainWindow::~MainWindow()
  25. {
  26. car_control_module.set_lat_lgt_ctrl_req(false);
  27. car_control_module.set_target_gear(GearPrkgAssistReq::kTargetGearP);
  28. delete ui;
  29. }
  30. void MainWindow::on_cBox_Handshake_clicked(bool checked)
  31. {
  32. bctrlAct = checked;
  33. ui->cBoxGearD->setEnabled(checked);
  34. ui->cBoxGearR->setEnabled(checked);
  35. ui->cBoxGearP->setEnabled(checked);
  36. ui->cBoxLampR->setEnabled(checked);
  37. ui->cBoxLampL->setEnabled(checked);
  38. ui->cBoxLampH->setEnabled(checked);
  39. ui->sBoxEpsSet->setEnabled(checked);
  40. ui->sBoxSpeedSet->setEnabled(checked);
  41. ui->vSliderEpsSet->setEnabled(checked);
  42. ui->vSliderSpeedSet->setEnabled(checked);
  43. }
  44. void MainWindow::on_cBoxGearD_clicked(bool checked)
  45. {
  46. if(checked)
  47. {
  48. gearSetVal = GearPrkgAssistReq::kTargetGearD;
  49. ui->cBoxGearP->setChecked(false);
  50. ui->cBoxGearR->setChecked(false);
  51. }
  52. else
  53. {
  54. gearSetVal = GearPrkgAssistReq::kTargetGearP;
  55. ui->cBoxGearD->setChecked(false);
  56. ui->cBoxGearR->setChecked(false);
  57. ui->cBoxGearP->setChecked(true);
  58. }
  59. }
  60. void MainWindow::on_cBoxGearR_clicked(bool checked)
  61. {
  62. if(checked)
  63. {
  64. gearSetVal = GearPrkgAssistReq::kTargetGearR;
  65. ui->cBoxGearP->setChecked(false);
  66. ui->cBoxGearD->setChecked(false);
  67. }
  68. else
  69. {
  70. gearSetVal =GearPrkgAssistReq::kTargetGearP;
  71. ui->cBoxGearD->setChecked(false);
  72. ui->cBoxGearR->setChecked(false);
  73. ui->cBoxGearP->setChecked(true);
  74. }
  75. }
  76. void MainWindow::on_cBoxGearP_clicked(bool checked)
  77. {
  78. gearSetVal =GearPrkgAssistReq::kTargetGearP;
  79. ui->cBoxGearP->setChecked(true);
  80. if(checked)
  81. {
  82. ui->cBoxGearD->setChecked(false);
  83. ui->cBoxGearR->setChecked(false);
  84. }
  85. }
  86. void MainWindow::on_cBoxLampL_clicked(bool checked)
  87. {
  88. if(checked)
  89. {
  90. turnLightSetVal = TurnLightIndicReq::kLeft;
  91. ui->cBoxLampR->setChecked(false);
  92. ui->cBoxLampH->setChecked(false);
  93. }
  94. else
  95. {
  96. turnLightSetVal = TurnLightIndicReq::kOff;
  97. ui->cBoxLampL->setChecked(false);
  98. ui->cBoxLampR->setChecked(false);
  99. ui->cBoxLampH->setChecked(true);
  100. }
  101. }
  102. void MainWindow::on_cBoxLampR_clicked(bool checked)
  103. {
  104. if(checked)
  105. {
  106. turnLightSetVal = TurnLightIndicReq::kRight;
  107. ui->cBoxLampL->setChecked(false);
  108. ui->cBoxLampH->setChecked(false);
  109. }
  110. else
  111. {
  112. turnLightSetVal = TurnLightIndicReq::kOff;
  113. ui->cBoxLampL->setChecked(false);
  114. ui->cBoxLampR->setChecked(false);
  115. ui->cBoxLampH->setChecked(true);
  116. }
  117. }
  118. void MainWindow::on_cBoxLampH_clicked(bool checked)
  119. {
  120. turnLightSetVal = TurnLightIndicReq::kOff;
  121. ui->cBoxLampH->setChecked(true);
  122. if(checked)
  123. {
  124. ui->cBoxLampL->setChecked(false);
  125. ui->cBoxLampR->setChecked(false);
  126. }
  127. }
  128. void MainWindow::on_sBoxSpeedSet_valueChanged(double arg1)
  129. {
  130. speedSetVal = arg1;
  131. ui->vSliderSpeedSet->setValue(int(arg1));
  132. }
  133. void MainWindow::on_vSliderSpeedSet_valueChanged(int value)
  134. {
  135. speedSetVal = double(value);
  136. ui->sBoxSpeedSet->setValue(double(value));
  137. }
  138. void MainWindow::on_sBoxEpsSet_valueChanged(double arg1)
  139. {
  140. EpsSetVal = arg1;
  141. ui->vSliderEpsSet->setValue(int(arg1));
  142. }
  143. void MainWindow::on_vSliderEpsSet_valueChanged(int value)
  144. {
  145. EpsSetVal = double(value);
  146. ui->sBoxEpsSet->setValue(double(value));
  147. }
  148. void MainWindow::onTimerTask()
  149. {
  150. if(!car_control_module.is_lat_lgt_ctrl_active() && bctrlAct){
  151. car_control_module.set_lat_lgt_ctrl_req(true);
  152. // car_control_module.set_target_gear( GearPrkgAssistReq::kTargetGearP);
  153. // car_control_module.set_target_pinion_ag_in_deg(car_control_module.get_current_steer_ang_in_deg());
  154. // car_control_module.set_target_acc_mps2(0);
  155. // car_control_module.set_turn_light_status(TurnLightIndicReq::kOff);
  156. // qDebug()<<1;
  157. }
  158. // else if(car_control_module.is_lat_lgt_ctrl_active() && !bctrlAct){
  159. // car_control_module.set_lat_lgt_ctrl_req(false);
  160. // car_control_module.set_target_gear( GearPrkgAssistReq::kNoRequest);
  161. // car_control_module.set_target_pinion_ag_in_deg(car_control_module.get_current_steer_ang_in_deg());
  162. // car_control_module.set_target_acc_mps2(0);
  163. // car_control_module.set_turn_light_status(TurnLightIndicReq::kOff);
  164. //// qDebug()<<2;
  165. // }
  166. // else if(!car_control_module.is_lat_lgt_ctrl_active() && !bctrlAct){
  167. //// qDebug()<<3;
  168. // car_control_module.set_lat_lgt_ctrl_req(false);
  169. // car_control_module.set_target_gear( GearPrkgAssistReq::kNoRequest);
  170. // car_control_module.set_target_pinion_ag_in_deg(car_control_module.get_current_steer_ang_in_deg());
  171. // car_control_module.set_target_acc_mps2(0);
  172. // car_control_module.set_turn_light_status(TurnLightIndicReq::kOff);
  173. // }
  174. else if(car_control_module.is_lat_lgt_ctrl_active() && bctrlAct){
  175. // qDebug()<<4;
  176. car_control_module.set_target_gear( GearPrkgAssistReq::kTargetGearP);
  177. car_control_module.set_target_pinion_ag_in_deg(90);
  178. car_control_module.set_target_acc_mps2(0);
  179. car_control_module.set_turn_light_status(TurnLightIndicReq::kRight);
  180. }
  181. car_control_module.sm_task_20ms();
  182. }
  183. void MainWindow::onTimer()
  184. {
  185. // std::this_thread::sleep_for(std::chrono::milliseconds(10));
  186. // std::cout<<"time: "<<std::chrono::system_clock::now().time_since_epoch().count()/1000000<<std::endl;
  187. // return;
  188. bool status;
  189. GearPrkgAssistReq gearSetVal;
  190. GearLevelIndicate gearRealVal;
  191. ChassisErrCode chassErr;
  192. StsMach stsMach;
  193. float steerDeg, speed;
  194. status = car_control_module.is_lat_lgt_ctrl_active();
  195. if (status)
  196. ui->lineEHandSake->setText("true");
  197. else
  198. ui->lineEHandSake->setText("false");
  199. gearSetVal = car_control_module.get_setted_tar_gear();
  200. switch (gearSetVal) {
  201. case GearPrkgAssistReq::kNoRequest :
  202. ui->lineESetGear->setText("N");
  203. break;
  204. case GearPrkgAssistReq::kTargetGearD :
  205. ui->lineESetGear->setText("D");
  206. break;
  207. case GearPrkgAssistReq::kTargetGearP :
  208. ui->lineESetGear->setText("P");
  209. break;
  210. case GearPrkgAssistReq::kTargetGearR :
  211. ui->lineESetGear->setText("R");
  212. break;
  213. default:
  214. ui->lineESetGear->setText("-");
  215. break;
  216. }
  217. gearRealVal = car_control_module.get_cur_disp_gear();
  218. switch (gearRealVal) {
  219. case GearLevelIndicate::kManMode :
  220. ui->lineECurGear->setText("Man");
  221. break;
  222. case GearLevelIndicate::kDrive :
  223. ui->lineECurGear->setText("Auto");
  224. break;
  225. case GearLevelIndicate::kPark :
  226. ui->lineECurGear->setText("Park");
  227. break;
  228. case GearLevelIndicate::kNeutro :
  229. ui->lineECurGear->setText("Neutro");
  230. break;
  231. default:
  232. ui->lineECurGear->setText("Reserved");
  233. break;
  234. }
  235. int tmp1[10] = {0,1,2,3,4,5,6,7,8,9};
  236. chassErr = car_control_module.get_chassis_err_state();
  237. ui->lineEChaissErr->setText(QString::number(tmp1[static_cast<int>(chassErr)]));
  238. stsMach = car_control_module.get_chassis_statemachine_sts();
  239. ui->lineEMachErr->setText(QString::number(tmp1[static_cast<int>(stsMach)]));
  240. qDebug("chassisErr %d state machine %d", chassErr,stsMach);
  241. speed = car_control_module.get_current_vehicle_spd_in_ms();
  242. ui->lineESpeed->setText(QString::number(speed));
  243. steerDeg = car_control_module.get_current_steer_ang_in_deg();
  244. ui->lineEEPS->setText(QString::number(steerDeg));
  245. }
  246. void MainWindow::threadctrl()
  247. {
  248. if(car_control_module.is_lat_lgt_ctrl_active())
  249. {
  250. car_control_module.set_target_gear(GearPrkgAssistReq::kTargetGearD);
  251. car_control_module.set_turn_light_status(TurnLightIndicReq::kRight);
  252. car_control_module.set_target_acc_mps2(0.5);
  253. car_control_module.set_target_pinion_ag_in_deg(-40);
  254. }
  255. else
  256. {
  257. car_control_module.set_lat_lgt_ctrl_req(true);
  258. }
  259. }