瀏覽代碼

ui update more info

HAPO-9# 3 年之前
父節點
當前提交
aa4935f463

+ 20 - 4
src/include/proto/hmi.proto

@@ -4,12 +4,28 @@ package iv.hmi;
 
 message hmimsg
 {
- required bool mbPause = 1;
- required bool mbBocheMode = 2;
- required bool mbbusmode = 3;
+ optional bool mbPause = 1;
+ optional bool mbBocheMode = 2;
+ optional bool mbbusmode = 3;
  optional bool mbchemen = 4;
  optional bool mbjinguang = 5;
  optional bool mbyuanguang = 6;
  optional int32 mMode = 7; //0 Eco 1 Normal 2 Sport
-
+ optional string VIN = 8;
+ optional bool rodeInfoEn = 9;//路况信息使能
+ optional bool rodeFCWEn = 10;//碰撞预警
+ optional bool roadJamsEn = 11;//交通拥堵使能
+ optional double lonUp = 12;//gps经度范围上限
+ optional double lonLow = 13;
+ optional double latUp = 14;
+ optional double latLow = 15;
+ optional float speedUp = 16;
+ optional float speedLow = 17;
+ optional float headingUp = 18;
+ optional float headingLow = 19;
+ optional float carCount = 20;
+ optional bool roadDriCrimsEn = 21; //危险驾驶使能
+ optional bool platformEn = 22;//云平台使能
+ optional bool obuEn = 23;//路测通信使能
+ optional float speedLimit = 24; //限速
 };

+ 221 - 23
src/ui/ui_ads_hmi_1px/ADCIntelligentVehicle.cpp

@@ -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);
 }

+ 19 - 0
src/ui/ui_ads_hmi_1px/ADCIntelligentVehicle.h

@@ -185,6 +185,16 @@ private slots:
 
     void on_button_speedLimit_set_clicked();
 
+    void on_button_trafficInfo_en_clicked();
+
+    void on_button_FCW_en_clicked();
+
+    void on_button_jams_en_clicked();
+
+    void on_button_SimCar_en_clicked();
+
+    void on_button_DriCrims_en_clicked();
+
 private:
     Ui::ADCIntelligentVehicle *ui;
     /**************************************/
@@ -227,6 +237,7 @@ private:
     int load_counts = 0;
 
     void AutoStart();
+    void buttonColorReset();
 
     QUdpSocket msocksend;
     QUdpSocket msockrecv;
@@ -273,6 +284,13 @@ private:
 public:
     void UpdateGPSIMU(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
     unsigned int mv2xStEn = 0;
+    bool mplatformEn = false;//云平台使能状态
+    bool mobuEn = false;//obu使能状态
+    bool mbTrafficInfoEn = false;
+    bool mbFCWEn = false;//碰撞预警使能状态
+    bool mbjamsEn = false;//拥堵使能状态
+//    bool mbSimCarEn = false;//仿真车辆设置使能
+    bool mbdriCrimsEn = false;//危险驾驶使能状态
 private:
     void * mparadar;
 private:
@@ -333,6 +351,7 @@ private:
     void * mp_v2xStSend;
     void ShareHMIMsg(iv::hmi::HMIBasic xhmi);
 
+    void ShareHMIMsgPro(iv::hmi::hmimsg xhmimsg);
     iv::Ivlog * mpivlog;
 
     //     iv::platform::Client mplatform_client;

文件差異過大導致無法顯示
+ 247 - 307
src/ui/ui_ads_hmi_1px/ADCIntelligentVehicle.ui


+ 2 - 1
src/ui/ui_ads_hmi_1px/main.cpp

@@ -15,6 +15,7 @@ std::string gstrmemradar;
 std::string gstrmemdecition;
 std::string gstrmembrainstate;
 std::string gstrmemchassis;
+std::string gstrvin;
 
 int main(int argc, char *argv[])
 {
@@ -32,7 +33,6 @@ int main(int argc, char *argv[])
 
    iv::xmlparam::Xmlparam xp(strpath.toStdString());
 
-
 //   givlog->info("brain.");
 
    gstrmemradar = xp.GetParam("radar","radar");
@@ -40,6 +40,7 @@ int main(int argc, char *argv[])
    gstrmemdecition = xp.GetParam("dection","deciton");
    gstrmembrainstate = xp.GetParam("brainstate","brainstate");
    gstrmemchassis = xp.GetParam("chassismsgname","chassis");
+   gstrvin = xp.GetParam("vin","LMWHP1S27J1005905");
 
 #if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))    //apollo_fu 20200413 添加对QT4版本的中文字体支持
     //QT5版本以上默认就是采用UTF-8编码

+ 1 - 1
src/ui/ui_ads_hmi_1px/ui_ads_hmi_1px.pro

@@ -4,7 +4,7 @@
 #
 #-------------------------------------------------
 
-QT       += core gui network webenginewidgets
+QT += core gui network webenginewidgets
 
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 

部分文件因文件數量過多而無法顯示