生成很多定时器的bug解决
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
#include "Chart.h"
|
||||||
|
|
||||||
|
Chart::Chart(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#ifndef CHART_H
|
||||||
|
#define CHART_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class Chart : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit Chart(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CHART_H
|
||||||
@@ -10,9 +10,11 @@ FORMS += \
|
|||||||
$$PWD/Scope.ui
|
$$PWD/Scope.ui
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
$$PWD/Chart.h \
|
||||||
$$PWD/Scope.h
|
$$PWD/Scope.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
$$PWD/Chart.cpp \
|
||||||
$$PWD/Scope.cpp
|
$$PWD/Scope.cpp
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,117 +0,0 @@
|
|||||||
#include "VirtualScope.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VirtualScope::VirtualScope(QWidget *parent) : QWidget(parent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VirtualScope::~VirtualScope()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void VirtualScope::mouseReleaseEvent(QMouseEvent *e)
|
|
||||||
{
|
|
||||||
qDebug() << "VirtualScope release" << e;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VirtualScope::mousePressEvent(QMouseEvent *e)
|
|
||||||
{
|
|
||||||
qDebug() << "VirtualScope press" << e;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VirtualScope::mouseDoubleClickEvent(QMouseEvent *e)
|
|
||||||
{
|
|
||||||
qDebug() << "VirtualScope double clicked" << e;
|
|
||||||
}
|
|
||||||
|
|
||||||
void VirtualScope::wheelEvent(QWheelEvent *e)
|
|
||||||
{
|
|
||||||
qDebug() << e;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void VirtualScope::paintEvent(QPaintEvent *)
|
|
||||||
{
|
|
||||||
//qreal scale = 4000.0;
|
|
||||||
|
|
||||||
QPainter painter(this);
|
|
||||||
painter.setRenderHint(QPainter::Antialiasing); /* 使用反锯齿(如果可用) */
|
|
||||||
painter.setRenderHint(QPainter::TextAntialiasing);
|
|
||||||
painter.setRenderHint(QPainter::SmoothPixmapTransform);
|
|
||||||
|
|
||||||
painter.translate(width() / 2, height() / 2); /* 坐标变换为窗体中心 */
|
|
||||||
//int side = qMin(width(), height()); /* 这一句决定了这个模块只能是方形 */
|
|
||||||
//painter.scale(side / scale, side / scale); /* 比例缩放 */
|
|
||||||
painter.setPen(Qt::NoPen);
|
|
||||||
|
|
||||||
drawBackground(&painter);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void VirtualScope::drawBackground(QPainter *painter)
|
|
||||||
{
|
|
||||||
QPen pen;
|
|
||||||
QFont font;
|
|
||||||
|
|
||||||
float w = width();
|
|
||||||
float h = height();
|
|
||||||
|
|
||||||
//画大黑背景
|
|
||||||
painter->save();
|
|
||||||
painter->setBrush(Qt::black);
|
|
||||||
painter->drawRect(-w/2,-h/2,w,h);
|
|
||||||
painter->restore();
|
|
||||||
|
|
||||||
|
|
||||||
//画坐标系
|
|
||||||
painter->save();
|
|
||||||
|
|
||||||
//painter->translate(-200,0);
|
|
||||||
|
|
||||||
//水平,垂直虚线
|
|
||||||
pen.setColor(QColor("#FFFFFF"));
|
|
||||||
pen.setWidthF(1);
|
|
||||||
painter->setPen(pen);
|
|
||||||
|
|
||||||
font.setPointSize(15);
|
|
||||||
font.setFamily("Arial");//非衬线
|
|
||||||
painter->setFont(font);
|
|
||||||
|
|
||||||
//水平分成8个格,竖直分成10个格
|
|
||||||
float g_h = (h - 50)/8;
|
|
||||||
float g_w = (w - 50)/10;
|
|
||||||
|
|
||||||
for(int i = -4;i <= 4;i++)
|
|
||||||
{
|
|
||||||
painter->drawLine(-(w - 50)/2,g_h * i,(w - 50)/2,g_h * i);
|
|
||||||
}
|
|
||||||
|
|
||||||
//水平分成10条线
|
|
||||||
for(int i = -5;i <= 5;i++)
|
|
||||||
{
|
|
||||||
painter->drawLine(g_w * i,-(h - 50)/2,g_w * i,(h - 50)/2);
|
|
||||||
painter->drawText(QRect(g_w * i - 100,(h - 50)/2,200,20), Qt::AlignCenter,QString::number(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
painter->restore();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#ifndef VIRTUALSCOPE_H
|
|
||||||
#define VIRTUALSCOPE_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
#include <QPainter>
|
|
||||||
#include "QDebug"
|
|
||||||
#include "QPicture"
|
|
||||||
#include "QtMath"
|
|
||||||
|
|
||||||
class VirtualScope : public QWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit VirtualScope(QWidget *parent = nullptr);
|
|
||||||
~VirtualScope();
|
|
||||||
|
|
||||||
|
|
||||||
signals:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void mouseReleaseEvent(QMouseEvent *e);
|
|
||||||
void mousePressEvent(QMouseEvent *e);
|
|
||||||
void mouseDoubleClickEvent(QMouseEvent *e);
|
|
||||||
void wheelEvent(QWheelEvent *e);
|
|
||||||
void paintEvent(QPaintEvent *);
|
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void drawBackground(QPainter *painter);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIRTUALSCOPE_H
|
|
||||||
@@ -109,6 +109,7 @@ void MenuBarUI::showMessage(const QString &message, int TimeOut)
|
|||||||
{
|
{
|
||||||
ui->label_Status->setText(message);
|
ui->label_Status->setText(message);
|
||||||
//这句:如果小于0,那么不生成定时器,减少内存开支,因为小于0时,定时器永远不会触发
|
//这句:如果小于0,那么不生成定时器,减少内存开支,因为小于0时,定时器永远不会触发
|
||||||
|
|
||||||
if(TimeOut > 0)
|
if(TimeOut > 0)
|
||||||
{
|
{
|
||||||
if(MessageTimer->isActive())
|
if(MessageTimer->isActive())
|
||||||
@@ -124,6 +125,7 @@ void MenuBarUI::showMessage(const QString &message, int TimeOut)
|
|||||||
MessageTimer->stop();
|
MessageTimer->stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuBarUI::clearMessage()
|
void MenuBarUI::clearMessage()
|
||||||
|
|||||||
+40
-26
@@ -19,6 +19,8 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
setFocusPolicy(Qt::StrongFocus);
|
setFocusPolicy(Qt::StrongFocus);
|
||||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||||
|
|
||||||
|
tts = new QTextToSpeech(this);
|
||||||
|
|
||||||
//ui initial
|
//ui initial
|
||||||
|
|
||||||
//menubar
|
//menubar
|
||||||
@@ -209,44 +211,38 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||||
map,SLOT(WPSetCurrent(int)),Qt::DirectConnection);
|
map,SLOT(WPSetCurrent(int)),Qt::DirectConnection);
|
||||||
|
|
||||||
|
|
||||||
//menuBarUI->showMessage(tr("存在bug,连接界面udp数字输入的.可以超过3个,不合理"));
|
|
||||||
|
|
||||||
//==== showmessage=====
|
//==== showmessage=====
|
||||||
connect(copk,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
connect(copk,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||||
connect(dlink,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(map,SIGNAL(showMessage(QString,int)),this,SLOT(showMessage(QString,int)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
qDebug() << "main window start";
|
qDebug() << "main window start";
|
||||||
|
|
||||||
//监测ssl,用于网络连接
|
//监测ssl,用于网络连接
|
||||||
qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
|
qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
|
||||||
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
|
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
|
||||||
}
|
}
|
||||||
|
|
||||||
//对返回的数据进行处理
|
|
||||||
void MainWindow::getData(QNetworkReply *reply)
|
|
||||||
{
|
|
||||||
//获得返回数据存在字节数组中
|
|
||||||
QByteArray data=reply->readAll();
|
|
||||||
//将字节数组转为字符串
|
|
||||||
QString str=QString::fromUtf8(data);
|
|
||||||
//将数据展示在textEdit中
|
|
||||||
qDebug() << str;
|
|
||||||
}
|
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
|
if(tts)
|
||||||
|
{
|
||||||
|
tts->stop();
|
||||||
|
delete tts;
|
||||||
|
tts = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(map)
|
||||||
|
{
|
||||||
map->close();
|
map->close();
|
||||||
delete map;
|
delete map;
|
||||||
|
}
|
||||||
|
|
||||||
copk->deleteLater();
|
|
||||||
|
if(copk)
|
||||||
|
{
|
||||||
|
copk->close();
|
||||||
delete copk;
|
delete copk;
|
||||||
|
}
|
||||||
|
|
||||||
QCoreApplication::quit();//退出所有窗口
|
QCoreApplication::quit();//退出所有窗口
|
||||||
}
|
}
|
||||||
@@ -300,9 +296,6 @@ void MainWindow::mousePressEvent(QMouseEvent* event)
|
|||||||
Q_UNUSED(event)
|
Q_UNUSED(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||||
{
|
{
|
||||||
//qDebug() << event;
|
//qDebug() << event;
|
||||||
@@ -522,6 +515,8 @@ void MainWindow::beep(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 16~20Hz左右 运行频率可能太高
|
||||||
void MainWindow::updateUI()//事件驱动式更新数据
|
void MainWindow::updateUI()//事件驱动式更新数据
|
||||||
{
|
{
|
||||||
static uint32_t custommode_old = 0;
|
static uint32_t custommode_old = 0;
|
||||||
@@ -530,6 +525,21 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
|||||||
bool isStateChanged = false;
|
bool isStateChanged = false;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
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,
|
copk->setAttitude(dlink->mavlinknode->vehicle.attitude.pitch * 57.3,
|
||||||
dlink->mavlinknode->vehicle.attitude.roll * 57.3,
|
dlink->mavlinknode->vehicle.attitude.roll * 57.3,
|
||||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||||
@@ -677,8 +687,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
|||||||
}
|
}
|
||||||
copk->setMode(mode_str);
|
copk->setMode(mode_str);
|
||||||
|
|
||||||
QTextToSpeech *tts = new QTextToSpeech();
|
|
||||||
|
|
||||||
|
//这里会一直生成一个,导致无法释放
|
||||||
if(isStateChanged == true)
|
if(isStateChanged == true)
|
||||||
{
|
{
|
||||||
tts->say(arm_str);
|
tts->say(arm_str);
|
||||||
@@ -687,11 +697,12 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
|||||||
if(isCustomChanged == true)
|
if(isCustomChanged == true)
|
||||||
{
|
{
|
||||||
mode_str.append(tr("flight mode"));
|
mode_str.append(tr("flight mode"));
|
||||||
|
|
||||||
tts->say(mode_str);
|
tts->say(mode_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
map->setUAVPos(dlink->mavlinknode->vehicle.sysid,
|
map->setUAVPos(dlink->mavlinknode->vehicle.sysid,
|
||||||
dlink->mavlinknode->vehicle.compid,
|
dlink->mavlinknode->vehicle.compid,
|
||||||
(double)(dlink->mavlinknode->vehicle.gps_raw_int.lat * 10e-8),
|
(double)(dlink->mavlinknode->vehicle.gps_raw_int.lat * 10e-8),
|
||||||
@@ -703,6 +714,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
|||||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(MainIndex == 3)//飞行界面
|
if(MainIndex == 3)//飞行界面
|
||||||
{
|
{
|
||||||
//刷新时间1Hz
|
//刷新时间1Hz
|
||||||
@@ -719,6 +732,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::TotalDistance(double value)
|
void MainWindow::TotalDistance(double value)
|
||||||
|
|||||||
+2
-1
@@ -88,7 +88,7 @@ private slots:
|
|||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
void getData(QNetworkReply *reply);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@@ -114,6 +114,7 @@ protected:
|
|||||||
|
|
||||||
QTimer *updateTimer = nullptr;
|
QTimer *updateTimer = nullptr;
|
||||||
|
|
||||||
|
QTextToSpeech *tts = nullptr;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+12
-97
@@ -99,23 +99,23 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
|
|
||||||
qreal pitch;
|
qreal pitch = 0;
|
||||||
qreal roll;
|
qreal roll = 0;
|
||||||
qreal yaw;
|
qreal yaw = 0;
|
||||||
|
|
||||||
qreal height;
|
qreal height = 0;
|
||||||
|
|
||||||
qreal airspeed_maximun;
|
qreal airspeed_maximun = 0;
|
||||||
qreal airspeed;
|
qreal airspeed = 0;
|
||||||
qreal airspeed_minimun;
|
qreal airspeed_minimun = 0;
|
||||||
|
|
||||||
qreal heading;//航线方向
|
qreal heading = 0;//航线方向
|
||||||
qreal position;//侧偏距
|
qreal position = 0;//侧偏距
|
||||||
qreal altitude;//海拔
|
qreal altitude = 0;//海拔
|
||||||
|
|
||||||
qreal verticalspeed;//纵向速度
|
qreal verticalspeed = 0;//纵向速度
|
||||||
|
|
||||||
bool isUpdate;
|
bool isUpdate = false;
|
||||||
|
|
||||||
}_target;
|
}_target;
|
||||||
|
|
||||||
@@ -211,93 +211,8 @@ private:
|
|||||||
|
|
||||||
QTimer *UpdateTimer = nullptr;
|
QTimer *UpdateTimer = nullptr;
|
||||||
|
|
||||||
/*
|
|
||||||
QString m_mode;//显示模式
|
|
||||||
|
|
||||||
QString m_GPS;
|
|
||||||
QString m_MODE;
|
|
||||||
QString m_STATE;
|
|
||||||
|
|
||||||
double m_PitchValue;
|
|
||||||
double m_RollValue;
|
|
||||||
double m_YawValue;
|
|
||||||
double m_CourseValue;
|
|
||||||
|
|
||||||
double m_BatteryValue;
|
|
||||||
|
|
||||||
|
|
||||||
double m_GPSAltitudeValue;
|
|
||||||
double m_PressureAltitudeValue;
|
|
||||||
|
|
||||||
int m_Max_Roll;
|
|
||||||
int m_Min_Roll;
|
|
||||||
|
|
||||||
int m_Max_Altitude;
|
|
||||||
int m_Min_Altitude;
|
|
||||||
|
|
||||||
double m_gps_altitude;
|
|
||||||
double m_pre_altitude;
|
|
||||||
|
|
||||||
double m_gps_speed;
|
|
||||||
double m_air_speed;
|
|
||||||
|
|
||||||
QString m_CtrlModeValue;
|
|
||||||
QString m_AirplaneModeValue;
|
|
||||||
QString m_CurrentStatusValue;
|
|
||||||
QString m_LockStatusValue;
|
|
||||||
QString m_TurningStatusValue;
|
|
||||||
|
|
||||||
int m_GPSStatusValue;
|
|
||||||
int m_GPSStarValue;
|
|
||||||
|
|
||||||
float m_Z_SpeedValue;
|
|
||||||
float m_Z_HightValue;
|
|
||||||
//float m_X_SpeedValue;
|
|
||||||
|
|
||||||
//保护
|
|
||||||
QString m_ProtectString;
|
|
||||||
quint8 m_Protect;
|
|
||||||
//数值的最大最小值
|
|
||||||
double m_Pitch_MinValue;
|
|
||||||
double m_Roll_MinValue;
|
|
||||||
double m_Yaw_MinValue;
|
|
||||||
double m_CourseMinValue;
|
|
||||||
|
|
||||||
double m_Pitch_MaxValue;
|
|
||||||
double m_Roll_MaxValue;
|
|
||||||
double m_Yaw_MaxValue;
|
|
||||||
double m_CourseMaxValue;
|
|
||||||
|
|
||||||
double m_BatteryMinValue;
|
|
||||||
double m_BatteryMaxValue;
|
|
||||||
|
|
||||||
/*
|
|
||||||
QColor m_CentreLineColor;
|
|
||||||
QColor m_ForeColor;
|
|
||||||
QColor m_CornerColor;
|
|
||||||
|
|
||||||
QColor m_GroundColor;//大地颜色
|
|
||||||
QColor m_SkyColor;//天空颜色
|
|
||||||
|
|
||||||
QColor m_LedColor;
|
|
||||||
|
|
||||||
QColor m_CurrentColor;
|
|
||||||
QColor m_TargetColor;
|
|
||||||
QColor m_StatusColor;
|
|
||||||
|
|
||||||
QColor m_NormalColor;
|
|
||||||
QColor m_NoticeColor;
|
|
||||||
QColor m_WarningColor;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QColor m_WColor;
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
QPoint m_c;
|
QPoint m_c;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,10 @@ public slots:
|
|||||||
void setRunFrq(uint32_t frq);
|
void setRunFrq(uint32_t frq);
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
bool isActive(void)
|
||||||
|
{
|
||||||
|
return running_flag;
|
||||||
|
}
|
||||||
|
|
||||||
void Parse(mavlink_message_t msg);
|
void Parse(mavlink_message_t msg);
|
||||||
|
|
||||||
|
|||||||
+50
-40
@@ -19,7 +19,7 @@ MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent)
|
|||||||
initbuff();
|
initbuff();
|
||||||
|
|
||||||
//初始化ID
|
//初始化ID
|
||||||
int Current_sysID = 0xF1;
|
int Current_sysID = 0xFB;
|
||||||
int Current_CompID = MAV_COMP_ID_MISSIONPLANNER;
|
int Current_CompID = MAV_COMP_ID_MISSIONPLANNER;
|
||||||
|
|
||||||
Mission = new MissionProcess();
|
Mission = new MissionProcess();
|
||||||
@@ -52,22 +52,44 @@ MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent)
|
|||||||
connect(Commander,SIGNAL(showMessage(QString,int)),
|
connect(Commander,SIGNAL(showMessage(QString,int)),
|
||||||
this,SIGNAL(showMessage(QString,int)),Qt::DirectConnection);
|
this,SIGNAL(showMessage(QString,int)),Qt::DirectConnection);
|
||||||
|
|
||||||
|
|
||||||
|
showMessage(tr("解锁才能有航迹,需要修正,示波器显示时间不对"));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MavLinkNode::~MavLinkNode()
|
MavLinkNode::~MavLinkNode()
|
||||||
{
|
{
|
||||||
//停止任务
|
//停止任务
|
||||||
|
if(Mission)
|
||||||
|
{
|
||||||
|
if(Mission->isActive())
|
||||||
|
{
|
||||||
Mission->stop();
|
Mission->stop();
|
||||||
delete Mission;
|
delete Mission;
|
||||||
Mission = nullptr;
|
Mission = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
//停止参数
|
//停止参数
|
||||||
|
if(Parameter)
|
||||||
|
{
|
||||||
|
if(Parameter->isActive())
|
||||||
|
{
|
||||||
Parameter->stop();
|
Parameter->stop();
|
||||||
delete Parameter;
|
delete Parameter;
|
||||||
Parameter = nullptr;
|
Parameter = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Commander)
|
||||||
|
{
|
||||||
|
if(Commander->isActive())
|
||||||
|
{
|
||||||
Commander->stop();
|
Commander->stop();
|
||||||
delete Commander;
|
delete Commander;
|
||||||
Commander = nullptr;
|
Commander = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(Nodethread->isRunning())
|
if(Nodethread->isRunning())
|
||||||
{
|
{
|
||||||
@@ -102,11 +124,20 @@ void MavLinkNode::start()
|
|||||||
qDebug() << "MavLinkNode thread start" << running_flag;
|
qDebug() << "MavLinkNode thread start" << running_flag;
|
||||||
|
|
||||||
|
|
||||||
//启动子线程
|
if(Mission)
|
||||||
//Mission->start();
|
{
|
||||||
//Parameter->start();
|
Mission->start();
|
||||||
//Commander->start();
|
}
|
||||||
|
|
||||||
|
if(Commander)
|
||||||
|
{
|
||||||
|
Commander->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Parameter)
|
||||||
|
{
|
||||||
|
Parameter->start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -206,21 +237,14 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
|||||||
{
|
{
|
||||||
QByteArray datagram;
|
QByteArray datagram;
|
||||||
|
|
||||||
//datagram.clear();
|
|
||||||
|
|
||||||
switch (src) {
|
switch (src) {
|
||||||
default:
|
default:
|
||||||
case SourceType::c_sock:
|
case SourceType::c_sock:
|
||||||
if(client_buff.select == 0)
|
if(client_buff.select == 0)
|
||||||
{
|
{
|
||||||
|
datagram.clear();
|
||||||
|
datagram.append(client_buff.buff[1]);
|
||||||
//datagram.setRawData(client_buff.buff[1],client_buff.buff[1].size());
|
//datagram.setRawData(client_buff.buff[1],client_buff.buff[1].size());
|
||||||
//datagram.append(client_buff.buff[1]);
|
|
||||||
|
|
||||||
for (QByteArray::const_iterator i = client_buff.buff[1].cbegin(); i != client_buff.buff[1].cend(); ++i)
|
|
||||||
{
|
|
||||||
datagram.append(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
//清除这个未选择的buff
|
//清除这个未选择的buff
|
||||||
client_buff.buff[1].clear();
|
client_buff.buff[1].clear();
|
||||||
//读取完成,可以往这个内存里面写数了
|
//读取完成,可以往这个内存里面写数了
|
||||||
@@ -228,17 +252,11 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
|||||||
}
|
}
|
||||||
else if(client_buff.select == 1)
|
else if(client_buff.select == 1)
|
||||||
{
|
{
|
||||||
|
datagram.clear();
|
||||||
|
datagram.append(client_buff.buff[0]);
|
||||||
//datagram.setRawData(client_buff.buff[0],client_buff.buff[0].size());
|
//datagram.setRawData(client_buff.buff[0],client_buff.buff[0].size());
|
||||||
//datagram.append(client_buff.buff[0]);
|
|
||||||
|
|
||||||
for (QByteArray::const_iterator i = client_buff.buff[0].cbegin(); i != client_buff.buff[0].cend(); ++i)
|
|
||||||
{
|
|
||||||
datagram.append(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
//清除这个未选择的buff
|
//清除这个未选择的buff
|
||||||
client_buff.buff[0].clear();
|
client_buff.buff[0].clear();
|
||||||
|
|
||||||
//读取完成,可以往这个内存里面写数了
|
//读取完成,可以往这个内存里面写数了
|
||||||
client_buff.select = 0;
|
client_buff.select = 0;
|
||||||
}
|
}
|
||||||
@@ -246,24 +264,18 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
|||||||
case SourceType::s_port:
|
case SourceType::s_port:
|
||||||
if(serial_buff.select == 0)
|
if(serial_buff.select == 0)
|
||||||
{
|
{
|
||||||
//datagram.append(serial_buff.buff[0]);
|
datagram.clear();
|
||||||
for (QByteArray::const_iterator i = serial_buff.buff[1].cbegin(); i != serial_buff.buff[1].cend(); ++i)
|
datagram.append(serial_buff.buff[1]);
|
||||||
{
|
//datagram.setRawData(serial_buff.buff[1],serial_buff.buff[1].size());
|
||||||
datagram.append(*i);
|
|
||||||
}
|
|
||||||
//读取完成,可以往这个内存里面写数了
|
//读取完成,可以往这个内存里面写数了
|
||||||
serial_buff.buff[1].clear();
|
serial_buff.buff[1].clear();
|
||||||
serial_buff.select = 1;
|
serial_buff.select = 1;
|
||||||
}
|
}
|
||||||
else if(serial_buff.select == 1)
|
else if(serial_buff.select == 1)
|
||||||
{
|
{
|
||||||
//datagram.append(serial_buff.buff[0]);
|
datagram.clear();
|
||||||
|
datagram.append(serial_buff.buff[0]);
|
||||||
for (QByteArray::const_iterator i = serial_buff.buff[0].cbegin(); i != serial_buff.buff[0].cend(); ++i)
|
//datagram.setRawData(serial_buff.buff[0],serial_buff.buff[0].size());
|
||||||
{
|
|
||||||
datagram.append(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
//读取完成,可以往这个内存里面写数了
|
//读取完成,可以往这个内存里面写数了
|
||||||
serial_buff.buff[0].clear();
|
serial_buff.buff[0].clear();
|
||||||
serial_buff.select = 0;
|
serial_buff.select = 0;
|
||||||
@@ -288,20 +300,18 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
|
|||||||
|
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
|
/*
|
||||||
if(msg.compid == Current_CompID) //过滤地面站发过来的数据
|
if(msg.compid == Current_CompID) //过滤地面站发过来的数据
|
||||||
{
|
{
|
||||||
//不能使用这种方法过滤,不正确
|
//不能使用这种方法过滤,不正确
|
||||||
//qDebug() << msg.msgid << "msg come from groundstation";
|
qDebug() << msg.msgid << "msg come from groundstation";
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
//if(msg.compid != Current_CompID) //过滤地面站发过来的数据
|
if(msg.sysid < 250) //过滤地面站发过来的数据
|
||||||
{
|
{
|
||||||
|
|
||||||
MAVLinkRcv_Handler(msg); //接收完一帧数据并处理
|
MAVLinkRcv_Handler(msg); //接收完一帧数据并处理
|
||||||
//QThread::sleep(5);
|
|
||||||
//qDebug() << "msg.sysid" <<msg.sysid << "msg.compid" << msg.compid << "fifo parse:" << count << msg.msgid;
|
|
||||||
|
|
||||||
emit recievemsg(msg); //将信息广播出去
|
emit recievemsg(msg); //将信息广播出去
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,7 +98,10 @@ public slots:
|
|||||||
void setRunFrq(uint32_t frq);
|
void setRunFrq(uint32_t frq);
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
bool isActive(void)
|
||||||
|
{
|
||||||
|
return running_flag;
|
||||||
|
}
|
||||||
//缓存对外接口
|
//缓存对外接口
|
||||||
void setbuff(quint32 src, QByteArray data);
|
void setbuff(quint32 src, QByteArray data);
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ public slots:
|
|||||||
void setRunFrq(uint32_t frq);
|
void setRunFrq(uint32_t frq);
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
bool isActive(void)
|
||||||
|
{
|
||||||
|
return running_flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Parse(mavlink_message_t msg);
|
void Parse(mavlink_message_t msg);
|
||||||
|
|||||||
@@ -87,7 +87,10 @@ public slots:
|
|||||||
void setRunFrq(uint32_t frq);
|
void setRunFrq(uint32_t frq);
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
bool isActive(void)
|
||||||
|
{
|
||||||
|
return running_flag;
|
||||||
|
}
|
||||||
|
|
||||||
void Parse(mavlink_message_t msg);
|
void Parse(mavlink_message_t msg);
|
||||||
|
|
||||||
|
|||||||
+22
-7
@@ -22,10 +22,10 @@ DLink::DLink(QObject *parent) : QObject(parent)
|
|||||||
mavlinknode->start();
|
mavlinknode->start();
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
connect(this,&DLink::REVMessageTo1,
|
connect(this,&DLink::REVMessageTo1,
|
||||||
this,&DLink::SendMessageTo1);
|
this,&DLink::SendMessageTo1);
|
||||||
*/
|
|
||||||
//其他协议节点。。。
|
//其他协议节点。。。
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -55,8 +55,7 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
|
|||||||
|
|
||||||
if (DLink::serialPort)
|
if (DLink::serialPort)
|
||||||
{
|
{
|
||||||
qint64 flag = DLink::serialPort->write((const char *)msg,len);
|
emit REVMessageTo1(ch,msg,len);
|
||||||
qDebug() << "serialPort Send Msg";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -66,7 +65,14 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
|
|||||||
int DLink::SendMessageTo1(quint8 ch, quint8 *msg, quint16 len)
|
int DLink::SendMessageTo1(quint8 ch, quint8 *msg, quint16 len)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (DLink::serialPort)
|
||||||
|
{
|
||||||
|
qint64 flag = DLink::serialPort->write((const char *)msg,len);
|
||||||
|
if(flag != -1)
|
||||||
|
{
|
||||||
|
qDebug() << "serialPort Send Msg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -268,18 +274,24 @@ void DLink::readPendingDatagramsSerialPort(void)
|
|||||||
QByteArray datagram = serialPort->readAll();
|
QByteArray datagram = serialPort->readAll();
|
||||||
mavlinknode->setbuff(SourceType::s_port,datagram);
|
mavlinknode->setbuff(SourceType::s_port,datagram);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
mavlink_message_t msg;
|
mavlink_message_t msg;
|
||||||
mavlink_status_t status;
|
mavlink_status_t status;
|
||||||
|
|
||||||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(MAVLINK_FRAMING_OK == mavlink_parse_char(3,*i,&msg,&status))
|
if(MAVLINK_FRAMING_OK == mavlink_parse_char(3,*i,&msg,&status))
|
||||||
{
|
{
|
||||||
//qDebug() << "direct parse:" << count << msg.msgid;
|
qDebug() << "direct parse:" << count << msg.msgid;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
QString num;
|
QString num;
|
||||||
for (int i = 0; i < datagram.size(); ++i) {
|
for (int i = 0; i < datagram.size(); ++i) {
|
||||||
@@ -306,17 +318,20 @@ void DLink::readPendingDatagramsClient(void)
|
|||||||
mavlinknode->setbuff(SourceType::c_sock,datagram);
|
mavlinknode->setbuff(SourceType::c_sock,datagram);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
mavlink_message_t msg;
|
mavlink_message_t msg;
|
||||||
mavlink_status_t status;
|
mavlink_status_t status;
|
||||||
|
|
||||||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(MAVLINK_FRAMING_OK == mavlink_parse_char(2,*i,&msg,&status))
|
if(MAVLINK_FRAMING_OK == mavlink_parse_char(2,*i,&msg,&status))
|
||||||
{
|
{
|
||||||
//qDebug() << "direct parse:" << count << msg.msgid;
|
qDebug() << "direct parse:" << count << msg.msgid;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user