|
@@ -5,35 +5,16 @@
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
-MainWindow * gw;
|
|
|
+#include "google/protobuf/io/zero_copy_stream_impl.h"
|
|
|
+#include "google/protobuf/text_format.h"
|
|
|
|
|
|
-extern std::string gstrmemradar[NUM_MAX_RADAR];
|
|
|
|
|
|
-void ListenRadar(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
|
-{
|
|
|
+#include <QFile>
|
|
|
|
|
|
- if(nSize<1)return;
|
|
|
- iv::radar::radarobjectarray xobj;
|
|
|
-
|
|
|
- if(false == xobj.ParseFromArray(strdata,nSize))
|
|
|
- {
|
|
|
- std::cout<<"ListenenRadar fail."<<std::endl;
|
|
|
- return;
|
|
|
- }
|
|
|
+MainWindow * gw;
|
|
|
|
|
|
- int i;
|
|
|
- int radarindex = -1;
|
|
|
- for(i=0;i<NUM_MAX_RADAR;i++)
|
|
|
- {
|
|
|
- if(strcmp(strmemname,gstrmemradar[i].data()) == 0)
|
|
|
- {
|
|
|
- radarindex =i;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(index >= 0)gw->UpdateRADAR(xobj,radarindex);
|
|
|
+extern std::string gstrmemradar[NUM_MAX_RADAR];
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
|
@@ -59,17 +40,12 @@ MainWindow::MainWindow(QWidget *parent) :
|
|
|
ModuleFun funojbect = std::bind(&MainWindow::UpdateObj,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
|
|
|
mpaobj = iv::modulecomm::RegisterRecvPlus("radar4dobj",funojbect);
|
|
|
|
|
|
- for(i=0;i<NUM_MAX_RADAR;i++)
|
|
|
- {
|
|
|
-// mpa[i] = iv::modulecomm::RegisterRecv(gstrmemradar[i].data(),ListenRadar);
|
|
|
- }
|
|
|
-// mpa = iv::modulecomm::RegisterRecv("radar",ListenRadar);
|
|
|
|
|
|
QTimer * xTimer = new QTimer(this);
|
|
|
connect(xTimer,SIGNAL(timeout()),this,SLOT(onTimer()));
|
|
|
xTimer->start(10);
|
|
|
|
|
|
- setWindowTitle("View RADAR");
|
|
|
+ setWindowTitle("View 4D RADAR");
|
|
|
|
|
|
|
|
|
}
|
|
@@ -90,6 +66,7 @@ MainWindow::~MainWindow()
|
|
|
|
|
|
void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
{
|
|
|
+ (void)event;
|
|
|
qDebug("resize");
|
|
|
QSize sizemain = ui->centralWidget->size();
|
|
|
qDebug("size x = %d y=%d",sizemain.width(),sizemain.height());
|
|
@@ -100,7 +77,7 @@ void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
|
|
|
void MainWindow::AdjustWPos(QSize sizemain)
|
|
|
{
|
|
|
- int i;
|
|
|
+// int i;
|
|
|
int width = (sizemain.width() - 300)/2;
|
|
|
if(width < 0)width = 20;
|
|
|
int hgt = (sizemain.height()-20)/2;
|
|
@@ -140,43 +117,41 @@ void MainWindow::CreateRightView(QGroupBox *pGroup)
|
|
|
|
|
|
QCheckBox * pCheck;
|
|
|
|
|
|
- for(i=0;i<NUM_MAX_RADAR;i++)
|
|
|
+ for(i=0;i<NUM_MAX_DETECTTYPE;i++)
|
|
|
{
|
|
|
nXPos = 10;
|
|
|
nYPos = nYPos + 50;
|
|
|
pCheck = new QCheckBox(pGroup);
|
|
|
- pCheck->setText(gstrmemradar[i].data());
|
|
|
+ pCheck->setChecked(true);
|
|
|
+ pCheck->setText(msgDetectType[i]);
|
|
|
pCheck->setGeometry(nXPos,nYPos,150,30);
|
|
|
- mpCheck[i] = pCheck;
|
|
|
+ mpCheckDetect[i] = pCheck;
|
|
|
+ connect(pCheck,SIGNAL(clicked(bool)),this,SLOT(onCheckChange()));
|
|
|
}
|
|
|
|
|
|
- nYPos = nYPos + 300;
|
|
|
+ nYPos = 10;
|
|
|
+ for(i=0;i<NUM_MAX_OBJECTTYPE;i++)
|
|
|
+ {
|
|
|
+ nXPos = 160;
|
|
|
+ nYPos = nYPos + 50;
|
|
|
+ pCheck = new QCheckBox(pGroup);
|
|
|
+ pCheck->setChecked(true);
|
|
|
+ pCheck->setText(msgObjectType[i]);
|
|
|
+ pCheck->setGeometry(nXPos,nYPos,150,30);
|
|
|
+ mpCheckObject[i] = pCheck;
|
|
|
+ connect(pCheck,SIGNAL(clicked(bool)),this,SLOT(onCheckChange()));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ nXPos = 10;
|
|
|
+ nYPos = nYPos + 150;
|
|
|
QPushButton * pSave = new QPushButton(pGroup);
|
|
|
pSave->setText(tr("Save Frame"));
|
|
|
pSave->setGeometry(nXPos,nYPos,150,50);
|
|
|
mpPBSaveFrame = pSave;
|
|
|
connect(pSave,SIGNAL(clicked()),this,SLOT(onSaveFrame()));
|
|
|
|
|
|
- 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);
|
|
|
- connect(mpCheck[i],SIGNAL(clicked(bool)),this,SLOT(onCheckChange()));
|
|
|
- }
|
|
|
-
|
|
|
-// connect(pSL,SIGNAL(valueChanged())),this,SLOT(onChangeWind());
|
|
|
}
|
|
|
|
|
|
//void MainWindow::SetRADAR(std::array<iv::ObstacleBasic,OBJ_NUM> xobs)
|
|
@@ -184,45 +159,6 @@ void MainWindow::CreateRightView(QGroupBox *pGroup)
|
|
|
//// mpRadarView->SetRADAR(xobs);
|
|
|
//}
|
|
|
|
|
|
-void MainWindow::UpdateRADAR(iv::radar::radarobjectarray radarobj,int index)
|
|
|
-{
|
|
|
- mpRadarView->SetRADAR(radarobj,index);
|
|
|
-
|
|
|
- if(mbSaveFrame)
|
|
|
- {
|
|
|
- QFile xFile;
|
|
|
- QString filename = QString("./")+QDateTime::currentDateTime().toString("RADARFRAME_yyyy-MM-dd-hh-mm-ss-zzz")+ QString(".txt");
|
|
|
- xFile.setFileName(filename);
|
|
|
- if(xFile.open(QIODevice::ReadWrite))
|
|
|
- {
|
|
|
- unsigned int i;
|
|
|
- unsigned int nobjsize = radarobj.obj_size();
|
|
|
- char strline[1000];
|
|
|
- if(nobjsize>0)
|
|
|
- {
|
|
|
- iv::radar::radarobject * pobj = radarobj.mutable_obj(0);
|
|
|
- (void)pobj;
|
|
|
- snprintf(strline,1000,"x\ty\tvx\t\vy\tvel\n");
|
|
|
- xFile.write(strline,strnlen(strline,1000));
|
|
|
- }
|
|
|
- for(i=0;i<nobjsize;i++)
|
|
|
- {
|
|
|
- iv::radar::radarobject * pobj = radarobj.mutable_obj(i);
|
|
|
- snprintf(strline,1000,"%6.3f\t%6.3f\t%6.3f\t%6.3f\t%6.3f\n",pobj->x(),pobj->y(),pobj->vx(),pobj->vy(),pobj->vel());
|
|
|
- xFile.write(strline,strnlen(strline,1000));
|
|
|
- }
|
|
|
-
|
|
|
- xFile.close();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- std::cout<<"save radar frame fail. file path: "<<filename.toStdString()<<std::endl;
|
|
|
- }
|
|
|
- mbSaveFrame = false;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
|
|
|
void MainWindow::onCheckChange()
|
|
|
{
|
|
@@ -230,21 +166,29 @@ void MainWindow::onCheckChange()
|
|
|
|
|
|
int i;
|
|
|
int ncheck = -1;
|
|
|
- for(i=0;i<NUM_MAX_RADAR;i++)
|
|
|
+
|
|
|
+ for(i=0;i<NUM_MAX_DETECTTYPE;i++)
|
|
|
{
|
|
|
- if(pCheck == mpCheck[i])ncheck = i;
|
|
|
+ if(pCheck == mpCheckDetect[i])ncheck = i;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ncheck >= 0)
|
|
|
+ {
|
|
|
+ mpRadarView->SetCheckDet(ncheck,pCheck->isChecked());
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
- if(ncheck<0)
|
|
|
- for(i=0;i<NUM_MAX_MSG;i++)
|
|
|
+
|
|
|
+ for(i=0;i<NUM_MAX_OBJECTTYPE;i++)
|
|
|
{
|
|
|
- if(pCheck == msgCheck[i])ncheck = i+NUM_MAX_RADAR;
|
|
|
+ if(pCheck == mpCheckObject[i])ncheck = i;
|
|
|
}
|
|
|
|
|
|
- std::cout<<"check is "<<ncheck<<" "<<pCheck->checkState()<<std::endl;
|
|
|
- if(ncheck < 0)return;
|
|
|
+ if(ncheck >= 0)
|
|
|
+ {
|
|
|
+ mpRadarView->SetCheckObj(ncheck,pCheck->isChecked());
|
|
|
+ }
|
|
|
|
|
|
- mpRadarView->SetCheck(ncheck,pCheck->isChecked());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -269,6 +213,8 @@ void MainWindow::onTimer()
|
|
|
void MainWindow::onSaveFrame()
|
|
|
{
|
|
|
mbSaveFrame = true;
|
|
|
+ mbSaveDet = true;
|
|
|
+ mbSaveObj = true;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -281,11 +227,43 @@ void MainWindow::UpdateDet(const char * strdata,const unsigned int nSize,const u
|
|
|
if(xdetarray.ParseFromArray(strdata,(int)nSize))
|
|
|
{
|
|
|
mpRadarView->SetRADAR4DDet(xdetarray);
|
|
|
+ if(mbSaveDet){
|
|
|
+ mbSaveDet = false;
|
|
|
+ using google::protobuf::TextFormat;
|
|
|
+ using google::protobuf::io::FileOutputStream;
|
|
|
+ using google::protobuf::io::ZeroCopyOutputStream;
|
|
|
+ std::string strout;
|
|
|
+ ZeroCopyOutputStream *output = new google::protobuf::io::StringOutputStream(&strout);//new FileOutputStream(file_descriptor);
|
|
|
+
|
|
|
+ bool success = TextFormat::Print(xdetarray, output);
|
|
|
+ if(success)
|
|
|
+ {
|
|
|
+ std::cout<<std::chrono::system_clock::now().time_since_epoch().count()<<" Detect:"<<std::endl;
|
|
|
+ std::cout<<strout.data()<<std::endl;
|
|
|
+ // qDebug(strout.data());
|
|
|
+ QFile xFile;
|
|
|
+ QString strfilename = QString("Detect-") + QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz.txt");
|
|
|
+ xFile.setFileName(strfilename);
|
|
|
+ if(xFile.open(QIODevice::ReadWrite))
|
|
|
+ {
|
|
|
+ xFile.write(strout.data(),strout.length());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ std::cout<<"open file : "<<strfilename.toLatin1().data()<<" fail. "<<std::endl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
std::cout<<"detection parse fail."<<std::endl;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
void MainWindow::UpdateObj(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
|
|
@@ -297,9 +275,40 @@ void MainWindow::UpdateObj(const char * strdata,const unsigned int nSize,const u
|
|
|
if(xobjarray.ParseFromArray(strdata,(int)nSize))
|
|
|
{
|
|
|
mpRadarView->SetRADAR4DObj(xobjarray);
|
|
|
+ if(mbSaveObj){
|
|
|
+ mbSaveObj = false;
|
|
|
+ using google::protobuf::TextFormat;
|
|
|
+ using google::protobuf::io::FileOutputStream;
|
|
|
+ using google::protobuf::io::ZeroCopyOutputStream;
|
|
|
+ std::string strout;
|
|
|
+ ZeroCopyOutputStream *output = new google::protobuf::io::StringOutputStream(&strout);//new FileOutputStream(file_descriptor);
|
|
|
+
|
|
|
+ bool success = TextFormat::Print(xobjarray, output);
|
|
|
+ if(success)
|
|
|
+ {
|
|
|
+ std::cout<<std::chrono::system_clock::now().time_since_epoch().count()<<" Object:"<<std::endl;
|
|
|
+ std::cout<<strout.data()<<std::endl;
|
|
|
+ // qDebug(strout.data());
|
|
|
+
|
|
|
+ QFile xFile;
|
|
|
+ QString strfilename = QString("Object-") + QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss-zzz.txt");
|
|
|
+ xFile.setFileName(strfilename);
|
|
|
+ if(xFile.open(QIODevice::ReadWrite))
|
|
|
+ {
|
|
|
+ xFile.write(strout.data(),strout.length());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ std::cout<<"open file : "<<strfilename.toLatin1().data()<<" fail. "<<std::endl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
std::cout<<"object parse fail."<<std::endl;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|