完全移植929 mavlinkNode

This commit is contained in:
hm
2021-11-13 21:52:19 +08:00
parent baa57420b0
commit 047e9e1da2
5 changed files with 47 additions and 37 deletions
+8 -9
View File
@@ -158,8 +158,6 @@ MainWindow::MainWindow(QWidget *parent)
qRegisterMetaType<uint8_t>("uint8_t");
qRegisterMetaType<uint16_t>("uint16_t");
qRegisterMetaType<uint32_t>("uint32_t");
qRegisterMetaType<float>("float");
qRegisterMetaType<double>("double");
//commandbox ----- dlink
connect(toolsui->command,SIGNAL(cmd_long(float,float,float,float,float,float,float,uint16_t,uint8_t)),
@@ -194,14 +192,14 @@ MainWindow::MainWindow(QWidget *parent)
*/
//this ----- dlink
connect(dlink->mavlinknode,SIGNAL(beep()),
this,SLOT(beep()));
connect(dlink->mavlinknode,SIGNAL(beep(int)),
this,SLOT(beep(int)));
connect(dlink->mavlinknode,SIGNAL(CommuniationLost(bool)),
this,SLOT(setCommunicationLostState(bool)));
connect(dlink->mavlinknode,SIGNAL(updateDlink(float,uint64_t)),
this,SLOT(updateDlink(float,uint64_t)));
connect(dlink->mavlinknode,SIGNAL(updateDlink(float,uint64_t,uint64_t)),
this,SLOT(updateDlink(float,uint64_t,uint64_t)));
//this ----- map
connect(map,SIGNAL(TotalDistanceUpdate(double)),
@@ -819,8 +817,9 @@ void MainWindow::showMessage(const QString &message, int TimeOut)
toolsui->index1->setLog(message);
}
void MainWindow::beep(void)
void MainWindow::beep(int id)
{
Q_UNUSED(id)
QApplication::beep();
}
@@ -901,10 +900,10 @@ void MainWindow::setCommunicationLostState(bool flag)
}
void MainWindow::updateDlink(float rssi, uint64_t bitrate)
void MainWindow::updateDlink(float rssi,uint64_t in,uint64_t out)
{
statusui->setDlink(1,QString::number(rssi,'f',0),
QString::number(bitrate));
QString::number(in));
}
+2 -2
View File
@@ -74,7 +74,7 @@ public slots:
void setCommunicationLostState(bool flag);
void beep(void);
void beep(int id);
void setServoOffset(QVariant dirla, QVariant dirra, QVariant dirle, QVariant dirre, QVariant dirru,
@@ -104,7 +104,7 @@ private slots:
void Timer_1s_out(void);
void updateDlink(float rssi,uint64_t bitrate);
void updateDlink(float rssi, uint64_t in, uint64_t out);
protected slots:
+11 -12
View File
@@ -39,7 +39,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
# include sub project
DESTDIR = $$PWD/../bin
DESTDIR = $$PWD/../thirdpart/lib
MOC_DIR = $$PWD/../build
OBJECTS_DIR = $$PWD/../build
@@ -73,18 +73,18 @@ SOURCES += \
sbusparser.cpp \
statusprocess.cpp
INCLUDEPATH += $$DESTDIR/include
INCLUDEPATH += $$PWD/../thirdpart/include
# Capture whether this is a release/debug build.
CONFIG(debug, debug|release) {
LIBS += -L$$DESTDIR -lcored
LIBS += -L$$DESTDIR -linternalsd
LIBS += -L$$DESTDIR -lopmapwidgetd
LIBS += -L$$PWD/../thirdpart/lib -lcored
LIBS += -L$$PWD/../thirdpart/lib -linternalsd
LIBS += -L$$PWD/../thirdpart/lib -lopmapwidgetd
}
CONFIG(release, debug|release) {
LIBS += -L$$DESTDIR -lcore
LIBS += -L$$DESTDIR -linternals
LIBS += -L$$DESTDIR -lopmapwidget
LIBS += -L$$PWD/../thirdpart/lib -lcore
LIBS += -L$$PWD/../thirdpart/lib -linternals
LIBS += -L$$PWD/../thirdpart/lib -lopmapwidget
}
@@ -104,9 +104,9 @@ INCLUDEPATH += $$PWD/../mavlink \
win32|win64 {
win32|win64 {
src_dir = $$PWD\\*.h
dst_dir = $$PWD\\..\\bin\\include\\
dst_dir = $$PWD\\..\\thirdpart\\include\\
# dst_dir 最后的 \\ 是必须的,用来标示 xcopy 到一个文件夹,若不存在,创建之
# Replace slashes in paths with backslashes for Windows
@@ -114,13 +114,12 @@ win32|win64 {
dst_dir ~= s,/,\\,g
system(xcopy $$src_dir $$dst_dir /y /e)
}
unix {
src_dir = $$PWD/*.h
dst_dir = $$PWD/../bin/include/
dst_dir = $$PWD/../thirdpart/include/
!exists($$dst_dir): system(mkdir -p $$dst_dir)
+22 -6
View File
@@ -488,7 +488,7 @@ void MavLinkNode::process()//线程函数
while (running_flag)
{
count ++;
QThread::msleep(1000/running_frq);
//QThread::msleep(1000/running_frq);
//timer->start();
//解码从UDP来的
@@ -498,7 +498,12 @@ void MavLinkNode::process()//线程函数
{
//qDebug() << "client parse";
Mavlinkparse(SourceType::c_sock,datagram);
QApplication::processEvents();
}
else
{
//QThread::msleep(1000/running_frq);
QThread::yieldCurrentThread();
}
//解码从串口来的
@@ -509,7 +514,12 @@ void MavLinkNode::process()//线程函数
{
//qDebug() << "serial port parse";
Mavlinkparse(SourceType::s_port,datagram);
QApplication::processEvents();
}
else
{
//QThread::msleep(1000/running_frq);
QThread::yieldCurrentThread();
}
if(isInterruptionRequested())//退出
@@ -601,6 +611,8 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
hasConneted = true;
count_in += datagram.size();
for (QByteArray::const_iterator i = datagram.cbegin(); i != datagram.cend(); ++i)
{
@@ -779,7 +791,10 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
{
_vehicle vehicle = vehicleList.value(msg.sysid);
//_vehicle vehicle = vehicleList.value(msg.sysid);
vehicle.sysid = msg.sysid;
vehicle.compid = msg.compid;
switch (msg.msgid) {
case MAVLINK_MSG_ID_AUTOPILOT_VERSION: {
@@ -1132,13 +1147,14 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
vehicleList.insert(msg.sysid,vehicle);//直接覆盖
//vehicleList.insert(msg.sysid,vehicle);//直接覆盖
emit signal_vehicle(vehicle);
//emit state_updated();
emit state_updated();
}
+4 -8
View File
@@ -8,14 +8,12 @@ DLink::DLink(QObject *parent) : QObject(parent)
qDebug() << "Dlink " << QThread::currentThreadId();
//采用插件导入的方式(plugin)
//mavlink协议节点
//采用插件导入的方式(plugin
mavlinknode = new MavLinkNode();//不允许带参数,因为这是单独的线程
//在当前线程运行
connect(mavlinknode,SIGNAL(SendMessageTo(quint8,quint8*,quint16)),
this,SLOT(SendMessageTo(quint8,quint8*,quint16)),Qt::BlockingQueuedConnection);//采用直连的方式,因为是多线程
this,SLOT(SendMessageTo(quint8,quint8*,quint16)),Qt::BlockingQueuedConnection);//BlockingQueuedConnection);//信号和槽必须在不同的线程中,否则就产生死锁
//在当前线程运行
connect(mavlinknode,SIGNAL(showMessage(QString,int)),
@@ -25,15 +23,13 @@ DLink::DLink(QObject *parent) : QObject(parent)
connect(this,SIGNAL(recieveMessage(quint32,QByteArray)),
mavlinknode,SLOT(setbuff(quint32,QByteArray)),Qt::DirectConnection);
mavlinknode->start();
//其他协议节点。。。
}
DLink::~DLink()
{
stopPort();
mavlinknode->stop();
mavlinknode->deleteLater();
delete mavlinknode;
mavlinknode = nullptr;
}