Browse Source

ultrasonicradar & radar viwe tools update

HAPO-9# 3 years ago
parent
commit
32d804b7ef

+ 84 - 10
src/tool/view_radar/ivradarview.cpp

@@ -1,6 +1,7 @@
 #include "ivradarview.h"
 
 #include <QColor>
+#include <iostream>
 
 #define VIEW_WIDTH 2000
 #define VIEW_HEIGHT 2000
@@ -16,6 +17,11 @@ IVRadarView::IVRadarView()
         mnNotDataCount[i] = NOTDATACOUNTMAX;
         mbCheck[i] = true;
     }
+
+    for(i=0;i<NUM_MAX_MSG;i++)
+        if(i==0||i==1||i==4) msgCheck[i]=true;
+    else msgCheck[i]=false;
+
     image = new QImage(VIEW_WIDTH, VIEW_HEIGHT, QImage::Format_RGB32);//画布的初始化大小设为300*300,使用32位颜色
     mimagepaint = new QImage(VIEW_WIDTH, VIEW_HEIGHT, QImage::Format_RGB32);
     painter = new QPainter(image);
@@ -112,11 +118,26 @@ void IVRadarView::paint()
             }
         }
 
+        //根据类型改变颜色
+        if(xobj.has_acc_sta_obj_id())
+            xcolor = selradarcolor[0];
+        if(xobj.has_acc_mov_obj_id())
+            xcolor = selradarcolor[1];
+        if(xobj.has_cmbb_sta_obj_id())
+            xcolor = selradarcolor[2];
+        if(xobj.has_cmbb_mov_obj_id())
+            xcolor = selradarcolor[3];
+        if(xobj.has_fcw_sta_obj_id())
+            xcolor = selradarcolor[4];
+        if(xobj.has_fcw_mov_obj_id())
+            xcolor = selradarcolor[5];
+
         painter->setBrush(xcolor);
 
         for(i=0;i<xobj.obj_size();i++)
         {
             iv::radar::radarobject xr = xobj.obj(i);
+
             if(xr.bvalid())
             {
                 int x;
@@ -125,18 +146,66 @@ void IVRadarView::paint()
                 y = (int)(xr.y()*(-10.0));
 
                 painter->drawEllipse(x, y, 10, 10);
-                char strradar[1000];
-                sprintf(strradar,"(%6.1f %6.1f %6.1f)",xr.x(),xr.y(),xr.vel());
-                painter->drawText(x,y,strradar);
-                //            sprintf(coordinate_ear, "(%d, %d)", (int)ServiceCarStatus.obs_radar[a].nomal_x, (int)ServiceCarStatus.obs_radar[a].nomal_y);
-                //           painter->drawText(((ServiceCarStatus.obs_radar)[a].nomal_x) * 10 + 450, -(ServiceCarStatus.obs_radar)[a].nomal_y * 10 + 700, QString(coordinate_ear));
-
-            }
-        }
+//                char strradar[1000];
+//                sprintf(strradar,"(%6.1f %6.1f %6.1f)",xr.x(),xr.y(),xr.vel());
+//                painter->drawText(x,y,strradar);
+//                //            sprintf(coordinate_ear, "(%d, %d)", (int)ServiceCarStatus.obs_radar[a].nomal_x, (int)ServiceCarStatus.obs_radar[a].nomal_y);
+//                //           painter->drawText(((ServiceCarStatus.obs_radar)[a].nomal_x) * 10 + 450, -(ServiceCarStatus.obs_radar)[a].nomal_y * 10 + 700, QString(coordinate_ear));
+
+
+                QString str="";
+                if(msgCheck[0]) str+=QString::number(x)+",";
+                if(msgCheck[1]) str+=QString::number(y)+",";
+                if(msgCheck[2]) str+=QString::number(xr.vx())+",";
+                if(msgCheck[3]) str+=QString::number(xr.vy())+",";
+                if(msgCheck[4]) str+=QString::number(xr.vel())+",";
+                if(msgCheck[5]) str+="true,";
+                if(msgCheck[6]) str+=QString::number(xr.range())+",";
+                if(msgCheck[7]) str+=QString::number(xr.range_rate())+",";
+                if(msgCheck[8]) str+=QString::number(xr.range_accel())+",";
+                if(msgCheck[9]) str+=QString::number(xr.angle())+",";
+                if(msgCheck[10]) str+=QString::number(xr.width())+",";
+                if(msgCheck[11]) str+="true,";
+                if(msgCheck[12]) str+="true,";
+                if(msgCheck[13]) str+="true,";
+                if(msgCheck[14]) str+=QString::number(xr.med_range_mode())+",";
+                if(msgCheck[15]) str+=QString::number(xr.track_status())+",";
+                if(msgCheck[16]) str+="true,";
+                if(msgCheck[17]) str+="true,";
+                if(msgCheck[18]) str+="true,";
+                if(msgCheck[19]) str+="true,";
+                if(msgCheck[20]) str+=QString::number(xr.power())+",";
+                if(msgCheck[21]) str+=QString::number(xr.detect_valid_level())+",";
+                if(msgCheck[22]) str+="true,";
+
+                painter->drawText(x,y,str.length()>0? "("+str.mid(0,str.length()-1)+")":"");
+
+            }//if
+        }//for
 
         if(mnNotDataCount[k] <NOTDATACOUNTMAX)mnNotDataCount[k]++;
     }
 
