| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QTime>
- #include <iostream>
- MainWindow * gw;
- 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)
- {
- if(nSize<1)return;
- iv::radar::radarobjectarray xobj;
- if(false == xobj.ParseFromArray(strdata,nSize))
- {
- std::cout<<"ListenenRadar fail."<<std::endl;
- return;
- }
- 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);
- }
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- gw = this;
- ui->setupUi(this);
- mpRadarView = new IVRadarView();
- mpIVView = mpRadarView;
- mpIVView->start();
- CreateView();
- int i;
- 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");
- }
- MainWindow::~MainWindow()
- {
- QTime xTime;
- xTime.start();
- mpIVView->requestInterruption();
- while(xTime.elapsed()<1000)
- {
- if(mpIVView->isFinished())break;
- }
- delete ui;
- }
- void MainWindow::resizeEvent(QResizeEvent *event)
- {
- qDebug("resize");
- QSize sizemain = ui->centralWidget->size();
- qDebug("size x = %d y=%d",sizemain.width(),sizemain.height());
- AdjustWPos(sizemain);
- }
- void MainWindow::AdjustWPos(QSize sizemain)
- {
- int i;
- int width = (sizemain.width() - 300)/2;
- if(width < 0)width = 20;
- int hgt = (sizemain.height()-20)/2;
- myview->setGeometry(0,10,width*2,hgt*2 );
- mpGroup->setGeometry(width*2 + 20,10,sizemain.width()-width*2-20,sizemain.height()-20);
- // mgplidar->setGeometry(sizemain.width()-280,30,260,200);
- }
- void MainWindow::CreateView()
- {
- myview = new MyView(ui->centralWidget);
- myview->setObjectName(QStringLiteral("graphicsView"));
- myview->setGeometry(QRect(30, 30, 600, 600));
- myview->setCacheMode(myview->CacheBackground);
- scene = new QGraphicsScene;
- mpGroup = new QGroupBox(ui->centralWidget);
- CreateRightView(mpGroup);
- }
- void MainWindow::CreateRightView(QGroupBox *pGroup)
- {
- int nXPos;
- int nYPos = 10;
- int i;
- nXPos = 10;
- // nYPos = nYPos + 50;
- QCheckBox * pCheck;
- for(i=0;i<NUM_MAX_RADAR;i++)
- {
- nXPos = 10;
- nYPos = nYPos + 50;
- pCheck = new QCheckBox(pGroup);
- pCheck->setText(gstrmemradar[i].data());
- pCheck->setGeometry(nXPos,nYPos,150,30);
- mpCheck[i] = pCheck;
- }
- nYPos = nYPos + 300;
- 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)
- //{
- //// 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()
- {
- QCheckBox * pCheck = dynamic_cast<QCheckBox *>(this->sender());
- int i;
- int ncheck = -1;
- for(i=0;i<NUM_MAX_RADAR;i++)
- {
- if(pCheck == mpCheck[i])ncheck = i;
- }
- 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)
- {
- (void)e;
- if(!mpRadarView->IsHaveNew())return;
- QImage image = mpRadarView->GetImage();
- scene->clear();
- scene->addPixmap(QPixmap::fromImage(image));
- myview->setScene(scene);
- myview->show();
- }
- void MainWindow::onTimer()
- {
- update();
- }
- void MainWindow::onSaveFrame()
- {
- mbSaveFrame = true;
- }
|