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