+
+    double lrange = xobj.valid_lr_range()*10;
+    double langle = xobj.valid_lr_angle();
+    double mrange = xobj.valid_mr_range()*10;
+    double mangle = xobj.valid_mr_angle();
+
+    if(msgCheck[23]){
+        painter->setBrush(QBrush(QColor(255,0,0,80)));
+        //lrange=60*10,langle=75;
+        painter->drawPie(-lrange/2,-lrange/2,lrange,lrange,(180-langle)/2*16,langle*16);
+    }
+    if(msgCheck[24]){
+        painter->setBrush(QBrush(QColor(0,0,255,80)));
+        //mrange=40*10, mangle=100;
+        painter->drawPie(-mrange/2,-mrange/2,mrange,mrange,(180-mangle)/2*16,mangle*16);
+    }
+
+
+
+
     painter->end();
 
     mMutexPaint.lock();
@@ -180,7 +249,12 @@ void IVRadarView::SetRADAR(iv::radar::radarobjectarray radarobj,int index)
 
 void IVRadarView::SetCheck(int n, bool bcheck)
 {
-    if((n<0)||(n>NUM_MAX_RADAR))return;
-    mbCheck[n] = bcheck;
+//    if((n<0)||(n>NUM_MAX_RADAR))return;
+//    mbCheck[n] = bcheck;
+    if(n<0||n>NUM_MAX_MSG+NUM_MAX_RADAR) return;
+    else if(n<NUM_MAX_RADAR)
+        mbCheck[n]=bcheck;
+    else
+        msgCheck[n-NUM_MAX_RADAR]=bcheck;
 }
 

+ 3 - 2
src/tool/view_radar/ivradarview.h

@@ -6,7 +6,7 @@
 #include "radarobjectarray.pb.h"
 
 #define NUM_MAX_RADAR 6
-
+#define NUM_MAX_MSG 25
 class IVRadarView : public IVView
 {
 public:
@@ -34,11 +34,12 @@ private:
     iv::radar::radarobjectarray mradar[NUM_MAX_RADAR];
     bool mbCheck[NUM_MAX_RADAR];
 
+    bool msgCheck[NUM_MAX_MSG];
+
     const int NOTDATACOUNTMAX = 100;
     int mnNotDataCount[NUM_MAX_RADAR];
 
 
-
 public:
 
     void SetCheck(int n,bool bcheck);

+ 22 - 1
src/tool/view_radar/mainwindow.cpp

@@ -143,6 +143,19 @@ void MainWindow::CreateRightView(QGroupBox *pGroup)
        mpCheck[i] = pCheck;
    }
 
