|
@@ -6,6 +6,7 @@
|
|
|
#define qtcout qDebug() << "[ " << __FILE__ << ":" << __LINE__<< " ]";
|
|
|
|
|
|
extern std::string gstrmemgps;
|
|
|
+extern std::string gstrvin;
|
|
|
/**
|
|
|
常量 值 描述
|
|
|
QHostAddress::Null 0 空地址对象,相当于QHostAddress()。
|
|
@@ -427,6 +428,8 @@ ADCIntelligentVehicle::ADCIntelligentVehicle(QWidget *parent)
|
|
|
mTimerState1.start(100); //定时100ms
|
|
|
|
|
|
#endif
|
|
|
+
|
|
|
+ ui->lineEdit_vin->setText(QString::fromStdString(gstrvin));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1618,7 +1621,9 @@ void ADCIntelligentVehicle::UpdateGPSIMU(const char * strdata,const unsigned int
|
|
|
ServiceCarStatus.location->ins_status = data->ins_status;
|
|
|
|
|
|
ServiceCarStatus.speed = sqrt(pow(data->vel_E,2)+pow(data->vel_N,2)) * 3.6; //double pow(double x, double y) 返回 x 的 y 次幂,即 xy。
|
|
|
-
|
|
|
+ ui->lineEdit_lon->setText(QString::number(ServiceCarStatus.location->gps_lng,'f',7));
|
|
|
+ ui->lineEdit_lat->setText(QString::number(ServiceCarStatus.location->gps_lat,'f',7));
|
|
|
+ ui->lineEdit_heading->setText(QString::number(ServiceCarStatus.location->ins_heading_angle,'f',1));
|
|
|
mnTimeUpdateGPS = mTimeState.elapsed();
|
|
|
}
|
|
|
|
|
@@ -1825,6 +1830,25 @@ void ADCIntelligentVehicle::ShareHMIMsg(iv::hmi::HMIBasic xhmi)
|
|
|
iv::modulecomm::ModuleSendMsg(mpaHMI,str,nsize);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * @brief ADCIntelligentVehicle::ShareHMIMsg
|
|
|
+ * @param xhmi
|
|
|
+ */
|
|
|
+void ADCIntelligentVehicle::ShareHMIMsgPro(iv::hmi::hmimsg xhmimsg)
|
|
|
+{
|
|
|
+ int nsize = xhmimsg.ByteSize();
|
|
|
+ char * str = new char[nsize];
|
|
|
+ std::shared_ptr<char> pstr;
|
|
|
+ pstr.reset(str); //将就对象的引用计数减1(当然,如果发现引用计数为0时,则析构旧对象),然后将新对象的指针交给智能指针保管。这样做可以省略了delete的过程。
|
|
|
+ if(!xhmimsg.SerializeToArray(str,nsize))
|
|
|
+ {
|
|
|
+ std::cout<<"ADCIntelligentVehicle::ShareHMIMsg serialize error."<<std::endl;
|
|
|
+ mpivlog->error("ADCIntelligentVehicle::ShareHMIMsg serialize error.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ iv::modulecomm::ModuleSendMsg(mpaHMI,str,nsize);
|
|
|
+}
|
|
|
+
|
|
|
void ADCIntelligentVehicle::UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)
|
|
|
{
|
|
|
iv::chassis xchassis;
|
|
@@ -1843,9 +1867,42 @@ void ADCIntelligentVehicle::UpdateChassis(const char *strdata, const unsigned in
|
|
|
if((xchassis.has_soc()))
|
|
|
{
|
|
|
mfSOC = xchassis.soc();
|
|
|
-
|
|
|
+ ui->lineEdit_soc->setText(QString::number(mfSOC,'f',1));
|
|
|
}
|
|
|
-
|
|
|
+ unsigned char errSig = 0;
|
|
|
+ if((xchassis.has_driver_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.driver_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_swj_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.swj_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_battery_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.battery_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_remote_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.remote_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_steer_motor_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.steer_motor_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_rrmotor_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.rrmotor_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_rlmotor_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.rlmotor_error();
|
|
|
+ }
|
|
|
+ if((xchassis.has_fsteer_code_error()))
|
|
|
+ {
|
|
|
+ errSig |= xchassis.fsteer_code_error();
|
|
|
+ }
|
|
|
+ ui->lineEdit_errCode->setText(QString::number(errSig,16));
|
|
|
}
|
|
|
|
|
|
void ADCIntelligentVehicle::onTimerManual()
|
|
@@ -1956,20 +2013,6 @@ void ADCIntelligentVehicle::UpdateVbox(const char * strdata,const unsigned int n
|
|
|
|
|
|
}
|
|
|
|
|
|
-void ADCIntelligentVehicle::on_button_platform_en_clicked()
|
|
|
-{
|
|
|
- if(mv2xStEn){
|
|
|
- ui->button_platform_en->setStyleSheet("background-color: grey");
|
|
|
- mv2xStEn = 0;
|
|
|
- }
|
|
|
- else{
|
|
|
- ui->button_platform_en->setStyleSheet("background-color: green");
|
|
|
- mv2xStEn = 1;
|
|
|
- }
|
|
|
- gIvlog->info("hmi","v2x enable:%d", mv2xStEn);
|
|
|
- UpdateV2xStEn(mv2xStEn);
|
|
|
-}
|
|
|
-
|
|
|
void ADCIntelligentVehicle::on_button_start_clicked()
|
|
|
{
|
|
|
#ifdef USE_PAD_CTRL
|
|
@@ -1981,21 +2024,50 @@ void ADCIntelligentVehicle::on_button_start_clicked()
|
|
|
return;
|
|
|
#endif
|
|
|
}
|
|
|
-
|
|
|
+//云平台使能控制
|
|
|
+void ADCIntelligentVehicle::on_button_platform_en_clicked()
|
|
|
+{
|
|
|
+ if(mplatformEn){
|
|
|
+ ui->button_platform_en->setStyleSheet("background-color: gray");
|
|
|
+ mplatformEn = 0;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ ui->button_platform_en->setStyleSheet("background-color: green");
|
|
|
+ mplatformEn = 1;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","platform enable:%d", mplatformEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ hmi.set_platformen(mplatformEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+}
|
|
|
+//路测设备使能控制
|
|
|
void ADCIntelligentVehicle::on_button_obu_en_clicked()
|
|
|
{
|
|
|
-
|
|
|
+ if(mobuEn){
|
|
|
+ ui->button_obu_en->setStyleSheet("background-color: gray");
|
|
|
+ mobuEn = 0;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ ui->button_obu_en->setStyleSheet("background-color: green");
|
|
|
+ mobuEn = 1;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","platform enable:%d", mobuEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ hmi.set_obuen(mobuEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
}
|
|
|
|
|
|
void ADCIntelligentVehicle::on_button_map_set_clicked()
|
|
|
{
|
|
|
QString fileName = QFileDialog::getOpenFileName(this,
|
|
|
- tr("QFileDialog::getOpenFileName()"),
|
|
|
+ tr("选择地图文件"),
|
|
|
"/home/nvidia",
|
|
|
tr("Text Files (*.xodr)"));
|
|
|
if (fileName.isEmpty())
|
|
|
{
|
|
|
- QMessageBox msgBox(QMessageBox::Warning, tr("QMessageBox::warning()"),
|
|
|
+ QMessageBox msgBox(QMessageBox::Warning, tr("警告"),
|
|
|
"No Map Selected", 0, this);
|
|
|
msgBox.addButton(tr("OK"), QMessageBox::AcceptRole);
|
|
|
// msgBox.addButton(tr("&Continue"), QMessageBox::RejectRole);
|
|
@@ -2009,11 +2081,17 @@ void ADCIntelligentVehicle::on_button_map_set_clicked()
|
|
|
void ADCIntelligentVehicle::on_button_vin_set_clicked()
|
|
|
{
|
|
|
bool ok;
|
|
|
- QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),
|
|
|
+ QString text = QInputDialog::getText(this, tr("输入车辆VIN:"),
|
|
|
tr("VIN:"), QLineEdit::Normal,
|
|
|
QDir::home().dirName(), &ok);
|
|
|
if (ok && !text.isEmpty())
|
|
|
- msvin = text;
|
|
|
+ {
|
|
|
+ gstrvin = text.toStdString();
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ hmi.set_vin(gstrvin);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+ ui->lineEdit_vin->setText(text);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void ADCIntelligentVehicle::on_button_speedLimit_set_clicked()
|
|
@@ -2025,5 +2103,125 @@ void ADCIntelligentVehicle::on_button_speedLimit_set_clicked()
|
|
|
{
|
|
|
// doubleLabel->setText(QString("$%1").arg(d));
|
|
|
mdspeedLimit = d;
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ hmi.set_speedlimit(mdspeedLimit);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+ ui->lineEdit_speedLimit->setText(QString::number(mdspeedLimit,'f',1));
|
|
|
+ }
|
|
|
+}
|
|
|
+void ADCIntelligentVehicle::buttonColorReset()
|
|
|
+{
|
|
|
+ ui->button_trafficInfo_en->setStyleSheet("background-color: gray");
|
|
|
+ ui->button_FCW_en->setStyleSheet("background-color: gray");
|
|
|
+ ui->button_jams_en->setStyleSheet("background-color: gray");
|
|
|
+ ui->button_DriCrims_en->setStyleSheet("background-color: gray");
|
|
|
+}
|
|
|
+
|
|
|
+void ADCIntelligentVehicle::on_button_trafficInfo_en_clicked()
|
|
|
+{
|
|
|
+ buttonColorReset();
|
|
|
+ if(mbTrafficInfoEn){
|
|
|
+ ui->button_trafficInfo_en->setStyleSheet("background-color: gray");
|
|
|
+ mbTrafficInfoEn = false;
|
|
|
}
|
|
|
+ else{
|
|
|
+ ui->button_trafficInfo_en->setStyleSheet("background-color: green");
|
|
|
+ mbTrafficInfoEn = true;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","traffic info enable:%d", mbTrafficInfoEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ mbFCWEn = false;
|
|
|
+ mbjamsEn = false;
|
|
|
+ mbdriCrimsEn = false;
|
|
|
+ hmi.set_rodeinfoen(mbTrafficInfoEn);
|
|
|
+ hmi.set_rodefcwen(mbFCWEn);
|
|
|
+ hmi.set_roadjamsen(mbjamsEn);
|
|
|
+ hmi.set_roaddricrimsen(mbdriCrimsEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+}
|
|
|
+
|
|
|
+void ADCIntelligentVehicle::on_button_FCW_en_clicked()
|
|
|
+{
|
|
|
+ buttonColorReset();
|
|
|
+ if(mbFCWEn){
|
|
|
+ ui->button_FCW_en->setStyleSheet("background-color: gray");
|
|
|
+ mbFCWEn = false;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ ui->button_FCW_en->setStyleSheet("background-color: green");
|
|
|
+ mbFCWEn = true;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","traffic FCW enable:%d", mbFCWEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ mbTrafficInfoEn = false;
|
|
|
+ mbjamsEn = false;
|
|
|
+ mbdriCrimsEn = false;
|
|
|
+ hmi.set_rodeinfoen(mbTrafficInfoEn);
|
|
|
+ hmi.set_rodefcwen(mbFCWEn);
|
|
|
+ hmi.set_roadjamsen(mbjamsEn);
|
|
|
+ hmi.set_roaddricrimsen(mbdriCrimsEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+}
|
|
|
+
|
|
|
+void ADCIntelligentVehicle::on_button_jams_en_clicked()
|
|
|
+{
|
|
|
+ buttonColorReset();
|
|
|
+ if(mbjamsEn){
|
|
|
+ ui->button_jams_en->setStyleSheet("background-color: gray");
|
|
|
+ mbjamsEn = false;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ ui->button_jams_en->setStyleSheet("background-color: green");
|
|
|
+ mbjamsEn = true;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","traffic jams enable:%d", mbjamsEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ mbTrafficInfoEn = false;
|
|
|
+ mbFCWEn = false;
|
|
|
+ mbdriCrimsEn = false;
|
|
|
+ hmi.set_rodeinfoen(mbTrafficInfoEn);
|
|
|
+ hmi.set_rodefcwen(mbFCWEn);
|
|
|
+ hmi.set_roadjamsen(mbjamsEn);
|
|
|
+ hmi.set_roaddricrimsen(mbdriCrimsEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+}
|
|
|
+
|
|
|
+void ADCIntelligentVehicle::on_button_SimCar_en_clicked()
|
|
|
+{
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ hmi.set_lonup(ui->lineEdit_jamsLon_up->text().toDouble());
|
|
|
+ hmi.set_lonlow(ui->lineEdit_jamsLon_low->text().toDouble());
|
|
|
+ hmi.set_latup(ui->lineEdit_jamsLat_Up->text().toDouble());
|
|
|
+ hmi.set_latlow(ui->lineEdit_jamsLat_low->text().toDouble());
|
|
|
+ hmi.set_headingup(ui->lineEdit_jamsHead_up->text().toDouble());
|
|
|
+ hmi.set_headinglow(ui->lineEdit_jamsHead_low->text().toDouble());
|
|
|
+ hmi.set_carcount(ui->lineEdit_jamsCarNum->text().toInt());
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
+}
|
|
|
+
|
|
|
+void ADCIntelligentVehicle::on_button_DriCrims_en_clicked()
|
|
|
+{
|
|
|
+ buttonColorReset();
|
|
|
+ if(mbdriCrimsEn){
|
|
|
+ ui->button_DriCrims_en->setStyleSheet("background-color: gray");
|
|
|
+ mbdriCrimsEn = false;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ ui->button_DriCrims_en->setStyleSheet("background-color: green");
|
|
|
+ mbdriCrimsEn = true;
|
|
|
+ }
|
|
|
+ gIvlog->info("hmi","traffic jams enable:%d", mbdriCrimsEn);
|
|
|
+// UpdateV2xStEn(mv2xStEn);
|
|
|
+ iv::hmi::hmimsg hmi;
|
|
|
+ mbTrafficInfoEn = false;
|
|
|
+ mbFCWEn = false;
|
|
|
+ mbjamsEn = false;
|
|
|
+ hmi.set_rodeinfoen(mbTrafficInfoEn);
|
|
|
+ hmi.set_rodefcwen(mbFCWEn);
|
|
|
+ hmi.set_roadjamsen(mbjamsEn);
|
|
|
+ hmi.set_roaddricrimsen(mbdriCrimsEn);
|
|
|
+ ShareHMIMsgPro(hmi);
|
|
|
}
|