|
@@ -1,6 +1,9 @@
|
|
|
#include "mainwindow.h"
|
|
|
#include "ui_mainwindow.h"
|
|
|
|
|
|
+#include "gnss_coordinate_convert.h"
|
|
|
+
|
|
|
+MainWindow * gw;
|
|
|
|
|
|
#define VIEW_WIDTH 6000
|
|
|
#define VIEW_HEIGHT 6000
|
|
@@ -8,12 +11,29 @@
|
|
|
std::string strtypevalue[]={"None","Solid","Dash","Solid Solid","Dash Dash","Solid Dash","Dash Solid"};
|
|
|
std::string strcolorvalue[]={"White","Yellow"};
|
|
|
|
|
|
+
|
|
|
+void UpdateGPS(const char * strdata,const unsigned int nSize)
|
|
|
+{
|
|
|
+ std::shared_ptr<iv::gps::gpsimu> xgpsimu_ptr = std::shared_ptr<iv::gps::gpsimu>(new iv::gps::gpsimu);
|
|
|
+
|
|
|
+ if(!xgpsimu_ptr->ParseFromArray(strdata,nSize))
|
|
|
+ {
|
|
|
+ qDebug("MainWindow::UpdateGPS Parse Error. nSize is ",nSize);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ gw->UpdateGPSIMU(xgpsimu_ptr);
|
|
|
+}
|
|
|
+
|
|
|
+LineItem * gt;
|
|
|
+QGraphicsEllipseItem * gpe;
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
|
, ui(new Ui::MainWindow)
|
|
|
{
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
+
|
|
|
ui->horizontalSlider_width->setRange(0,1000);
|
|
|
ui->horizontalSlider_width->setValue(360);
|
|
|
ui->lineEdit->setText("3.6");
|
|
@@ -37,6 +57,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
|
|
|
ui->lineEdit_DisLeft->setText("1.8");
|
|
|
ui->lineEdit_DisRight->setText("1.8");
|
|
|
+ ui->lineEdit_DisRight->setEnabled(false);
|
|
|
|
|
|
ui->radioButton_Auto->setChecked(true);
|
|
|
ui->pushButton_ManualCollect->setEnabled(false);
|
|
@@ -45,11 +66,6 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
myview->setObjectName(QStringLiteral("graphicsView"));
|
|
|
myview->setGeometry(QRect(820, 10,500, 585));
|
|
|
|
|
|
-// image = new QImage(2000, 2000, QImage::Format_RGB32);//画布的初始化大小设为300*300,使用32位颜色
|
|
|
-// myview->setCacheMode(myview->CacheBackground);
|
|
|
-// painter=new QPainter(this);
|
|
|
-// painter->end();
|
|
|
-// scene = new QGraphicsScene;
|
|
|
|
|
|
mpscene = new QGraphicsScene(0,0,VIEW_WIDTH,VIEW_HEIGHT);
|
|
|
mpscene->setBackgroundBrush(Qt::white);
|
|
@@ -66,8 +82,26 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
mpscene->addItem(ptext);
|
|
|
ptext->setPos(1000,1000);
|
|
|
|
|
|
+ LineItem * ptest = new LineItem(QPointF(100,100),QPointF(2000,100),1.0);
|
|
|
+ mpscene->addItem(ptest);
|
|
|
+ ptest->setPos(3000,3000);
|
|
|
+ gt = ptest;
|
|
|
+
|
|
|
+ QGraphicsEllipseItem * pe = new QGraphicsEllipseItem(-10.0,-10.0,20.0,20.0);
|
|
|
+ pe->setPos(3000,3000);
|
|
|
+ QBrush xBrush;
|
|
|
+ xBrush.setColor(Qt::blue);
|
|
|
+ pe->setBrush(Qt::green);
|
|
|
+ pe->setPen(Qt::NoPen);
|
|
|
+ mpscene->addItem(pe);
|
|
|
+ gpe = pe;
|
|
|
+
|
|
|
+ connect(this,SIGNAL(updategps()),this,SLOT(ongpsupdate()));
|
|
|
+
|
|
|
setWindowTitle("Collect Data From Vehicle");
|
|
|
|
|
|
+ gw = this;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
@@ -84,6 +118,7 @@ void MainWindow::on_lineEdit_textChanged(const QString &arg1)
|
|
|
if(value>10)return;
|
|
|
int nvalue = value *100.0;
|
|
|
ui->horizontalSlider_width->setValue(nvalue);
|
|
|
+ ChangeRightValue();
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_horizontalSlider_width_sliderMoved(int position)
|
|
@@ -92,6 +127,7 @@ void MainWindow::on_horizontalSlider_width_sliderMoved(int position)
|
|
|
double fvalue = nvalue;
|
|
|
fvalue = fvalue * 0.01;
|
|
|
ui->lineEdit->setText(QString::number(fvalue));
|
|
|
+ ChangeRightValue();
|
|
|
}
|
|
|
|
|
|
void MainWindow::resizeEvent(QResizeEvent *event)
|
|
@@ -111,6 +147,49 @@ void MainWindow::on_pushButton_NewRoad_clicked()
|
|
|
void MainWindow::paintEvent(QPaintEvent * event)
|
|
|
{
|
|
|
(void)event;
|
|
|
+
|
|
|
+ double ratio = myview->getbeishu();
|
|
|
+ gt->setratio(ratio);
|
|
|
+ gpe->setScale(1.0/ratio);
|
|
|
myview->setScene(mpscene);
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+void MainWindow::ChangeRightValue()
|
|
|
+{
|
|
|
+ double flanewidth = ui->lineEdit->text().toDouble();
|
|
|
+ double fleftvalue = ui->lineEdit_DisLeft->text().toDouble();
|
|
|
+ double fdisright = flanewidth - fleftvalue;
|
|
|
+ ui->lineEdit_DisRight->setText(QString::number(fdisright));
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_lineEdit_DisLeft_textChanged(const QString &arg1)
|
|
|
+{
|
|
|
+ if(arg1.length() == 0)return;
|
|
|
+ ChangeRightValue();
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::UpdateGPSIMU(std::shared_ptr<iv::gps::gpsimu> xgpsimu_ptr)
|
|
|
+{
|
|
|
+ mMutex.lock();
|
|
|
+ mgpsimu_ptr = xgpsimu_ptr;
|
|
|
+ mMutex.lock();
|
|
|
+
|
|
|
+ if(mbSetZero == false)
|
|
|
+ {
|
|
|
+ mlon0 = mgpsimu_ptr->lon();
|
|
|
+ mlat0 = mgpsimu_ptr->lat();
|
|
|
+ mbSetZero = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ emit updategps();
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::ongpsupdate()
|
|
|
+{
|
|
|
+ double xrelx,xrely,x0,y0,x1,y1;
|
|
|
+ GaussProjCal(mlon0,mlat0,&x0,&y0);
|
|
|
+ GaussProjCal(mgpsimu_ptr->lon(),mgpsimu_ptr->lat(),&x1,&y1);
|
|
|
+ xrelx = x1-x0;
|
|
|
+ xrely = y1-y0;
|
|
|
+}
|