+   nYPos=10;
+   for(i=0;i<NUM_MAX_MSG;i++){
+       nXPos = 160;
+       nYPos = nYPos + 20;
+       pCheck = new QCheckBox(pGroup);
+       pCheck->setText(msgbox[i]);
+       pCheck->setGeometry(nXPos,nYPos,150,20);
+       msgCheck[i]=pCheck;
+       if(i==0||i==1||i==4) pCheck->setChecked(true);
+       connect(msgCheck[i],SIGNAL(clicked(bool)),this,SLOT(onCheckChange()));
+
+   }
+
    for(i=0;i<NUM_MAX_RADAR;i++)
    {
        mpCheck[i]->setChecked(true);
@@ -172,12 +185,20 @@ void MainWindow::onCheckChange()
     {
         if(pCheck == mpCheck[i])ncheck = i;
     }
-    std::cout<<"check is "<<ncheck<<std::endl;
+
+    if(ncheck<0)
+    for(i=0;i<NUM_MAX_MSG;i++)
+    {
+        if(pCheck == msgCheck[i])ncheck = i+NUM_MAX_RADAR;
+    }
+
+    std::cout<<"check is "<<ncheck<<" "<<pCheck->checkState()<<std::endl;
     if(ncheck < 0)return;
 
     mpRadarView->SetCheck(ncheck,pCheck->isChecked());
 }
 
+
 void MainWindow::paintEvent(QPaintEvent * e)
 {
     if(!mpRadarView->IsHaveNew())return;

+ 7 - 1
src/tool/view_radar/mainwindow.h

@@ -37,7 +37,7 @@ private:
 private slots:
     void onCheckChange();
 
-      virtual void paintEvent(QPaintEvent *);
+     virtual void paintEvent(QPaintEvent *);
 
    void onTimer();
 
@@ -45,6 +45,7 @@ private:
     Ui::MainWindow *ui;
 
     QCheckBox * mpCheck[NUM_MAX_RADAR];
+    QCheckBox * msgCheck[NUM_MAX_MSG];
     QGroupBox * mpGroup;
 
     MyView *myview;
@@ -57,6 +58,11 @@ private:
     void * mpa[NUM_MAX_RADAR];
 
 public:
+    QString msgbox[NUM_MAX_MSG]={"x","y","vx","vy","速度标量",
+                       "数据可信标志","极坐标下距离","纵向速度","纵向加速度","位置角度",
+                       "宽度","组别变化","相向移动","横向速度","目标被追踪模式",
+                       "追踪状态","桥梁标志","运动","快速运动","慢速运动",
+                       "信号反射强度","目标置信度","目标检测状态","长距雷达","中距雷达"};
     void UpdateRADAR(iv::radar::radarobjectarray radarobj,int index);
 //    void SetRADAR(iv);
 };

+ 1 - 2
src/tool/view_ultrasonicradar/mainwindow.cpp

@@ -17,7 +17,6 @@ void ListenRadar(const char * strdata,const unsigned int nSize,const unsigned in
         std::cout<<"Listenen UltrasonicRadar fail."<<std::endl;
         return;
     }
-    //gw->myobj.CopyFrom(uobj);
     gw->SetRadar(uobj);
 }
 
@@ -38,7 +37,7 @@ MainWindow::MainWindow(QWidget *parent) :
     gw=this;
     ui->setupUi(this);
 
-    qDebug("REGISTER"); //register//重要!
+    qDebug("REGISTER"); //register
     mpura = iv::modulecomm::RegisterRecv("ultra",ListenRadar);
 
     radarview = new RadarView();

+ 0 - 1
src/tool/view_ultrasonicradar/res.qrc

@@ -1,6 +1,5 @@
 <RCC>
     <qresource prefix="/">
         <file>car.png</file>
-        <file>dir.png</file>
     </qresource>
 </RCC>