生成很多定时器的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
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/Chart.h \
|
||||
$$PWD/Scope.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/Chart.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);
|
||||
//这句:如果小于0,那么不生成定时器,减少内存开支,因为小于0时,定时器永远不会触发
|
||||
|
||||
if(TimeOut > 0)
|
||||
{
|
||||
if(MessageTimer->isActive())
|
||||
@@ -124,6 +125,7 @@ void MenuBarUI::showMessage(const QString &message, int TimeOut)
|
||||
MessageTimer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void MenuBarUI::clearMessage()
|
||||
|
||||
+40
-26
@@ -19,6 +19,8 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
setFocusPolicy(Qt::StrongFocus);
|
||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||
|
||||
tts = new QTextToSpeech(this);
|
||||
|
||||
//ui initial
|
||||
|
||||
//menubar
|
||||
@@ -209,44 +211,38 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
connect(dlink->mavlinknode->Mission,SIGNAL(currentPoint(int)),
|
||||
map,SLOT(WPSetCurrent(int)),Qt::DirectConnection);
|
||||
|
||||
|
||||
//menuBarUI->showMessage(tr("存在bug,连接界面udp数字输入的.可以超过3个,不合理"));
|
||||
|
||||
//==== 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)));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
qDebug() << "main window start";
|
||||
|
||||
//监测ssl,用于网络连接
|
||||
qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();
|
||||
qDebug() << "OpenSSL支持情况:" << QSslSocket::supportsSsl();
|
||||
}
|
||||
|
||||
//对返回的数据进行处理
|
||||
void MainWindow::getData(QNetworkReply *reply)
|
||||
{
|
||||
//获得返回数据存在字节数组中
|
||||
QByteArray data=reply->readAll();
|
||||
//将字节数组转为字符串
|
||||
QString str=QString::fromUtf8(data);
|
||||
//将数据展示在textEdit中
|
||||
qDebug() << str;
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
if(tts)
|
||||
{
|
||||
tts->stop();
|
||||
delete tts;
|
||||
tts = nullptr;
|
||||
}
|
||||
|
||||
if(map)
|
||||
{
|
||||
map->close();
|
||||
delete map;
|
||||
}
|
||||
|
||||
copk->deleteLater();
|
||||
|
||||
if(copk)
|
||||
{
|
||||
copk->close();
|
||||
delete copk;
|
||||
}
|
||||
|
||||
QCoreApplication::quit();//退出所有窗口
|
||||
}
|
||||
@@ -300,9 +296,6 @@ void MainWindow::mousePressEvent(QMouseEvent* event)
|
||||
Q_UNUSED(event)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event) //键盘按下事件
|
||||
{
|
||||
//qDebug() << event;
|
||||
@@ -522,6 +515,8 @@ void MainWindow::beep(void)
|
||||
|
||||
|
||||
|
||||
|
||||
// 16~20Hz左右 运行频率可能太高
|
||||
void MainWindow::updateUI()//事件驱动式更新数据
|
||||
{
|
||||
static uint32_t custommode_old = 0;
|
||||
@@ -530,6 +525,21 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
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,
|
||||
dlink->mavlinknode->vehicle.attitude.roll * 57.3,
|
||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||
@@ -677,8 +687,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
}
|
||||
copk->setMode(mode_str);
|
||||
|
||||
QTextToSpeech *tts = new QTextToSpeech();
|
||||
|
||||
//这里会一直生成一个,导致无法释放
|
||||
if(isStateChanged == true)
|
||||
{
|
||||
tts->say(arm_str);
|
||||
@@ -687,11 +697,12 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
if(isCustomChanged == true)
|
||||
{
|
||||
mode_str.append(tr("flight mode"));
|
||||
|
||||
tts->say(mode_str);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
map->setUAVPos(dlink->mavlinknode->vehicle.sysid,
|
||||
dlink->mavlinknode->vehicle.compid,
|
||||
(double)(dlink->mavlinknode->vehicle.gps_raw_int.lat * 10e-8),
|
||||
@@ -703,6 +714,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
|
||||
|
||||
|
||||
|
||||
|
||||
if(MainIndex == 3)//飞行界面
|
||||
{
|
||||
//刷新时间1Hz
|
||||
@@ -719,6 +732,7 @@ void MainWindow::updateUI()//事件驱动式更新数据
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::TotalDistance(double value)
|
||||
|
||||
+2
-1
@@ -88,7 +88,7 @@ private slots:
|
||||
|
||||
protected slots:
|
||||
|
||||
void getData(QNetworkReply *reply);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
@@ -114,6 +114,7 @@ protected:
|
||||
|
||||
QTimer *updateTimer = nullptr;
|
||||
|
||||
QTextToSpeech *tts = nullptr;
|
||||
|
||||
};
|
||||
|
||||
|
||||
+12
-97
@@ -99,23 +99,23 @@ typedef struct {
|
||||
|
||||
typedef struct{
|
||||
|
||||
qreal pitch;
|
||||
qreal roll;
|
||||
qreal yaw;
|
||||
qreal pitch = 0;
|
||||
qreal roll = 0;
|
||||
qreal yaw = 0;
|
||||
|
||||
qreal height;
|
||||
qreal height = 0;
|
||||
|
||||
qreal airspeed_maximun;
|
||||
qreal airspeed;
|
||||
qreal airspeed_minimun;
|
||||
qreal airspeed_maximun = 0;
|
||||
qreal airspeed = 0;
|
||||
qreal airspeed_minimun = 0;
|
||||
|
||||
qreal heading;//航线方向
|
||||
qreal position;//侧偏距
|
||||
qreal altitude;//海拔
|
||||
qreal heading = 0;//航线方向
|
||||
qreal position = 0;//侧偏距
|
||||
qreal altitude = 0;//海拔
|
||||
|
||||
qreal verticalspeed;//纵向速度
|
||||
qreal verticalspeed = 0;//纵向速度
|
||||
|
||||
bool isUpdate;
|
||||
bool isUpdate = false;
|
||||
|
||||
}_target;
|
||||
|
||||
@@ -211,93 +211,8 @@ private:
|
||||
|
||||
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;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -84,7 +84,10 @@ public slots:
|
||||
void setRunFrq(uint32_t frq);
|
||||
void start();
|
||||
void stop();
|
||||
|
||||
bool isActive(void)
|
||||
{
|
||||
return running_flag;
|
||||
}
|
||||
|
||||
void Parse(mavlink_message_t msg);
|
||||
|
||||
|
||||
+50
-40
@@ -19,7 +19,7 @@ MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent)
|
||||
initbuff();
|
||||
|
||||
//初始化ID
|
||||
int Current_sysID = 0xF1;
|
||||
int Current_sysID = 0xFB;
|
||||
int Current_CompID = MAV_COMP_ID_MISSIONPLANNER;
|
||||
|
||||
Mission = new MissionProcess();
|
||||
@@ -52,22 +52,44 @@ MavLinkNode::MavLinkNode(QObject *parent) : QObject(parent)
|
||||
connect(Commander,SIGNAL(showMessage(QString,int)),
|
||||
this,SIGNAL(showMessage(QString,int)),Qt::DirectConnection);
|
||||
|
||||
|
||||
showMessage(tr("解锁才能有航迹,需要修正,示波器显示时间不对"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
MavLinkNode::~MavLinkNode()
|
||||
{
|
||||
//停止任务
|
||||
if(Mission)
|
||||
{
|
||||
if(Mission->isActive())
|
||||
{
|
||||
Mission->stop();
|
||||
delete Mission;
|
||||
Mission = nullptr;
|
||||
}
|
||||
}
|
||||
//停止参数
|
||||
if(Parameter)
|
||||
{
|
||||
if(Parameter->isActive())
|
||||
{
|
||||
Parameter->stop();
|
||||
delete Parameter;
|
||||
Parameter = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if(Commander)
|
||||
{
|
||||
if(Commander->isActive())
|
||||
{
|
||||
Commander->stop();
|
||||
delete Commander;
|
||||
Commander = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if(Nodethread->isRunning())
|
||||
{
|
||||
@@ -102,11 +124,20 @@ void MavLinkNode::start()
|
||||
qDebug() << "MavLinkNode thread start" << running_flag;
|
||||
|
||||
|
||||
//启动子线程
|
||||
//Mission->start();
|
||||
//Parameter->start();
|
||||
//Commander->start();
|
||||
if(Mission)
|
||||
{
|
||||
Mission->start();
|
||||
}
|
||||
|
||||
if(Commander)
|
||||
{
|
||||
Commander->start();
|
||||
}
|
||||
|
||||
if(Parameter)
|
||||
{
|
||||
Parameter->start();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -206,21 +237,14 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
{
|
||||
QByteArray datagram;
|
||||
|
||||
//datagram.clear();
|
||||
|
||||
switch (src) {
|
||||
default:
|
||||
case SourceType::c_sock:
|
||||
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.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
|
||||
client_buff.buff[1].clear();
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
@@ -228,17 +252,11 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
}
|
||||
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.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
|
||||
client_buff.buff[0].clear();
|
||||
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
client_buff.select = 0;
|
||||
}
|
||||
@@ -246,24 +264,18 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
case SourceType::s_port:
|
||||
if(serial_buff.select == 0)
|
||||
{
|
||||
//datagram.append(serial_buff.buff[0]);
|
||||
for (QByteArray::const_iterator i = serial_buff.buff[1].cbegin(); i != serial_buff.buff[1].cend(); ++i)
|
||||
{
|
||||
datagram.append(*i);
|
||||
}
|
||||
datagram.clear();
|
||||
datagram.append(serial_buff.buff[1]);
|
||||
//datagram.setRawData(serial_buff.buff[1],serial_buff.buff[1].size());
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
serial_buff.buff[1].clear();
|
||||
serial_buff.select = 1;
|
||||
}
|
||||
else if(serial_buff.select == 1)
|
||||
{
|
||||
//datagram.append(serial_buff.buff[0]);
|
||||
|
||||
for (QByteArray::const_iterator i = serial_buff.buff[0].cbegin(); i != serial_buff.buff[0].cend(); ++i)
|
||||
{
|
||||
datagram.append(*i);
|
||||
}
|
||||
|
||||
datagram.clear();
|
||||
datagram.append(serial_buff.buff[0]);
|
||||
//datagram.setRawData(serial_buff.buff[0],serial_buff.buff[0].size());
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
serial_buff.buff[0].clear();
|
||||
serial_buff.select = 0;
|
||||
@@ -288,20 +300,18 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
|
||||
|
||||
count++;
|
||||
|
||||
/*
|
||||
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); //接收完一帧数据并处理
|
||||
//QThread::sleep(5);
|
||||
//qDebug() << "msg.sysid" <<msg.sysid << "msg.compid" << msg.compid << "fifo parse:" << count << msg.msgid;
|
||||
|
||||
emit recievemsg(msg); //将信息广播出去
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,10 @@ public slots:
|
||||
void setRunFrq(uint32_t frq);
|
||||
void start();
|
||||
void stop();
|
||||
|
||||
bool isActive(void)
|
||||
{
|
||||
return running_flag;
|
||||
}
|
||||
//缓存对外接口
|
||||
void setbuff(quint32 src, QByteArray data);
|
||||
|
||||
|
||||
@@ -74,6 +74,10 @@ public slots:
|
||||
void setRunFrq(uint32_t frq);
|
||||
void start();
|
||||
void stop();
|
||||
bool isActive(void)
|
||||
{
|
||||
return running_flag;
|
||||
}
|
||||
|
||||
|
||||
void Parse(mavlink_message_t msg);
|
||||
|
||||
@@ -87,7 +87,10 @@ public slots:
|
||||
void setRunFrq(uint32_t frq);
|
||||
void start();
|
||||
void stop();
|
||||
|
||||
bool isActive(void)
|
||||
{
|
||||
return running_flag;
|
||||
}
|
||||
|
||||
void Parse(mavlink_message_t msg);
|
||||
|
||||
|
||||
+22
-7
@@ -22,10 +22,10 @@ DLink::DLink(QObject *parent) : QObject(parent)
|
||||
mavlinknode->start();
|
||||
|
||||
|
||||
/*
|
||||
|
||||
connect(this,&DLink::REVMessageTo1,
|
||||
this,&DLink::SendMessageTo1);
|
||||
*/
|
||||
|
||||
//其他协议节点。。。
|
||||
|
||||
}
|
||||
@@ -55,8 +55,7 @@ int DLink::SendMessageTo(quint8 ch, quint8 *msg, quint16 len)
|
||||
|
||||
if (DLink::serialPort)
|
||||
{
|
||||
qint64 flag = DLink::serialPort->write((const char *)msg,len);
|
||||
qDebug() << "serialPort Send Msg";
|
||||
emit REVMessageTo1(ch,msg,len);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -66,7 +65,14 @@ int DLink::SendMessageTo(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;
|
||||
}
|
||||
@@ -268,18 +274,24 @@ void DLink::readPendingDatagramsSerialPort(void)
|
||||
QByteArray datagram = serialPort->readAll();
|
||||
mavlinknode->setbuff(SourceType::s_port,datagram);
|
||||
|
||||
/*
|
||||
|
||||
mavlink_message_t msg;
|
||||
mavlink_status_t status;
|
||||
|
||||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||||
{
|
||||
|
||||
if(MAVLINK_FRAMING_OK == mavlink_parse_char(3,*i,&msg,&status))
|
||||
{
|
||||
//qDebug() << "direct parse:" << count << msg.msgid;
|
||||
qDebug() << "direct parse:" << count << msg.msgid;
|
||||
count++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
QString num;
|
||||
for (int i = 0; i < datagram.size(); ++i) {
|
||||
@@ -306,17 +318,20 @@ void DLink::readPendingDatagramsClient(void)
|
||||
mavlinknode->setbuff(SourceType::c_sock,datagram);
|
||||
|
||||
|
||||
/*
|
||||
mavlink_message_t msg;
|
||||
mavlink_status_t status;
|
||||
|
||||
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
|
||||
{
|
||||
|
||||
if(MAVLINK_FRAMING_OK == mavlink_parse_char(2,*i,&msg,&status))
|
||||
{
|
||||
//qDebug() << "direct parse:" << count << msg.msgid;
|
||||
qDebug() << "direct parse:" << count << msg.msgid;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user