merge
This commit is contained in:
+630
-195
@@ -7,92 +7,101 @@
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
{
|
||||
//setGeometry();
|
||||
|
||||
//检测qml文件夹,如果不存在,那么就新建一个,这里存着所有的qml文件
|
||||
/*
|
||||
QDir *qmlDir = new QDir;
|
||||
if(!qmlDir->exists("./qml"))
|
||||
qmlDir->mkdir("./qml");//如果文件夹不存在就新建
|
||||
*/
|
||||
|
||||
|
||||
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||
|
||||
tts = new QTextToSpeech(this);
|
||||
|
||||
//ui initial
|
||||
linkui = new LinkUI(this);
|
||||
linkui->hide();
|
||||
|
||||
inspectui = new InspectUI(this);
|
||||
inspectui->hide();
|
||||
//menubar
|
||||
menuBarUI = new MenuBarUI(this);
|
||||
|
||||
connect(menuBarUI,SIGNAL(IndexChanged(int)),
|
||||
this,SLOT(onTabIndexChanged(int)));
|
||||
|
||||
|
||||
//---------------
|
||||
//设置
|
||||
setting = new Setting(this);
|
||||
setting->hide();
|
||||
|
||||
//自检
|
||||
checkUI = new CheckUI(this);
|
||||
checkUI->hide();
|
||||
|
||||
//信息
|
||||
toolsui = new ToolsUI(this);
|
||||
toolsui->hide();
|
||||
|
||||
|
||||
about = new About();
|
||||
about->hide();
|
||||
|
||||
help = new Help();
|
||||
help->hide();
|
||||
|
||||
setting = new Setting();
|
||||
setting->hide();
|
||||
//指令
|
||||
commandUI = new CommandUI(this);
|
||||
|
||||
|
||||
dlink = new DLink();
|
||||
connect(dlink->mavlinknode,SIGNAL(state_updated()),
|
||||
this,SLOT(updateUI()));
|
||||
|
||||
|
||||
map = new mapcontrol::OPMapWidget(this);
|
||||
|
||||
map->SetShowHome(false);
|
||||
map->SetShowCompass(false);
|
||||
map->SetUseOpenGL(true);
|
||||
|
||||
map->setAttribute(Qt::WA_AlwaysStackOnTop);
|
||||
|
||||
//QString maptype = myinifile->ReadIni("FGCS.ini","Map","Type");
|
||||
map->SetMapType(mapcontrol::Helper::MapTypeFromString("BingSatellite"));
|
||||
|
||||
//QString maptype = myinifile->ReadIni("GCS.ini","Map","Type");
|
||||
map->SetMapType(mapcontrol::Helper::MapTypeFromString("BingHybrid"));
|
||||
map->setWPLock(true);
|
||||
map->setFocus();
|
||||
map->SetShowCompass(false);
|
||||
map->setMouseTracking(true);
|
||||
|
||||
//=========初始化UAV=========
|
||||
map->SetShowUAV(true);//先show才能设置
|
||||
map->SetUavPic("Rotor.png");
|
||||
|
||||
internals::PointLatLng position;
|
||||
position.SetLat(0);
|
||||
position.SetLng(0);
|
||||
map->UAV->SetUAVPos(position,10);
|
||||
map->UAV->SetShowTrail(false);
|
||||
|
||||
map->setGeometry(0,
|
||||
0,
|
||||
this->width(),
|
||||
this->height());
|
||||
|
||||
qDebug() << "map start";
|
||||
|
||||
|
||||
copk = new Cockpit(this);
|
||||
copk->setGeometry(this->width() - copk->width(),0,340,340);
|
||||
|
||||
|
||||
missionUI = new propertyui(this);
|
||||
missionUI->hide();
|
||||
|
||||
|
||||
QIcon icon;
|
||||
//this ----- dlink
|
||||
connect(dlink->mavlinknode,SIGNAL(beep()),
|
||||
this,SLOT(beep()),Qt::DirectConnection);
|
||||
|
||||
nav = new QNavigationWidget(this);
|
||||
//this ----- map
|
||||
connect(map,SIGNAL(TotalDistanceUpdate(double)),
|
||||
this,SLOT(TotalDistance(double)));
|
||||
|
||||
nav->setGeometry(0,0,50,this->height());
|
||||
nav->setRowHeight(50);
|
||||
nav->addItem(tr("Flight"),icon);
|
||||
nav->addItem(tr("Mission"),icon);//mission
|
||||
nav->addItem(tr("Communication"),icon);//all link
|
||||
nav->addItem(tr("Inspector"),icon);// mavlink param
|
||||
nav->addItem(tr("Command"),icon);//cmd console
|
||||
nav->addItem(tr("Data"),icon);//all data
|
||||
nav->addItem(tr("Tools"),icon);//soft setting help about
|
||||
//tools ----- map
|
||||
connect(dlink->mavlinknode,SIGNAL(recievemsg(mavlink_message_t)),
|
||||
toolsui->index0->mavlinkinspector,SLOT(receiveMessage(mavlink_message_t)),Qt::DirectConnection);
|
||||
|
||||
connect(nav,SIGNAL(ItemChanged(int)),
|
||||
this,SLOT(onTabIndexChanged(int)));
|
||||
//dlink ----- tools
|
||||
connect(toolsui->index2,SIGNAL(setPlay(bool)),
|
||||
dlink->mavlinknode->replay,SLOT(startReplay(bool)),Qt::DirectConnection);
|
||||
|
||||
connect(nav,SIGNAL(SizeChanged(QResizeEvent*)),
|
||||
this,SLOT(resizeEvent(QResizeEvent*)));
|
||||
connect(toolsui->index2,SIGNAL(setFileName(QString)),
|
||||
dlink->mavlinknode,SLOT(setLogfile(QString)),Qt::DirectConnection);
|
||||
|
||||
<<<<<<< HEAD
|
||||
copk = new Cockpit(this);
|
||||
|
||||
connect(copk,SIGNAL(SizeChanged(QResizeEvent*)),
|
||||
@@ -100,63 +109,189 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
copk->setGeometry(this->width() - copk->width(),0,300,340);
|
||||
copk->show();
|
||||
=======
|
||||
connect(toolsui->index2,SIGNAL(setPercentage(float)),
|
||||
dlink->mavlinknode->replay,SLOT(setPercentage(float)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode->replay,SIGNAL(currentPercentage(float)),
|
||||
toolsui->index2,SLOT(setCurrentPercentage(float)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode->replay,SIGNAL(replayComplete()),
|
||||
toolsui->index2,SLOT(ReplayComplete()),Qt::DirectConnection);
|
||||
>>>>>>> develop
|
||||
|
||||
//setting ----- map
|
||||
connect(setting->index0->mapsetting,SIGNAL(getMapTypes()),
|
||||
map,SLOT(getMapTypes()));
|
||||
|
||||
connect(map,SIGNAL(MapTypes(QStringList)),
|
||||
setting->index0->mapsetting,SLOT(MapTypes(QStringList)));
|
||||
|
||||
connect(setting->index0->mapsetting,SIGNAL(setMapTypes(QVariant)),
|
||||
map,SLOT(setMapTypes(QVariant)));
|
||||
|
||||
|
||||
//在quick load 之前注册即可
|
||||
qmlRegisterType<CommandMsg>("CommandMsg", 1, 0, "CommandMsg");
|
||||
//command ----- dlink
|
||||
connect(commandUI,SIGNAL(cmd_long(float,float,float,float,float,float,float,uint16_t,uint8_t)),
|
||||
dlink->mavlinknode->Commander,SLOT(WriteCmd_long(float,float,float,float,float,float,float,uint16_t,uint8_t)),Qt::DirectConnection);
|
||||
|
||||
|
||||
quick = new QQuickWidget(this);
|
||||
quick->setFocus();
|
||||
quick->setResizeMode(QQuickWidget::SizeRootObjectToView);
|
||||
quick->setAttribute(Qt::WA_AlwaysStackOnTop);
|
||||
QUrl source(QUrl(QStringLiteral("qrc:/App/qml/base.qml")));
|
||||
quick->setSource(source);
|
||||
quick->setGeometry(this->width() - copk->width(),copk->height(),300,this->height() - copk->height());
|
||||
quick->show();
|
||||
connect(dlink->mavlinknode->Commander,SIGNAL(commandAccepted(bool,uint16_t,uint8_t)),
|
||||
commandUI,SLOT(commandAccepted(bool,uint16_t,uint8_t)),Qt::DirectConnection);
|
||||
|
||||
//check ----- dlink
|
||||
connect(checkUI,SIGNAL(cmd_long(float,float,float,float,float,float,float,uint16_t,uint8_t)),
|
||||
dlink->mavlinknode->Commander,SLOT(WriteCmd_long(float,float,float,float,float,float,float,uint16_t,uint8_t)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(recievemsg(mavlink_message_t)),
|
||||
checkUI,SLOT(RecieveMsg(mavlink_message_t)));
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
checkUI,SLOT(addVehicles(int,int)));
|
||||
|
||||
//setting ----- dlink
|
||||
connect(dlink,SIGNAL(PortConnected(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)),
|
||||
setting->index0->link,SIGNAL(PortConnect(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(state_updated()),
|
||||
this,SLOT(updateUI()));
|
||||
|
||||
connect(setting->index0->link,SIGNAL(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)),
|
||||
dlink,SLOT(connectSignal(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)));
|
||||
|
||||
qRegisterMetaType<mavlink_message_t>("mavlink_message_t");
|
||||
|
||||
connect(dlink->mavlinknode->Parameter,SIGNAL(RecieveValue(mavlink_message_t)),
|
||||
setting->index1->paramInspect,SLOT(appendParameter(mavlink_message_t)));
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
setting->index1->paramInspect,SLOT(addVehicles(int,int)),Qt::DirectConnection);
|
||||
|
||||
connect(setting->index1->paramInspect,SIGNAL(ReadCmd(uint8_t,uint8_t,uint8_t)),
|
||||
dlink->mavlinknode->Parameter,SLOT(ReadCmd(uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
|
||||
|
||||
connect(setting->index1->paramInspect,SIGNAL(WriteCmd(uint8_t,uint8_t,const char*,uint8_t,float)),
|
||||
dlink->mavlinknode->Parameter,SLOT(WriteCmd(uint8_t,uint8_t,const char*,uint8_t,float)),Qt::DirectConnection);
|
||||
|
||||
//mision ----- map
|
||||
connect(map, SIGNAL(WPProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
|
||||
missionUI,SLOT(setWayPointProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)));
|
||||
|
||||
connect(missionUI,SIGNAL(WayPointPropertyChanged(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
|
||||
map,SIGNAL(setWPProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)));
|
||||
|
||||
|
||||
QObject *pRoot = (QObject*)quick->rootObject();
|
||||
const QObjectList list = pRoot->children();
|
||||
connect(missionUI,SIGNAL(WPotherPoint(int)),
|
||||
map,SLOT(WPotherPoint(int)));
|
||||
|
||||
foreach(QObject *Item,list)//查找 CommandMsg 类,然后连接
|
||||
{
|
||||
|
||||
if((QString)Item->metaObject()->className() == "CommandMsg fund")//找到 CommandMsg 类
|
||||
{
|
||||
qDebug() << Item->metaObject()->className() << Item->objectName();
|
||||
m_Command = static_cast<CommandMsg*>(Item);
|
||||
connect(m_Command,SIGNAL(cmd_int(float,float,float,float,int,int,float)),
|
||||
dlink->mavlinknode->Commander,SLOT(_int(float,float,float,float,int32_t,int32_t,float,uint16_t,uint8_t,uint8_t,uint8_t)));
|
||||
}
|
||||
}
|
||||
connect(missionUI,SIGNAL(WPDelete(int)),
|
||||
map,SLOT(WPDelete(int)));
|
||||
|
||||
connect(missionUI,SIGNAL(WPInsert(int)),
|
||||
map,SLOT(WPInsert(int)));
|
||||
|
||||
connect(missionUI,SIGNAL(WPUpload()),
|
||||
map,SLOT(WPUpload()));
|
||||
|
||||
connect(missionUI,SIGNAL(WPDownload()),
|
||||
map,SLOT(WPDownload()));
|
||||
|
||||
connect(missionUI,SIGNAL(WPSave(QString)),
|
||||
map,SLOT(WPSave(QString)));
|
||||
|
||||
connect(missionUI,SIGNAL(WPLoad(QString)),
|
||||
map,SLOT(WPLoad(QString)));
|
||||
|
||||
connect(map,SIGNAL(allPoint(QMap<int,int>)),
|
||||
missionUI,SLOT(setallPoint(QMap<int,int>)));
|
||||
|
||||
connect(missionUI,SIGNAL(searchall()),
|
||||
map,SLOT(WPsearchall()));
|
||||
|
||||
//dlink ----- map
|
||||
connect(map,SIGNAL(signal_WPDownload(uint8_t, uint8_t)),
|
||||
dlink->mavlinknode->Mission,SLOT(ReadCmd(uint8_t, uint8_t)),Qt::DirectConnection);
|
||||
|
||||
connect(map,SIGNAL(signal_WPUpload(uint8_t,uint8_t,uint32_t)),
|
||||
dlink->mavlinknode->Mission,SLOT(WriteCmd(uint8_t,uint8_t,uint32_t)),Qt::DirectConnection);
|
||||
|
||||
|
||||
//生成航线必须在map线程完成,因此不能直接连接
|
||||
//停下来让ui、运行一下
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(receivedPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
|
||||
map,SLOT(receivedPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),Qt::BlockingQueuedConnection);
|
||||
|
||||
connect(map,SIGNAL(WPProperty(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),
|
||||
dlink->mavlinknode->Mission,SLOT(transmitPoint(float,float,float,float,int32_t,int32_t,float,uint16_t,uint16_t,uint16_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t,uint8_t)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(clearWaypoint()),
|
||||
map,SLOT(WPDeleteAll()));
|
||||
|
||||
|
||||
connect(dlink->mavlinknode,SIGNAL(addVehicles(int,int)),
|
||||
map,SLOT(addUAV(int,int)));
|
||||
|
||||
connect(map,SIGNAL(uav_selected(int,int)),
|
||||
dlink->mavlinknode,SLOT(setCurrentSelected(int,int)),Qt::DirectConnection);
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(sendItemOK(uint16_t,bool)),
|
||||
map,SLOT(WPSendItemOK(uint16_t,bool)),Qt::DirectConnection);
|
||||
|
||||
//航点确认窗口
|
||||
connect(map,SIGNAL(setCurrent(int)),
|
||||
commandUI,SLOT(missionConfirm(int)),Qt::DirectConnection);
|
||||
|
||||
|
||||
connect(commandUI,SIGNAL(SetCurrentPoint(int)),
|
||||
dlink->mavlinknode->Mission,SLOT(SetCurrentPoint(int)),Qt::DirectConnection);
|
||||
|
||||
|
||||
|
||||
//刷新ui,以保证界面不卡
|
||||
QTimer::singleShot(200,this,&MainWindow::updateUI);
|
||||
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||
map,SLOT(WPSetCurrent(int)),Qt::DirectConnection);
|
||||
|
||||
//=======信号和槽========
|
||||
connect(linkui,&LinkUI::clicked,
|
||||
this,&MainWindow::subui);
|
||||
//==== showmessage=====
|
||||
connect(copk,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||
connect(dlink,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||
connect(map,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||
|
||||
connect(inspectui,&InspectUI::clicked,
|
||||
this,&MainWindow::subui);
|
||||
qDebug() << "main window start";
|
||||
//监测ssl,用于网络连接
|
||||
qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
|
||||
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
|
||||
|
||||
connect(toolsui,&ToolsUI::clicked,
|
||||
this,&MainWindow::subui);
|
||||
//showMessage(tr("航点传输有问题,无法传输最后一个点,航点计数可能有问题"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
map->close();
|
||||
delete map;
|
||||
if(tts)
|
||||
{
|
||||
tts->stop();
|
||||
delete tts;
|
||||
tts = nullptr;
|
||||
}
|
||||
|
||||
copk->deleteLater();
|
||||
delete copk;
|
||||
if(map)
|
||||
{
|
||||
map->close();
|
||||
delete map;
|
||||
}
|
||||
|
||||
if(dlink)
|
||||
{
|
||||
//dlink->stopPort();
|
||||
delete dlink;
|
||||
}
|
||||
|
||||
if(copk)
|
||||
{
|
||||
copk->close();
|
||||
delete copk;
|
||||
}
|
||||
|
||||
QCoreApplication::quit();//退出所有窗口
|
||||
}
|
||||
@@ -169,19 +304,40 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
||||
|
||||
void MainWindow::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
qDebug() << event;
|
||||
|
||||
Q_UNUSED(event)
|
||||
|
||||
map->setGeometry(nav->width(),
|
||||
0,
|
||||
this->width()- copk->width() - nav->width(),
|
||||
this->height());
|
||||
|
||||
nav->setGeometry(0,0,nav->width(),this->height());
|
||||
copk->setGeometry(this->width() - copk->width(),0,copk->width(),copk->height());
|
||||
quick->setGeometry(this->width() - quick->width(),copk->height(),quick->width(),this->height() - copk->height());
|
||||
menuBarUI->setGeometry(0,0,this->width(),100);
|
||||
|
||||
qDebug() << "resize";
|
||||
|
||||
setting->setGeometry(0,menuBarUI->height(),
|
||||
this->width(),this->height() - menuBarUI->height());
|
||||
|
||||
checkUI->setGeometry(0,menuBarUI->height(),
|
||||
this->width(),this->height() - menuBarUI->height());
|
||||
|
||||
|
||||
map->setGeometry(0,menuBarUI->height(),
|
||||
this->width()- copk->width(),this->height() - menuBarUI->height());
|
||||
|
||||
|
||||
copk->setGeometry(this->width() - copk->width(),menuBarUI->height(),
|
||||
copk->width(),copk->height());
|
||||
|
||||
missionUI->setGeometry(this->width() - copk->width(),menuBarUI->height(),
|
||||
copk->width(),this->height() - menuBarUI->height());
|
||||
|
||||
|
||||
commandUI->setGeometry(this->width() - copk->width(),menuBarUI->height() + copk->height(),
|
||||
copk->width(),this->height() - menuBarUI->height() - copk->height());
|
||||
|
||||
|
||||
toolsui->setGeometry(0,menuBarUI->height(),
|
||||
this->width(),this->height() - menuBarUI->height());
|
||||
|
||||
update();
|
||||
|
||||
}
|
||||
@@ -190,18 +346,8 @@ void MainWindow::resizeEvent(QResizeEvent *event)
|
||||
void MainWindow::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
|
||||
internals::PointLatLng LatLng;
|
||||
LatLng.SetLat(map->currentMousePosition().Lat());
|
||||
LatLng.SetLng(map->currentMousePosition().Lng());
|
||||
|
||||
//qDebug() << LatLng.Lat() << LatLng.Lng();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
//qDebug() << event;
|
||||
@@ -222,7 +368,7 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
case Qt::Key_D:
|
||||
if(event->modifiers() == Qt::AltModifier)
|
||||
{
|
||||
qInfo() << "alt + D";
|
||||
qInfo() << "alt + D";
|
||||
}
|
||||
break;
|
||||
case Qt::Key_U :
|
||||
@@ -260,15 +406,16 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
break;
|
||||
case Qt::Key_Space :
|
||||
{
|
||||
internals::PointLatLng LatLng;
|
||||
map->SetCurrentPosition(LatLng);
|
||||
//map->setcu
|
||||
map->SetCurrentPosition();
|
||||
//根据选中的飞机设置当前位置
|
||||
}
|
||||
break;
|
||||
case Qt::Key_Equal :
|
||||
{
|
||||
if(event->modifiers() == Qt::ShiftModifier)
|
||||
{
|
||||
//map->WPFind(rechcount)->SetReached(true);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -280,9 +427,7 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
if(event->modifiers() == Qt::ShiftModifier)
|
||||
{
|
||||
//map->WPFind(rechcount)->SetReached(true);
|
||||
//rechcount++;
|
||||
//qDebug() << rechcount;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -290,9 +435,7 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
if(event->modifiers() == Qt::ShiftModifier)
|
||||
{
|
||||
//map->WPFind(rechcount)->SetReached(true);
|
||||
//rechcount--;
|
||||
//qDebug() << rechcount;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -304,46 +447,17 @@ void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
if(event->modifiers() == Qt::AltModifier)
|
||||
{
|
||||
map->UAV->DeleteTrail();
|
||||
map->DeleteTrail();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::subui(QString arg)//子界面管理
|
||||
bool MainWindow::event(QEvent *event)
|
||||
{
|
||||
if(arg == tr("SerialPort"))
|
||||
{
|
||||
dlink_triggered();
|
||||
}
|
||||
else if(arg == tr("UDP"))
|
||||
{
|
||||
client_triggered();
|
||||
}
|
||||
else if(arg == tr("Mavlink"))
|
||||
{
|
||||
dlink->mavlinknode->mavlinkinspector->show();
|
||||
}
|
||||
else if(arg == tr("Parameter"))
|
||||
{
|
||||
dlink->mavlinknode->Parameter->paramInspect->show();
|
||||
}
|
||||
else if(arg == tr("About"))
|
||||
{
|
||||
about->show();
|
||||
}
|
||||
else if(arg == tr("Setting"))
|
||||
{
|
||||
setting->show();
|
||||
}
|
||||
else if(arg == tr("Help"))
|
||||
{
|
||||
help->show();
|
||||
}
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
void MainWindow::onTabIndexChanged(const int &index)//界面选择管理
|
||||
{
|
||||
@@ -359,101 +473,422 @@ void MainWindow::onTabIndexChanged(const int &index)//界面选择管理
|
||||
{
|
||||
copk->hide();
|
||||
quick->hide();
|
||||
=======
|
||||
/*
|
||||
switch (event->type()) {
|
||||
case QEvent::TouchBegin:
|
||||
case QEvent::TouchUpdate:
|
||||
case QEvent::TouchEnd:
|
||||
{
|
||||
qDebug() <<"CProjectionPicture::event";
|
||||
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
|
||||
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
|
||||
if (touchPoints.count() == 2) {
|
||||
//m_bIsTwoPoint = true;//两指时不让移动
|
||||
const QTouchEvent::TouchPoint &touchPoint0 = touchPoints.first();
|
||||
const QTouchEvent::TouchPoint &touchPoint1 = touchPoints.last();
|
||||
qreal currentScaleFactor =
|
||||
QLineF(touchPoint0.pos(), touchPoint1.pos()).length()
|
||||
/ QLineF(touchPoint0.startPos(), touchPoint1.startPos()).length();
|
||||
|
||||
if (touchEvent->touchPointStates() & Qt::TouchPointReleased) {
|
||||
if(QLineF(touchPoint0.pos(), touchPoint1.pos()).length() > QLineF(touchPoint0.startPos(), touchPoint1.startPos()).length())
|
||||
map->SetZoom(map->ZoomReal() + currentScaleFactor);
|
||||
else if(QLineF(touchPoint0.pos(), touchPoint1.pos()).length() < QLineF(touchPoint0.startPos(), touchPoint1.startPos()).length())
|
||||
map->SetZoom(map->ZoomReal() - currentScaleFactor);
|
||||
qDebug() << "currentScaleFactor" << currentScaleFactor;
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
else if(touchPoints.count() == 1){
|
||||
//m_bIsTwoPoint = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
>>>>>>> develop
|
||||
}
|
||||
*/
|
||||
|
||||
return QWidget::event(event);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
|
||||
if(index == 2) linkui->show();
|
||||
else linkui->hide();
|
||||
=======
|
||||
>>>>>>> develop
|
||||
|
||||
if(index == 3) inspectui->show();
|
||||
else inspectui->hide();
|
||||
|
||||
if(index == 4)
|
||||
void MainWindow::onTabIndexChanged(const int &index)//界面选择管理
|
||||
{
|
||||
//记录主界面目录
|
||||
MainIndex = index;
|
||||
//设置
|
||||
if(index == 0) setting->show();
|
||||
else setting->hide();
|
||||
|
||||
//自检
|
||||
if(index == 1) checkUI->show();
|
||||
else checkUI->hide();
|
||||
|
||||
//任务
|
||||
if(index == 2)
|
||||
{
|
||||
qDebug() << "index:" << index;
|
||||
map->setWPLock(false);
|
||||
map->setWPCreate(true);
|
||||
missionUI->show();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
map->setWPLock(true);
|
||||
map->setWPCreate(false);
|
||||
missionUI->hide();
|
||||
}
|
||||
|
||||
if(index == 5)
|
||||
if((index == 2)||(index == 3)) map->show();
|
||||
else map->hide();
|
||||
|
||||
|
||||
//飞行
|
||||
if(index == 3)
|
||||
{
|
||||
qDebug() << "index:" << index;
|
||||
copk->show();
|
||||
commandUI->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
copk->hide();
|
||||
commandUI->hide();
|
||||
}
|
||||
|
||||
|
||||
if(index == 6) toolsui->show();
|
||||
//信息
|
||||
if(index == 4) toolsui->show();
|
||||
else toolsui->hide();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::dlink_triggered()
|
||||
|
||||
void MainWindow::showMessage(const QString &message, int TimeOut)
|
||||
{
|
||||
|
||||
if(dlink->statesPort())
|
||||
{
|
||||
disconnectdialog dlg(this);
|
||||
|
||||
dlg.setWindowTitle(tr("SerialPort"));
|
||||
dlg.setWindowIcon(QIcon("qrc:/images/LinkUI/SerialPort.ico"));
|
||||
|
||||
int ret = dlg.exec();
|
||||
if (QDialog::Accepted == ret)
|
||||
{
|
||||
dlink->stopPort();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ConnectDialog dlg(this);
|
||||
|
||||
dlg.setWindowTitle(tr("SerialPort"));
|
||||
dlg.setWindowIcon(QIcon("qrc:/images/LinkUI/SerialPort.ico"));
|
||||
|
||||
dlg.baudrate = 115200;
|
||||
dlg.parity = QSerialPort::NoParity;
|
||||
int ret = dlg.exec();
|
||||
if (QDialog::Accepted == ret)
|
||||
{
|
||||
dlink->setupPort(dlg.port, dlg.baudrate,dlg.parity);
|
||||
}
|
||||
}
|
||||
|
||||
menuBarUI->showMessage(message,TimeOut);
|
||||
}
|
||||
|
||||
void MainWindow::client_triggered()
|
||||
void MainWindow::beep(void)
|
||||
{
|
||||
ClientLinkDialog dlg(this);
|
||||
|
||||
dlg.setWindowTitle(tr("ClientLink"));
|
||||
dlg.setWindowIcon(QIcon(":/images/LinkUI/Client.ico"));
|
||||
|
||||
int ret = dlg.exec();
|
||||
if (QDialog::Accepted == ret)
|
||||
{
|
||||
dlink->setupClient(dlg.remote_addr,dlg.remote_port,dlg.local_port);
|
||||
}
|
||||
QApplication::beep();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 16~20Hz左右 运行频率可能太高
|
||||
void MainWindow::updateUI()//事件驱动式更新数据
|
||||
{
|
||||
static uint32_t custommode_old = 0;
|
||||
static uint8_t state_old = 0;
|
||||
bool isCustomChanged = false;
|
||||
bool isStateChanged = false;
|
||||
|
||||
static quint64 lastTime = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
|
||||
|
||||
/*
|
||||
static int frq_count = 0;
|
||||
static qint64 frq_time = 0;
|
||||
|
||||
frq_count++;
|
||||
if((QDateTime::currentMSecsSinceEpoch() - frq_time) >= 1000)
|
||||
{
|
||||
qDebug() <<frq_time << "running frq is:" << frq_count;
|
||||
|
||||
frq_count = 0;
|
||||
|
||||
frq_time = QDateTime::currentMSecsSinceEpoch();
|
||||
}
|
||||
*/
|
||||
|
||||
copk->setAttitude(dlink->mavlinknode->vehicle.attitude.pitch * 57.3,
|
||||
dlink->mavlinknode->vehicle.attitude.roll * 57.3,
|
||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||
|
||||
copk->setAltitude(dlink->mavlinknode->vehicle.gps_raw_int.alt * 10e-3 );
|
||||
copk->setAirSpeed(dlink->mavlinknode->vehicle.airspeed_autocal.vx);
|
||||
copk->setAltitude(dlink->mavlinknode->vehicle.global_position_int.relative_alt * 10e-4);
|
||||
copk->setAltitudeTarget(dlink->mavlinknode->vehicle.global_position_int.relative_alt * 10e-4
|
||||
+dlink->mavlinknode->vehicle.nav_controller_output.alt_error);
|
||||
|
||||
update();
|
||||
copk->setAirSpeed(dlink->mavlinknode->vehicle.vfr_hud.airspeed,2);
|
||||
copk->setAirSpeedTarget(dlink->mavlinknode->vehicle.vfr_hud.airspeed
|
||||
+dlink->mavlinknode->vehicle.nav_controller_output.aspd_error,2);
|
||||
|
||||
|
||||
copk->setVerticalSpeed(dlink->mavlinknode->vehicle.global_position_int.vz * 10e-3);
|
||||
|
||||
|
||||
|
||||
copk->setAlt_err(dlink->mavlinknode->vehicle.nav_controller_output.alt_error);
|
||||
copk->setXTrack(-dlink->mavlinknode->vehicle.nav_controller_output.xtrack_error);
|
||||
|
||||
copk->setRollTarget(dlink->mavlinknode->vehicle.nav_controller_output.nav_roll);
|
||||
copk->setPitchTarget(dlink->mavlinknode->vehicle.nav_controller_output.nav_pitch);
|
||||
copk->setYawTarget(dlink->mavlinknode->vehicle.nav_controller_output.nav_bearing);
|
||||
|
||||
|
||||
|
||||
QString gps_str;
|
||||
gps_str.clear();
|
||||
|
||||
switch (dlink->mavlinknode->vehicle.gps_raw_int.fix_type) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
gps_str.append(tr("%1D Fix").arg(dlink->mavlinknode->vehicle.gps_raw_int.fix_type));
|
||||
break;
|
||||
case 4:
|
||||
gps_str.append(tr("Fixed"));
|
||||
break;
|
||||
case 5:
|
||||
gps_str.append(tr("Float"));
|
||||
break;
|
||||
default:
|
||||
gps_str.append(tr("gps err"));
|
||||
break;
|
||||
}
|
||||
|
||||
copk->setGPS(gps_str);
|
||||
|
||||
|
||||
|
||||
QString arm_str;
|
||||
arm_str.clear();
|
||||
|
||||
uint8_t state = 0;
|
||||
|
||||
state = (dlink->mavlinknode->vehicle.heartbeat.base_mode&MAV_MODE_FLAG::MAV_MODE_FLAG_SAFETY_ARMED);
|
||||
|
||||
if(state != state_old)
|
||||
{
|
||||
isStateChanged = true;
|
||||
|
||||
//解锁后清除航迹
|
||||
if(state == MAV_MODE_FLAG::MAV_MODE_FLAG_SAFETY_ARMED)
|
||||
{
|
||||
map->DeleteTrail();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isStateChanged = false;
|
||||
}
|
||||
state_old = state;
|
||||
|
||||
switch (state) {
|
||||
case MAV_MODE_FLAG_SAFETY_ARMED:
|
||||
arm_str.append(tr("ARM"));
|
||||
|
||||
/*
|
||||
if(tts)
|
||||
{
|
||||
if((QDateTime::currentMSecsSinceEpoch() - lastTime) >= 5000)
|
||||
{
|
||||
lastTime = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
QString status;
|
||||
|
||||
status.append(tr("高度:%1").arg(QString::number(dlink->mavlinknode->vehicle.global_position_int.relative_alt * 0.001,'f',0)));
|
||||
status.append(tr("速度:%1").arg(QString::number(dlink->mavlinknode->vehicle.vfr_hud.airspeed,'f',0)));
|
||||
|
||||
tts->say(status);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
break;
|
||||
case 0:
|
||||
arm_str.append(tr("DISARM"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
copk->setState(arm_str);
|
||||
|
||||
uint32_t custommode = dlink->mavlinknode->vehicle.heartbeat.custom_mode;
|
||||
|
||||
if(custommode != custommode_old)
|
||||
{
|
||||
isCustomChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
isCustomChanged = false;
|
||||
}
|
||||
custommode_old = custommode;
|
||||
|
||||
|
||||
QString mode_str;
|
||||
switch (custommode) {
|
||||
case 1<<16:
|
||||
mode_str.append(tr("MANUAL"));
|
||||
break;
|
||||
case 2<<16:
|
||||
mode_str.append(tr("ALTCTL"));
|
||||
break;
|
||||
case 3<<16:
|
||||
mode_str.append(tr("POSCTL"));
|
||||
break;
|
||||
case 4<<16:
|
||||
mode_str.append(tr("AUTO"));
|
||||
break;
|
||||
case 5<<16:
|
||||
mode_str.append(tr("ACRO"));
|
||||
break;
|
||||
case 6<<16:
|
||||
mode_str.append(tr("OFFBOARD"));
|
||||
break;
|
||||
case 7<<16:
|
||||
mode_str.append(tr("STABILIZED"));
|
||||
break;
|
||||
case 8<<16:
|
||||
mode_str.append(tr("RATTITUDE"));
|
||||
break;
|
||||
case (4<<16)+(1<<24):
|
||||
mode_str.append(tr("AUTO_READY"));
|
||||
break;
|
||||
case (4<<16)+(2<<24):
|
||||
mode_str.append(tr("AUTO_TAKEOFF"));
|
||||
break;
|
||||
case (4<<16)+(3<<24):
|
||||
mode_str.append(tr("AUTO_LOITER"));
|
||||
break;
|
||||
case (4<<16)+(4<<24):
|
||||
mode_str.append(tr("AUTO_MISSION"));
|
||||
break;
|
||||
case (4<<16)+(5<<24):
|
||||
mode_str.append(tr("AUTO_RTL"));
|
||||
break;
|
||||
case (4<<16)+(6<<24):
|
||||
mode_str.append(tr("AUTO_LAND"));
|
||||
break;
|
||||
case (4<<16)+(7<<24):
|
||||
mode_str.append(tr("AUTO_RTGS"));
|
||||
break;
|
||||
case (4<<16)+(8<<24):
|
||||
mode_str.append(tr("AUTO_FOLLOW_TARGET"));
|
||||
break;
|
||||
default:
|
||||
mode_str.append(tr("unsported"));
|
||||
break;
|
||||
}
|
||||
copk->setMode(mode_str);
|
||||
|
||||
|
||||
//这里会一直生成一个,导致无法释放
|
||||
if(isStateChanged == true)
|
||||
{
|
||||
tts->say(arm_str);
|
||||
}
|
||||
|
||||
if(isCustomChanged == true)
|
||||
{
|
||||
mode_str.append(tr("flight mode"));
|
||||
tts->say(mode_str);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//经纬度大于正常值,将舍弃
|
||||
|
||||
double lat = (double)(dlink->mavlinknode->vehicle.gps_raw_int.lat * 10e-8);
|
||||
double lng = (double)(dlink->mavlinknode->vehicle.gps_raw_int.lon * 10e-8);
|
||||
|
||||
if(((lat > -90)&&(lat < 90))&&((lng > -180)&&(lng < 180)))
|
||||
{
|
||||
map->setUAVPos(dlink->mavlinknode->vehicle.sysid,
|
||||
dlink->mavlinknode->vehicle.compid,
|
||||
(double)(dlink->mavlinknode->vehicle.gps_raw_int.lat * 10e-8),
|
||||
(double)(dlink->mavlinknode->vehicle.gps_raw_int.lon * 10e-8),
|
||||
(double)(dlink->mavlinknode->vehicle.gps_raw_int.alt * 10e-4));
|
||||
}
|
||||
|
||||
map->setUAVHeading(dlink->mavlinknode->vehicle.sysid,
|
||||
dlink->mavlinknode->vehicle.compid,
|
||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||
|
||||
|
||||
|
||||
|
||||
if(MainIndex == 3)//飞行界面
|
||||
{
|
||||
//刷新时间1Hz
|
||||
//显示状态信息 数据链信号状态,定位信号状态,电池状态,解锁状态,剩余飞行时间等
|
||||
QString message;
|
||||
|
||||
message.append(tr("<h6>数据强度:<font color=red>%1</font>\t").arg(QString::number(100)));
|
||||
message.append(tr("定位类型:<font color=red>%1</font>\t").arg(gps_str));
|
||||
message.append(tr("卫星数目:<font color=red>%1</font>颗</h6>").arg(QString::number(dlink->mavlinknode->vehicle.gps_raw_int.satellites_visible)));
|
||||
message.append(tr("<h6>电池电压:<font color=red>%1</font>V\t").arg(QString::number(dlink->mavlinknode->vehicle.sys_status.voltage_battery * 0.01)));
|
||||
message.append(tr("剩余时间:<font color=red>%1</font></h6>").arg(QString::number(0)));
|
||||
|
||||
showMessage(message);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//设置舵机显示
|
||||
|
||||
int ServoPort = 0;
|
||||
uint16_t servos[16];
|
||||
|
||||
ServoPort = dlink->mavlinknode->vehicle.servo_output_raw.port;
|
||||
servos[0] = dlink->mavlinknode->vehicle.servo_output_raw.servo1_raw;
|
||||
servos[1] = dlink->mavlinknode->vehicle.servo_output_raw.servo2_raw;
|
||||
servos[2] = dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw;
|
||||
servos[3] = dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw;
|
||||
servos[4] = dlink->mavlinknode->vehicle.servo_output_raw.servo5_raw;
|
||||
servos[5] = dlink->mavlinknode->vehicle.servo_output_raw.servo6_raw;
|
||||
servos[6] = dlink->mavlinknode->vehicle.servo_output_raw.servo7_raw;
|
||||
servos[7] = dlink->mavlinknode->vehicle.servo_output_raw.servo8_raw;
|
||||
servos[8] = dlink->mavlinknode->vehicle.servo_output_raw.servo9_raw;
|
||||
servos[9] = dlink->mavlinknode->vehicle.servo_output_raw.servo10_raw;
|
||||
servos[10] = dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw;
|
||||
servos[11] = dlink->mavlinknode->vehicle.servo_output_raw.servo12_raw;
|
||||
servos[12] = dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw;
|
||||
servos[13] = dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw;
|
||||
servos[14] = dlink->mavlinknode->vehicle.servo_output_raw.servo15_raw;
|
||||
servos[15] = dlink->mavlinknode->vehicle.servo_output_raw.servo16_raw;
|
||||
|
||||
toolsui->index4->setChannel(ServoPort,servos);
|
||||
}
|
||||
|
||||
void MainWindow::TotalDistance(double value)
|
||||
{
|
||||
if(MainIndex == 2)//任务界面
|
||||
{
|
||||
QString message;
|
||||
|
||||
message.append(tr("<h6>总航程:<font color=red>%1</font>米\t</h6>").arg(value));
|
||||
message.append(tr("<h6>最远距离:<font color=red>%1</font>米\t</h6>").arg(0));
|
||||
message.append(tr("<h6>预计飞行时间:<font color=red>%1</font>小时\t</h6>").arg(0));
|
||||
|
||||
showMessage(message);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user