添加航点的线程

This commit is contained in:
hm
2020-03-07 14:46:50 +08:00
parent a39507704e
commit 8f94ed1d47
6 changed files with 846 additions and 690 deletions
+1
View File
@@ -16,3 +16,4 @@ SUBDIRS += opmap
SUBDIRS += dlink SUBDIRS += dlink
SUBDIRS += App SUBDIRS += App
+6 -3
View File
@@ -58,11 +58,14 @@ INCLUDEPATH += $$PWD/../mavlink \
HEADERS += \ HEADERS += \
mavlinknode.h \ \ mavlinknode.h \
mavlinknodeglobal.h mavlinknodeglobal.h \
missionprocess.h
SOURCES += \ SOURCES += \
mavlinknode.cpp mavlinknode.cpp \
missionprocess.cpp
win32|win64 { win32|win64 {
+17 -3
View File
@@ -2,16 +2,24 @@
MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent) MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent)
{ {
//main thread
running_flag = false; running_flag = false;
Nodethread = new QThread(); Nodethread = new QThread();
this->moveToThread(Nodethread); this->moveToThread(Nodethread);
connect(Nodethread, &QThread::started, this, &MavLinkNode::process); connect(Nodethread, &QThread::started, this, &MavLinkNode::process);
setRunFrq(50);//50 setRunFrq(50);//50
//初始化buff //初始化buff
initbuff(); initbuff();
Mission = new MissionProcess();
Mission->setRunFrq(200);
Mission->start();
Parameterthread = new QThread();
} }
MavLinkNode::~MavLinkNode() MavLinkNode::~MavLinkNode()
@@ -432,3 +440,9 @@ void MavLinkNode::MissionParse(mavlink_message_t msg)
}break; }break;
} }
} }
+6
View File
@@ -7,6 +7,8 @@
#include "QDebug" #include "QDebug"
#include "mavlink.h" #include "mavlink.h"
#include "missionprocess.h"
#ifdef QtMavlinkNode #ifdef QtMavlinkNode
#include <mavlinknodeglobal.h> #include <mavlinknodeglobal.h>
@@ -126,6 +128,10 @@ protected:
quint32 running_frq = 200;//200Hz quint32 running_frq = 200;//200Hz
QThread *Nodethread; QThread *Nodethread;
MissionProcess *Mission = nullptr;
QThread *Parameterthread;
_buffdef serial_buff; _buffdef serial_buff;
_buffdef client_buff; _buffdef client_buff;
+87
View File
@@ -0,0 +1,87 @@
#include "missionprocess.h"
MissionProcess::MissionProcess(QObject *parent) : QObject(parent)
{
//mission thread
/*
Missionthread = new QThread();
this->moveToThread(Missionthread);
connect(Missionthread, &QThread::started, this, &MavLinkNode::process);
*/
}
void MissionProcess::setRunFrq(uint32_t frq)
{
if((frq != 0)||(frq <= 1000))
{
running_frq = frq;
qDebug() << "set mission thread running frquency:" <<frq <<"Hz";
}
}
void MissionProcess::start()
{
if(Missionthread == nullptr)
{
Missionthread = new QThread();
this->moveToThread(Missionthread);
connect(Missionthread, &QThread::started, this, &MissionProcess::process);
}
if(!Missionthread->isRunning())
{
running_flag = true;
Missionthread->start();
qDebug() << "thread start" << running_flag;
}
else
{
qDebug() << "thread has started";
}
}
void MissionProcess::stop()
{
if(Missionthread->isRunning())
{
running_flag = false;
qDebug() << "thread stop" << running_flag;
}
else
{
qDebug() << "thread is not running";
}
}
//这里一直传输和接收航线信息
void MissionProcess::process()//线程函数
{
uint8_t count = 0;
while (running_flag)
{
count ++;
QThread::msleep(1000/running_frq);
}
//退出线程
Missionthread->quit();
Missionthread->deleteLater();
Missionthread = nullptr;
}
+45
View File
@@ -0,0 +1,45 @@
#ifndef MISSIONPROCESS_H
#define MISSIONPROCESS_H
#include <QObject>
//#include "mavlinknode.h"
#include "QDebug"
#include "QThread"
#ifdef QtMavlinkNode
#include <mavlinknodeglobal.h>
class MAVLINKNODESHARED_EXPORT MissionProcess : public QObject {
#else
class MissionProcess : public QObject
{
#endif
Q_OBJECT
public:
explicit MissionProcess(QObject *parent = nullptr);
public slots:
//线程对外接口
void setRunFrq(uint32_t frq);
void start();
void stop();
private slots:
//线程私有接口
void process();
signals:
private:
bool running_flag = false;
quint32 running_frq = 200;//200Hz
QThread *Missionthread = nullptr;
};
#endif // MISSIONPROCESS_H