diff --git a/App/CommandUI/CommandUI.cpp b/App/CommandUI/CommandUI.cpp
index 0698d3e..c4cfc97 100644
--- a/App/CommandUI/CommandUI.cpp
+++ b/App/CommandUI/CommandUI.cpp
@@ -51,6 +51,7 @@ CommandUI::CommandUI(QWidget *parent) :
+
}
CommandUI::~CommandUI()
diff --git a/App/CommandUI/CommandUI.qss b/App/CommandUI/CommandUI.qss
index 93a87c3..61d6adb 100644
--- a/App/CommandUI/CommandUI.qss
+++ b/App/CommandUI/CommandUI.qss
@@ -56,35 +56,50 @@ CommandButton:pressed[state="2"] {
font: 15px "黑体";
}
-.QToolBar QToolButton::right-arrow {
- background-color:rgb(132, 171, 255);
- border-width: 0;
+.QTabBar::tab{
+ max-width: 75px;
+ min-width: 75px;
+ min-height: 40px;
}
-.QToolBar QToolButton::right-arrow:hover {
+.QTabBar::tab:!selected {
+ color:#000000;
+}
+
+.QTabBar::tab:selected {
+ color:#000000;
+ background-color: #FE9A2E;
+}
+
+
+QTabBar::scroller { /* the width of the scroll buttons */
+ width: 80px;
+}
+
+QTabBar QToolButton { /* the scroll buttons are tool buttons */
+ border-width: 2px;
+}
+
+QTabBar QToolButton::right-arrow { /* the arrow mark in the tool buttons */
+ image: url(:/img/right.png);
+}
+
+QTabBar QToolButton::left-arrow {
+ image: url(:/img/left.png);
+}
+
+
+.QTabBar QToolButton::right-arrow:hover {
background-color:rgb(255, 171, 208);
border-width: 0;
}
-.QToolBar QToolButton::right-arrow:disabled {
- background-color:rgb(132, 255, 208);
- border-width: 0;
-}
-.QToolBar QToolButton::left-arrow {
- background-color:rgb(132, 171, 255);
- border-width: 0;
-}
-
-.QToolBar QToolButton::left-arrow:hover {
+.QTabBar QToolButton::left-arrow:hover {
background-color:rgb(255, 171, 208);
border-width: 0;
}
-.QToolBar QToolButton::left-arrow:disabled {
- background-color:rgb(132, 255, 208);
- border-width: 0;
-}
diff --git a/App/CommandUI/CommandUIres.qrc b/App/CommandUI/CommandUIres.qrc
index 8496fd6..4b28cac 100644
--- a/App/CommandUI/CommandUIres.qrc
+++ b/App/CommandUI/CommandUIres.qrc
@@ -5,4 +5,8 @@
Command.json
+
+ left.png
+ right.png
+
diff --git a/App/CommandUI/left.png b/App/CommandUI/left.png
new file mode 100644
index 0000000..50a6bd0
Binary files /dev/null and b/App/CommandUI/left.png differ
diff --git a/App/CommandUI/right.png b/App/CommandUI/right.png
new file mode 100644
index 0000000..6c2e757
Binary files /dev/null and b/App/CommandUI/right.png differ
diff --git a/App/GCS_zh_CN.qm b/App/GCS_zh_CN.qm
index 126c78e..a1f097e 100644
Binary files a/App/GCS_zh_CN.qm and b/App/GCS_zh_CN.qm differ
diff --git a/App/GCS_zh_CN.ts b/App/GCS_zh_CN.ts
index 2824968..84ae6d2 100644
--- a/App/GCS_zh_CN.ts
+++ b/App/GCS_zh_CN.ts
@@ -414,112 +414,112 @@
Group 1
-
+ 组 1
Group 2
-
+ 组 2
Group 3
-
+ 组 3
Group 4
-
+ 组 4
-
+
Selete Command File...
选择指令脚本...
-
+
command file (*.json)
指令脚本 (*.json)
-
+
.json
-
+
.qml
-
-
+
+
发送指令 %1 %2
-
+
无人机 %1 %2 %3 %4
-
+
set parameter
-
+
%1,%2 accepted and executed
%1,%2 发送成功
-
+
%1,%2 rejected
%1,%2 拒绝执行
-
+
%1,%2 permanently denied
%1,%2 永久拒绝
-
+
%1,%2 unsupported
%1,%2 不支持
-
+
%1,%2 failed
%1,%2 发送失败
-
+
%1,%2 being executed
%1,%2 正在执行
-
+
%1,%2 time out
%1,%2 发送超时
-
+
Please do not operate too fast, the last instruction has not been sent
请不要操作过快,上一个指令未发送完成
-
+
设置航点 %1
-
+
point:
-
+ 航点:
-
+
click confirm to set uav %1 as current
@@ -548,7 +548,7 @@
%1 正在执行
-
+
click confirm to set Point %1 as current point
点击设置航点%1为当前航点
@@ -2142,36 +2142,36 @@
参数
-
-
+
+
Communication Lost
通讯丢失
-
-
+
+
Communication Regain
通讯已恢复
-
+
R:%1 / T:%2
收:%1/发:%2
-
-
-
+
+
+
未定位
-
+
%1D[%2颗]
%1D[%2颗]
-
+
fix[%1颗]
%1D Fix
差分[%1颗]
@@ -2189,256 +2189,256 @@
GPS错误
-
+
float[%1颗]
浮点[%1颗]
-
+
err[%1颗]
错误[%1颗]
-
+
ARM
解锁
-
+
DISARM
上锁
-
+
MANUAL
手动
-
+
ALTCTL
定高
-
+
POSCTL
定点
-
+
AUTO
自主
-
+
ACRO
-
+
OFFBOARD
-
+
STABILIZED
增稳
-
+
RATTITUDE
速率
-
+
STANDBY
待机
-
+
BIT
测试
-
+
AUTO_READY
就绪
-
+
AUTO_TAKEOFF
起飞
-
+
AUTO_LOITER
盘旋
-
+
AUTO_MISSION
任务
-
+
AUTO_RTL
返航
-
+
AUTO_LAND
着陆
-
+
AUTO_RTGS
RTGS
-
+
AUTO_FOLLOW_TARGET
目标跟随
-
+
开加力
-
+
半加力
-
+
全加力
-
-
+
+
关加力
-
+
伞舱开
-
+
伞舱关
-
+
INS解算正常
-
+
INS星数不足
-
+
INS内部错误
-
+
INS速度超限
-
+
SBG解算正常
-
+
SBG星数不足
-
+
SBG内部错误
-
+
SBG速度超限
-
+
安控区内
-
+
安控区外
-
+
mission group has changed, current group is %1
航线切换,当前航线为 %1
-
+
VERT_OFF
OFF
纵向制导关闭
-
+
VNAV2THT
消除纵向偏差
-
+
HDOT2THT
控制升降速率
-
+
GAMMA2THT
控制航迹角
-
+
AS2THT
俯仰控制速度
-
+
H2THT
控制绝对高度
-
+
AGL2THT
控制相对高度
-
+
LAT_OFF
横向制导关闭
-
+
LNAV2PHI
滚转消除侧偏
-
+
PSI2PHI
滚转控制航向
-
-
-
+
+
+
@@ -2447,156 +2447,156 @@
未定位
-
-
+
+
未初始化
-
-
+
+
垂直陀螺
-
-
+
+
AHRS
-
-
+
+
速度导航
-
-
+
+
位置导航
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
正常
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
无效
-
-
+
+
解算正常
-
-
+
+
卫星数不足
-
-
+
+
内部错误
-
-
-
- 速度超限
-
-
-
-
-
-
-
- 未知
-
-
-
-
-
- 多普勒
-
-
-
-
-
- 微分
-
-
-
-
-
- 单点
-
-
- 伪距差分
+ 速度超限
-
-
- SBAS广域差分
-
-
-
-
-
- 广域差分
-
-
-
-
-
- RTK_FLOAT
-
-
-
-
-
- RTK_INT
-
-
-
-
-
- PPP_FLOAT
+
+
+
+
+ 未知
+ 多普勒
+
+
+
+
+
+ 微分
+
+
+
+
+
+ 单点
+
+
+
+
+
+ 伪距差分
+
+
+
+
+
+ SBAS广域差分
+
+
+
+
+
+ 广域差分
+
+
+
+
+
+ RTK_FLOAT
+
+
+
+
+
+ RTK_INT
+
+
+
+
+
+ PPP_FLOAT
+
+
+
+
+
PPP_INT
-
-
+
+
FIXED
@@ -2605,17 +2605,17 @@
未支持
-
+
flight mode
飞行模式
-
+
连接内置惯导
-
+
连接SBG
@@ -2761,38 +2761,38 @@
界面
-
+
save
保存
-
+
insert
插入
-
+
upload
上传
-
+
add
增加
-
+
download
downlload
下载
-
+
load
打开
-
+
delete
删除
@@ -2802,7 +2802,7 @@
围栏
-
+
clean
清空
@@ -2852,186 +2852,192 @@
起飞
-
+
number
航点
-
+
command
类型
-
+
par1
参数1
-
+
par2
参数2
-
+
par3
参数3
-
+
par4
参数4
-
-
+
+
lat
纬度
-
addCircle
- 添加圆形
+ 添加圆形
-
addPolygon
- 添加多边形
+ 添加多边形
-
delCircle
- 删除圆形
+ 删除圆形
-
delPolygon
- 删除多边形
+ 删除多边形
-
-
+
+
lng
经度
-
+
group
组别
-
-
-
-
-
+
+
+
+
+
+
+
+
inclusion
包含
-
+
par
参数
-
+
type
类型
-
+
alt
海拔
-
-
-
-
-
-
+
+
+
+
+
+
+
Circle
圆形
-
-
-
-
+
+
+
+
+
+
+
exclusion
除外
-
-
-
-
-
+
+
+
+
+
+
+
+
Polygon
多边形
-
-
+
+
航点
-
-
+
+
返航
-
-
+
+
降落
-
-
+
+
起飞
-
-
+
+
保持
-
-
+
+
表速
-
-
+
+
快升
-
-
+
+
开加力
-
-
+
+
关加力
-
-
+
+
Selete Way Point File...
选择载入文件...
-
-
+
+
plan file (*.plan)
任务文件 (*.plan)
@@ -5134,87 +5140,87 @@ p, li { white-space: pre-wrap; }
-
-
-
+
+
+
Relative
相对
-
-
-
+
+
+
Absolutely
绝对
-
+
param1
-
+
param2
-
+
param3
-
+
param4
-
+
param5
-
+
param6
-
+
param7
-
+
set
设置
-
+
Altitude
海拔
-
+
setLatitude
设置纬度
-
+
setLongitude
设置经度
-
-
+
+
plan file (*.plan)
任务文件 (*.plan)
-
+
click to clear all points
点击清除所有航点
-
+
Measuring
测量中
@@ -5270,7 +5276,7 @@ p, li { white-space: pre-wrap; }
-
+
Measure
测量
@@ -5284,8 +5290,8 @@ p, li { white-space: pre-wrap; }
组别
-
-
+
+
Selete Way Point File...
Select Loading File...
选择载入文件...
diff --git a/App/MissionUI/MissionUI.cpp b/App/MissionUI/MissionUI.cpp
index dd474f6..1b24a49 100644
--- a/App/MissionUI/MissionUI.cpp
+++ b/App/MissionUI/MissionUI.cpp
@@ -7,7 +7,7 @@ MissionUI::MissionUI(QWidget *parent) :
{
ui->setupUi(this);
setWindowTitle(tr("Mission Table"));
- //setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
+ setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
//load qss
QFile file(":/qss/propertyui.qss");
@@ -180,6 +180,7 @@ MissionUI::MissionUI(QWidget *parent) :
}
//删除完成后,刷新一次所有航点
emit getAllPoints(group);
+ emit getCurrentPoint(group);
});
connect(btn_delete,&CustomButton::clicked,[=](){
@@ -903,6 +904,19 @@ void MissionUI::pointDelete(int idx)
*/
}
+void MissionUI::currentPointSeleted(int group,int point)
+{
+ /*
+ qDebug() << "Selete" << group << point;
+
+ QTableWidget *widget = tablelist.value(group);
+ if(widget)
+ {
+ widget->selectRow(point - 1);
+ }
+ */
+}
+
void MissionUI::setCurrent(int group,int idx)
{
QTableWidget *widget = tablelist.value(group);
@@ -1271,7 +1285,6 @@ void MissionUI::itemDoubleClicked(QTableWidgetItem *item)
}
emit setFencePolygon(gidx,par,inclusion,latlng);
-
}
});
}
diff --git a/App/MissionUI/MissionUI.h b/App/MissionUI/MissionUI.h
index b7a3574..8cc6cd7 100644
--- a/App/MissionUI/MissionUI.h
+++ b/App/MissionUI/MissionUI.h
@@ -51,7 +51,7 @@ public slots:
void updateFenceCircle(int group,qreal radius, bool inclusion, qreal lat, qreal lng);
void updateFencePolygon(int group,qreal vertex,bool inclusion,QList latlng);
-
+ void currentPointSeleted(int group,int point);
protected slots:
void closeEvent(QCloseEvent *event);
void resizeEvent(QResizeEvent *event);
@@ -103,6 +103,8 @@ signals:
void addPolygon();
void delFence(int group);
+ void getCurrentPoint(int group);
+
private:
Ui::MissionUI *ui;
diff --git a/App/MissionUI/propertyui.cpp b/App/MissionUI/propertyui.cpp
index 6ca001b..1544b9f 100644
--- a/App/MissionUI/propertyui.cpp
+++ b/App/MissionUI/propertyui.cpp
@@ -198,6 +198,12 @@ propertyui::propertyui(QWidget *parent) :
table,&MissionUI::updateFencePolygon);
+ connect(this,SIGNAL(currentPointSeleted(int,int)),
+ table,SLOT(currentPointSeleted(int,int)));
+
+ connect(table,&MissionUI::getCurrentPoint,
+ this,&propertyui::getCurrentPoint);
+
//初始化参数
setWayPointProperty(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3);
diff --git a/App/MissionUI/propertyui.h b/App/MissionUI/propertyui.h
index dc62920..42f7c8f 100644
--- a/App/MissionUI/propertyui.h
+++ b/App/MissionUI/propertyui.h
@@ -276,6 +276,9 @@ Q_SIGNALS:
void addPolygon();
void delFence(int group);
+ void currentPointSeleted(int group,int point);
+ void getCurrentPoint(int group);
+
private slots:
void GroupChanged(int value);
diff --git a/App/MissionUI/propertyui.qss b/App/MissionUI/propertyui.qss
index c3c2006..3c6aec0 100644
--- a/App/MissionUI/propertyui.qss
+++ b/App/MissionUI/propertyui.qss
@@ -83,6 +83,11 @@
stop: 0 #dadbde, stop: 1 #f6f7fa);
}
+.QTabBar::tab{
+ max-width: 75px;
+ min-width: 75px;
+ min-height: 40px;
+}
.QTabBar::tab:!selected {
color:#000000;
diff --git a/App/mainwindow.cpp b/App/mainwindow.cpp
index 9d84c9d..f88b5ec 100644
--- a/App/mainwindow.cpp
+++ b/App/mainwindow.cpp
@@ -457,6 +457,13 @@ MainWindow::MainWindow(QWidget *parent)
missionUI,SIGNAL(updateFencePolygon(int,qreal,bool,QList)));
+ connect(map,SIGNAL(currentPointSeleted(int,int)),
+ missionUI,SIGNAL(currentPointSeleted(int,int)),Qt::DirectConnection);
+
+
+ connect(missionUI,SIGNAL(getCurrentPoint(int)),
+ map,SLOT(getCurrentPoint(int)),Qt::DirectConnection);
+
//dlink ----- map
connect(map,SIGNAL(signal_WPDownload(uint8_t,uint8_t,int)),
@@ -1373,7 +1380,11 @@ void MainWindow::updateUI()//事件驱动式更新数据
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
- //QApplication::processEvents();
+ map->setUAVSpeed(dlink->mavlinknode->vehicle.sysid,
+ dlink->mavlinknode->vehicle.compid,
+ dlink->mavlinknode->vehicle.emb_atom_com.mach,
+ dlink->mavlinknode->vehicle.emb_atom_com.Airspeed);
+
@@ -1384,8 +1395,12 @@ void MainWindow::updateUI()//事件驱动式更新数据
menuBarUI->setTargetAlt(dlink->mavlinknode->vehicle.sys_status.load);
-
uint8_t hour = time / 10000;
+
+ if(hour >= 24){
+ hour -= 24;
+ }
+
uint8_t min = (time % 10000)/100;
uint8_t sec = time % 100;
@@ -1405,9 +1420,6 @@ void MainWindow::updateUI()//事件驱动式更新数据
-
-
-
/*
if(MainIndex == 3)//飞行界面
{
@@ -1692,16 +1704,12 @@ void MainWindow::updateUI()//事件驱动式更新数据
//get 9-10
-
-
//得到航线组数,数据为1,2,3,4
group = (int)(getBit(enable,11) << 2) | (int)(getBit(enable,10) << 1) | (int)(getBit(enable,9));
if(group_old != group)//有变化的时候就发出去
{
emit currentGroup(group + 2);
- //qDebug() << "group change" << group;
-
showMessage(tr("mission group has changed, current group is %1").arg(group));
}
@@ -1799,6 +1807,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
+
+
if(toolsui->senser)
{
diff --git a/MavLinkNode/MavLinkNode.pro b/MavLinkNode/MavLinkNode.pro
index f8ccacf..cb3399f 100644
--- a/MavLinkNode/MavLinkNode.pro
+++ b/MavLinkNode/MavLinkNode.pro
@@ -49,6 +49,7 @@ DEFINES += QtMavlinkNode
HEADERS += \
+ ParsePack.h \
Terminal.h \
ThreadTemplet.h \
commandprocess.h \
@@ -63,6 +64,7 @@ HEADERS += \
statusprocess.h
SOURCES += \
+ ParsePack.c \
Terminal.cpp \
ThreadTemplet.cpp \
commandprocess.cpp \
diff --git a/MavLinkNode/ParsePack.c b/MavLinkNode/ParsePack.c
new file mode 100644
index 0000000..0c7f040
--- /dev/null
+++ b/MavLinkNode/ParsePack.c
@@ -0,0 +1,230 @@
+/*
+ * ParserPack.c
+ *
+ * Created on: Jun 24, 2020
+ * Author: matth
+ */
+
+#include "ParsePack.h"
+
+static uint16_t CRC_CheckSum (uint8_t *pBuffer, uint16_t len)
+{
+ uint16_t poly = 0x8408;
+ uint16_t crc = 0;
+ uint8_t carry;
+ uint8_t i_bits;
+ uint16_t j;
+
+ for (j = 0; j < len; j++) {
+ crc = (uint16_t) (crc ^ (uint8_t) pBuffer[j]);
+ for (i_bits = 0; i_bits < 8; i_bits++) {
+ carry = (uint8_t) (crc & 1);
+ crc = (uint16_t) (crc / 2);
+ if (carry) {
+ crc = (uint16_t) (crc ^ poly);
+ }
+ }
+ }
+ return crc;
+}
+
+
+void Packer_init(Packer_t *pack)
+{
+ pack->buff[0] = 0xEB;
+ pack->buff[1] = 0x90;
+ pack->seq = 0;
+}
+
+size_t Packer_pack(Packer_t *pack, uint8_t id, uint8_t pkg[], uint16_t len)
+{
+ uint16_t j;
+ size_t i;
+
+ pack->buff[2] = pack->seq++;
+ pack->buff[3] = id;
+ pack->buff[4] = (len >> 8) & 0xFF;
+ pack->buff[5] = len & 0xFF;
+ for (i=6,j=0u;jbuff[i] = pkg[j];
+ }
+ uint16_t crc16 = CRC_CheckSum(&pack->buff[6], len);
+ pack->buff[i++] = (crc16 & 0xFF);
+ pack->buff[i++] = (crc16 >> 8)&0xFF;
+ return i;
+}
+
+void Parser_init(Parser_t *parser)
+{
+ parser->stage = 0;
+ parser->crc_err_cnt = 0;
+ parser->head_err_cnt = 0;
+}
+
+int Parser_char(Parser_t *parser, uint8_t c)
+{
+ int rslt = -1;
+
+ switch (parser->stage)
+ {
+ case 0:
+ if (c == 0xEB)
+ {
+ parser->stage++;
+ }
+ else
+ {
+ parser->head_err_cnt++;
+ }
+ break;
+ case 1:
+ if (c == 0x90)
+ {
+ parser->stage++;
+ }
+ else
+ {
+ parser->stage = 0;
+ parser->head_err_cnt++;
+ }
+ break;
+ case 2:
+ parser->seq = c;
+ parser->stage++;
+ break;
+ case 3:
+ parser->id = c;
+ parser->stage++;
+ break;
+ case 4:
+ parser->len = c;
+ parser->stage++;
+ break;
+ case 5:
+ parser->len = (parser->len << 8) + c;
+ if (parser->len <=PARSER_BUFF_LEN)
+ {
+ parser->idx = 0;
+ parser->stage++;
+ }
+ else
+ {
+ parser->stage = 0;
+ }
+ break;
+ case 6:
+ parser->buff[parser->idx++] = c;
+ if (parser->idx == parser->len)
+ {
+ parser->stage++;
+ }
+ break;
+ case 7:
+ parser->crc16 = c;
+ parser->stage++;
+ break;
+ case 8:
+ parser->crc16 += (c<<8);
+ if (parser->crc16 == CRC_CheckSum(parser->buff, parser->len))
+ {
+ rslt = parser->id;
+ }
+ else
+ {
+ parser->crc_err_cnt++;
+ }
+ parser->stage = 0;
+ break;
+ default:
+ parser->stage = 0;
+ break;
+ }
+
+ return rslt;
+}
+
+void Packer2_init(Packer2_t *pack)
+{
+ pack->buff[0] = 0xEB;
+ pack->buff[1] = 0x90;
+}
+
+size_t Packer2_pack(Packer2_t *pack, uint8_t id, uint8_t pkg[], uint8_t len)
+{
+ uint8_t j;
+ size_t i;
+ uint8_t sum;
+
+ pack->buff[2] = id;
+ pack->buff[3] = len;
+ sum = 0u;
+ for (i=4,j=0u;jbuff[i] = pkg[j];
+ sum += pkg[j];
+ }
+ pack->buff[i++] = sum;
+ return i;
+}
+
+void Parser2_init(Parser2_t *parser)
+{
+ parser->stage = 0;
+}
+
+
+int Parser2_char(Parser2_t *parser, uint8_t c)
+{
+ int rslt = -1;
+
+ switch (parser->stage)
+ {
+ case 0:
+ if (c == 0xEB)
+ {
+ parser->stage++;
+ }
+ break;
+ case 1:
+ if (c == 0x90)
+ {
+ parser->stage++;
+ }
+ else
+ {
+ parser->stage = 0;
+ }
+ break;
+ case 2:
+ parser->id = c;
+ parser->stage++;
+ break;
+ case 3:
+ parser->len = c;
+ parser->stage++;
+ parser->idx = 0;
+ parser->sum = 0;
+ break;
+ case 4:
+ parser->buff[parser->idx++] = c;
+ parser->sum += c;
+ if (parser->idx == parser->len)
+ {
+ parser->stage++;
+ }
+ break;
+ case 5:
+ if (parser->sum == c)
+ {
+ rslt = parser->id;
+ }
+ parser->stage = 0;
+ break;
+ default:
+ parser->stage = 0;
+ break;
+ }
+
+ return rslt;
+}
diff --git a/MavLinkNode/ParsePack.h b/MavLinkNode/ParsePack.h
new file mode 100644
index 0000000..c1c1a9e
--- /dev/null
+++ b/MavLinkNode/ParsePack.h
@@ -0,0 +1,72 @@
+/*
+ * ParserPack.h
+ *
+ * Created on: Jun 24, 2020
+ * Author: matth
+ */
+
+#ifndef MATT_PARSEPACK_H_
+#define MATT_PARSEPACK_H_
+
+#include
+#include
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#ifndef PARSER_BUFF_LEN
+#define PARSER_BUFF_LEN (512)
+#endif
+
+#ifndef PACKER_BUFF_LEN
+#define PACKER_BUFF_LEN (512+6)
+#endif
+
+typedef struct{
+ int stage;
+ uint16_t idx;
+ uint16_t len;
+ uint8_t seq;
+ uint16_t id;
+ uint16_t crc16;
+ uint32_t crc_err_cnt;
+ uint32_t head_err_cnt;
+ uint8_t buff[PARSER_BUFF_LEN];
+} Parser_t;
+
+typedef struct{
+ uint8_t seq;
+ uint8_t buff[PARSER_BUFF_LEN];
+} Packer_t;
+
+void Parser_init(Parser_t *parser);
+void Packer_init(Packer_t *pack);
+
+int Parser_char(Parser_t *parser, uint8_t c);
+size_t Packer_pack(Packer_t *pack, uint8_t id, uint8_t pkg[], uint16_t len);
+
+typedef struct{
+ int stage;
+ uint8_t idx;
+ uint8_t len;
+ uint16_t id;
+ uint8_t sum;
+ uint8_t buff[255];
+} Parser2_t;
+
+typedef struct{
+ uint8_t buff[260];
+} Packer2_t;
+
+void Parser2_init(Parser2_t *parser);
+void Packer2_init(Packer2_t *pack);
+
+int Parser2_char(Parser2_t *parser, uint8_t c);
+size_t Packer2_pack(Packer2_t *pack, uint8_t id, uint8_t pkg[], uint8_t len);
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* MATT_PARSEPACK_H_ */
diff --git a/MavLinkNode/mavlinknode.cpp b/MavLinkNode/mavlinknode.cpp
index b9758cb..e27d487 100644
--- a/MavLinkNode/mavlinknode.cpp
+++ b/MavLinkNode/mavlinknode.cpp
@@ -163,11 +163,19 @@ MavLinkNode::MavLinkNode(QObject *parent) : ThreadTemplet(parent)
qDebug() << "mavlink" << QThread::currentThreadId();
+ CreateCSV();
+
+
+ Parser2_init(&parser);
+ Packer2_init(&packer);
+
}
MavLinkNode::~MavLinkNode()
{
- CreateCSV();
+ //CreateCSV();
+
+ CloseCSV();
if (mavLogFile)
{
@@ -305,179 +313,273 @@ void MavLinkNode::CreateCSV(void)
filetime.append("/");
- autopilot_version_file = new QFile(filetime + "autopilot_version_file.csv");
+ autopilot_version_file = new QFile(filetime + "autopilot_version.csv");
autopilot_version_file->open(QIODevice::WriteOnly);
- sys_status_file = new QFile(filetime + "sys_status_file.csv");
+ sys_status_file = new QFile(filetime + "sys_status.csv");
sys_status_file->open(QIODevice::WriteOnly);
heartbeat_file = new QFile(filetime + "heartbeat.csv");
heartbeat_file->open(QIODevice::WriteOnly);
- ping_file = new QFile(filetime + "ping_file.csv");
+ ping_file = new QFile(filetime + "ping.csv");
ping_file->open(QIODevice::WriteOnly);
- attitude_file = new QFile(filetime + "attitude_file.csv");
+ attitude_file = new QFile(filetime + "attitude.csv");
attitude_file->open(QIODevice::WriteOnly);
- ins1_file = new QFile(filetime + "ins1_file.csv");
+ ins1_file = new QFile(filetime + "ins1.csv");
ins1_file->open(QIODevice::WriteOnly);
- ins2_file = new QFile(filetime + "ins2_file.csv");
+ ins2_file = new QFile(filetime + "ins2.csv");
ins2_file->open(QIODevice::WriteOnly);
- gps_raw_int_file = new QFile(filetime + "gps_raw_int_file.csv");
+ gps_raw_int_file = new QFile(filetime + "gps_raw_int.csv");
gps_raw_int_file->open(QIODevice::WriteOnly);
- global_position_int_file = new QFile(filetime + "global_position_int_file.csv");
+ global_position_int_file = new QFile(filetime + "global_position_int.csv");
global_position_int_file->open(QIODevice::WriteOnly);
- servo_output_raw_file = new QFile(filetime + "servo_output_raw_file.csv");
+ servo_output_raw_file = new QFile(filetime + "servo_output_raw.csv");
servo_output_raw_file->open(QIODevice::WriteOnly);
- rc_channels_raw_file = new QFile(filetime + "rc_channels_raw_file.csv");
+ rc_channels_raw_file = new QFile(filetime + "rc_channels_raw.csv");
rc_channels_raw_file->open(QIODevice::WriteOnly);
- nav_controller_output_file = new QFile(filetime + "nav_controller_output_file.csv");
+ nav_controller_output_file = new QFile(filetime + "nav_controller_output.csv");
nav_controller_output_file->open(QIODevice::WriteOnly);
- airspeed_autocal_file = new QFile(filetime + "airspeed_autocal_file.csv");
+ airspeed_autocal_file = new QFile(filetime + "airspeed_autocal.csv");
airspeed_autocal_file->open(QIODevice::WriteOnly);
- rpm_file = new QFile(filetime + "rpm_file.csv");
+ rpm_file = new QFile(filetime + "rpm.csv");
rpm_file->open(QIODevice::WriteOnly);
- scaled_pressure_file = new QFile(filetime + "scaled_pressure_file.csv");
+ scaled_pressure_file = new QFile(filetime + "scaled_pressure.csv");
scaled_pressure_file->open(QIODevice::WriteOnly);
- extended_sys_state_file = new QFile(filetime + "extended_sys_state_file.csv");
+ extended_sys_state_file = new QFile(filetime + "extended_sys_state.csv");
extended_sys_state_file->open(QIODevice::WriteOnly);
- battery_status_file = new QFile(filetime + "battery_status_file.csv");
+ battery_status_file = new QFile(filetime + "battery_status.csv");
battery_status_file->open(QIODevice::WriteOnly);
- vibration_file = new QFile(filetime + "vibration_file.csv");
+ vibration_file = new QFile(filetime + "vibration.csv");
vibration_file->open(QIODevice::WriteOnly);
- enginestate_file = new QFile(filetime + "enginestate_file.csv");
+ enginestate_file = new QFile(filetime + "enginestate.csv");
enginestate_file->open(QIODevice::WriteOnly);
- vfr_hud_file = new QFile(filetime + "vfr_hud_file.csv");
+ vfr_hud_file = new QFile(filetime + "vfr_hud.csv");
vfr_hud_file->open(QIODevice::WriteOnly);
- aoa_ssa_file = new QFile(filetime + "aoa_ssa_file.csv");
+ aoa_ssa_file = new QFile(filetime + "aoa_ssa.csv");
aoa_ssa_file->open(QIODevice::WriteOnly);
- emb_atom_com_file = new QFile(filetime + "emb_atom_com_file.csv");
+ emb_atom_com_file = new QFile(filetime + "emb_atom_com.csv");
emb_atom_com_file->open(QIODevice::WriteOnly);
- turbinstate_file = new QFile(filetime + "turbinstate_file.csv");
+ turbinstate_file = new QFile(filetime + "turbinstate.csv");
turbinstate_file->open(QIODevice::WriteOnly);
- bmustate_file = new QFile(filetime + "bmustate_file.csv");
+ bmustate_file = new QFile(filetime + "bmustate.csv");
bmustate_file->open(QIODevice::WriteOnly);
- ccmstate_file = new QFile(filetime + "ccmstate_file.csv");
+ ccmstate_file = new QFile(filetime + "ccmstate.csv");
ccmstate_file->open(QIODevice::WriteOnly);
- serial_control_file = new QFile(filetime + "serial_control_file.csv");
+ serial_control_file = new QFile(filetime + "serial_control.csv");
serial_control_file->open(QIODevice::WriteOnly);
-
- autopilot_version_file->write(autopilot_version_csv);
- sys_status_file->write(sys_status_csv);
- heartbeat_file->write(heartbeat_csv);
- ping_file->write(ping_csv);
- attitude_file->write(attitude_csv);
- ins1_file->write(ins1_csv);
- ins2_file->write(ins2_csv);
- gps_raw_int_file->write(gps_raw_int_csv);
- global_position_int_file->write(global_position_int_csv);
-
- for(int i = 0;i < 10;i++)
- {
- servo_output_raw_file->write(servo_output_raw_csv[i]);
- }
- rc_channels_raw_file->write(rc_channels_raw_csv);
- nav_controller_output_file->write(nav_controller_output_csv);
- airspeed_autocal_file->write(airspeed_autocal_csv);
- rpm_file->write(rpm_csv);
- scaled_pressure_file->write(scaled_pressure_csv);
- extended_sys_state_file->write(extended_sys_state_csv);
- battery_status_file->write(battery_status_csv);
- vibration_file->write(vibration_csv);
- enginestate_file->write(enginestate_csv);
- vfr_hud_file->write(vfr_hud_csv);
- aoa_ssa_file->write(aoa_ssa_csv);
- emb_atom_com_file->write(emb_atom_com_csv);
- turbinstate_file->write(turbinstate_csv);
- bmustate_file->write(bmustate_csv);
- ccmstate_file->write(ccmstate_csv);
- serial_control_file->write(serial_control_csv);
-
- autopilot_version_file->close();
- sys_status_file->close();
- heartbeat_file->close();
- ping_file->close();
- attitude_file->close();
- ins1_file->close();
- ins2_file->close();
- gps_raw_int_file->close();
- global_position_int_file->close();
- servo_output_raw_file->close();
- rc_channels_raw_file->close();
- nav_controller_output_file->close();
- airspeed_autocal_file->close();
- rpm_file->close();
- scaled_pressure_file->close();
- extended_sys_state_file->close();
- battery_status_file->close();
- vibration_file->close();
- enginestate_file->close();
- vfr_hud_file->close();
- aoa_ssa_file->close();
- emb_atom_com_file->close();
- turbinstate_file->close();
- bmustate_file->close();
- ccmstate_file->close();
- serial_control_file->close();
-
}
+void MavLinkNode::CloseCSV(void)
+{
+ if(autopilot_version_file)
+ {
+ autopilot_version_file->close();
+ }
+
+ if(sys_status_file)
+ {
+ sys_status_file->close();
+ }
+
+ if(heartbeat_file)
+ {
+ heartbeat_file->close();
+ }
+
+ if(ping_file)
+ {
+ ping_file->close();
+ }
+
+ if(attitude_file)
+ {
+ attitude_file->close();
+ }
+
+ if(ins1_file)
+ {
+ ins1_file->close();
+ }
+
+ if(ins2_file)
+ {
+ ins2_file->close();
+ }
+
+ if(gps_raw_int_file)
+ {
+ gps_raw_int_file->close();
+ }
+
+ if(global_position_int_file)
+ {
+ global_position_int_file->close();
+ }
+
+ if(servo_output_raw_file)
+ {
+ servo_output_raw_file->close();
+ }
+
+ if(rc_channels_raw_file)
+ {
+ rc_channels_raw_file->close();
+ }
+
+ if(nav_controller_output_file)
+ {
+ nav_controller_output_file->close();
+ }
+
+ if(airspeed_autocal_file)
+ {
+ airspeed_autocal_file->close();
+ }
+
+ if(rpm_file)
+ {
+ rpm_file->close();
+ }
+
+ if(scaled_pressure_file)
+ {
+ scaled_pressure_file->close();
+ }
+
+ if(extended_sys_state_file)
+ {
+ extended_sys_state_file->close();
+ }
+
+ if(battery_status_file)
+ {
+ battery_status_file->close();
+ }
+
+ if(vibration_file)
+ {
+ vibration_file->close();
+ }
+
+ if(enginestate_file)
+ {
+ enginestate_file->close();
+ }
+
+ if(vfr_hud_file)
+ {
+ vfr_hud_file->close();
+ }
+
+ if(aoa_ssa_file)
+ {
+ aoa_ssa_file->close();
+ }
+
+ if(emb_atom_com_file)
+ {
+ emb_atom_com_file->close();
+ }
+
+ if(turbinstate_file)
+ {
+ turbinstate_file->close();
+ }
+
+ if(bmustate_file)
+ {
+ bmustate_file->close();
+ }
+
+ if(ccmstate_file)
+ {
+ ccmstate_file->close();
+ }
+
+ if(serial_control_file)
+ {
+ serial_control_file->close();
+ }
+}
+
+
+bool MavLinkNode::setFileData(QFile *file,const QByteArray &data)
+{
+ if(data.size() == 0)
+ {
+ return false;
+ }
+
+ if((file)&&(file->isOpen()))
+ {
+ QTextStream out(file);
+ out << data;
+ return file->flush();
+ }
+ return false;
+}
+
+
+
//这里一直在解码,一直检查双缓冲里面是否有数据,有就解码,没有就休息
void MavLinkNode::process()//线程函数
{
QThread::msleep(5000);//5s后再发送
- autopilot_version_csv.append("capabilities,flight_sw_version,middleware_sw_version,os_sw_version,board_version,uid,vendor_id,product_id,flight_custom_version[8],middleware_custom_version[8],os_custom_version[8],uid2[18]\n");
- sys_status_csv.append("present,enabled,health,load,voltage,current,remaining,drop_rate_comm,errors_comm,errors_count1,errors_count2,errors_count3,errors_count4\n");
- heartbeat_csv.append("type,autopilot,base_mode,custom_mode,system_status,mavlink\n");
- ping_csv;
- attitude_csv.append("time_boot_ms,roll,pitch,yaw,rollspeed,pitchspeed,yawspeed\n");
- ins1_csv.append("time_boot_ms,pitch,roll,yaw,lon,lat,alt,v_north,v_up,v_east,gx,gy,gz,ax,ay,az,time,sys,com,gps,bit,seq,eph,epv,svn\n");
- ins2_csv.append("time_boot_ms,pitch,roll,yaw,lon,lat,alt,v_north,v_up,v_east,gx,gy,gz,ax,ay,az,time,sys,com,gps,bit,seq,eph,epv,svn\n");
- gps_raw_int_csv.append("time_usec,lat,lon,alt,eph,epv,vel,cog,fix_type,satellites_visible,alt_ellipsoid,h_acc,v_acc,vel_acc,hdg_acc,yaw\n");
- global_position_int_csv.append("time_boot_ms,lat,lon,alt,relative_alt,vx,vy,vz,hdg\n");
- servo_output_raw_csv[0].append("time_usec,port,ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10,ch11,ch12,ch13,ch14,ch15,ch16\n");
- rc_channels_raw_csv;
- nav_controller_output_csv.append("nav_roll,nav_pitch,nav_bearing,target_bearing,wp_dist,alt_err,as_err,xtrack_err\n");
- airspeed_autocal_csv.append("vx,vy,vz,diff_pressure,EAS2TAS,ratio,state_x,state_y,state_z,Pax,Pby,Pcz\n");
- rpm_csv.append("rpm1,rpm2,rpm3,rpm4,rpm5\n");
- scaled_pressure_csv.append("time_boot_ms,press_abs,press_diff,temperature,temperature_diff\n");
- extended_sys_state_csv;
- battery_status_csv;
- vibration_csv;
- enginestate_csv.append("time_boot_ms,ChokeFlag,Ignition2Flag,AmbientTemperatur,AirPressure,ActualFuelPressure,FuelPumpDutyCycle,ActualJet1DutyCycle,ActualRPM,CHTemperature1,counts\n");
- vfr_hud_csv.append("airspeed,groundspeed,alt,climb,heading,throttle\n");
- aoa_ssa_csv;
- emb_atom_com_csv.append("time_boot_ms,airspeed,beta,alpha,ps,qbar,seq,mach\n");
- turbinstate_csv.append("time_boot_ms,RPM_mea,T5,Kfuel,RPM_des,RPM_des_ap,RPM_bak,IOState,SysState,Fault,stage_ap,temp_ap,tas_ap,asl_ap,KabMain,KabFire,KDj,T1t,P1t,P3t,P5t,DJS,Vcc,Tbak,rev,CFuelMode,Cmd\n");
- bmustate_csv.append("time_boot_ms,BAT1_group_voltage_mv,BAT1_group_current_dA,BAT1_remain_perc,BAT1_low_temp_degC,AT1_hi_temp_degC,BAT1_voltages_mv[7],BAT1_hi_voltage_mv,BAT1_low_voltage_mv,BAT2_group_voltage_mv,BAT2_group_current_dA,BAT2_remain_perc,BAT2_low_temp_degC,BAT2_hi_temp_degC,BAT2_voltages_mv[14],BAT2_hi_voltage_mv,BAT2_low_voltage_mv,BAT1_STA1,BAT1_STA2,BAT2_STA1,BAT2_STA2,p500w_enabled\n");
- ccmstate_csv.append("time_boot_ms,fuel_level,temp[0],temp[1],temp[2],temp[3],volts[0],volts[1],volts[2],volts[3],echo_seq\n");
- serial_control_csv.append("baudrate,timeout,device,flags,count,data\n");
+ setFileData(autopilot_version_file,QByteArray("capabilities,flight_sw_version,middleware_sw_version,os_sw_version,board_version,uid,vendor_id,product_id,flight_custom_version[8],middleware_custom_version[8],os_custom_version[8],uid2[18]\n"));
+ setFileData(sys_status_file, QByteArray("present,enabled,health,load,voltage,current,remaining,drop_rate_comm,errors_comm,errors_count1,errors_count2,errors_count3,errors_count4\n"));
+ setFileData(heartbeat_file, QByteArray("type,autopilot,base_mode,custom_mode,system_status,mavlink\n"));
+ setFileData(ping_file, QByteArray("time_usec,seq,target_system,target_component\n"));
+ setFileData(attitude_file, QByteArray("time_boot_ms,roll,pitch,yaw,rollspeed,pitchspeed,yawspeed\n"));
+ setFileData(ins1_file, QByteArray("time_boot_ms,pitch,roll,yaw,lon,lat,alt,v_north,v_up,v_east,gx,gy,gz,ax,ay,az,time,sys,com,gps,bit,seq,eph,epv,svn\n"));
+ setFileData(ins2_file, QByteArray("time_boot_ms,pitch,roll,yaw,lon,lat,alt,v_north,v_up,v_east,gx,gy,gz,ax,ay,az,time,sys,com,gps,bit,seq,eph,epv,svn\n"));
+ setFileData(gps_raw_int_file, QByteArray("time_usec,lat,lon,alt,eph,epv,vel,cog,fix_type,satellites_visible,alt_ellipsoid,h_acc,v_acc,vel_acc,hdg_acc,yaw\n"));
+ setFileData(global_position_int_file,QByteArray("time_boot_ms,lat,lon,alt,relative_alt,vx,vy,vz,hdg\n"));
+ setFileData(servo_output_raw_file, QByteArray("time_usec,port,ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10,ch11,ch12,ch13,ch14,ch15,ch16\n"));
+ setFileData(rc_channels_raw_file, QByteArray("time_boot_ms,port,rssi,chan1_raw,chan2_raw,chan3_raw,chan4_raw,chan5_raw,chan6_raw,chan7_raw,chan8_raw,chan9_raw,chan10_raw,chan11_raw,chan12_raw,chan13_raw,chan14_raw,chan15_raw,chan16_raw\n"));
+ setFileData(nav_controller_output_file,QByteArray("nav_roll,nav_pitch,nav_bearing,target_bearing,wp_dist,alt_err,as_err,xtrack_err\n"));
+ setFileData(airspeed_autocal_file, QByteArray("vx,vy,vz,diff_pressure,EAS2TAS,ratio,state_x,state_y,state_z,Pax,Pby,Pcz\n"));
+ setFileData(rpm_file, QByteArray("rpm1,rpm2,rpm3,rpm4,rpm5\n"));
+ setFileData(scaled_pressure_file, QByteArray("time_boot_ms,press_abs,press_diff,temperature,temperature_diff\n"));
+ setFileData(extended_sys_state_file,QByteArray("vtol_state,landed_state\n"));
+ setFileData(battery_status_file, QByteArray("current_consumed,energy_consumed,temperature,voltages[0],voltages[1],voltages[2],voltages[3],voltages[4],voltages[5],voltages[6],voltages[7],voltages[8],voltages[9],current_battery,id,battery_function,type,battery_remaining,time_remaining,charge_state,voltages_ext[0],voltages_ext[1],voltages_ext[2],voltages_ext[3]\n"));
+ setFileData(vibration_file, QByteArray(""));
+ setFileData(enginestate_file, QByteArray("time_boot_ms,ChokeFlag,Ignition2Flag,AmbientTemperatur,AirPressure,ActualFuelPressure,FuelPumpDutyCycle,ActualJet1DutyCycle,ActualRPM,CHTemperature1,counts\n"));
+ setFileData(vfr_hud_file, QByteArray("airspeed,groundspeed,alt,climb,heading,throttle\n"));
+ setFileData(aoa_ssa_file, QByteArray(""));
+ setFileData(emb_atom_com_file, QByteArray("time_boot_ms,airspeed,beta,alpha,ps,qbar,seq,mach\n"));
+ setFileData(turbinstate_file, QByteArray("time_boot_ms,RPM_mea,T5,Kfuel,RPM_des,RPM_des_ap,RPM_bak,IOState,SysState,Fault,stage_ap,temp_ap,tas_ap,asl_ap,KabMain,KabFire,KDj,T1t,P1t,P3t,P5t,DJS,Vcc,Tbak,rev,CFuelMode,Cmd\n"));
+ setFileData(bmustate_file, QByteArray("time_boot_ms,BAT1_group_voltage_mv,BAT1_group_current_dA,BAT1_remain_perc,BAT1_low_temp_degC,AT1_hi_temp_degC,BAT1_voltages_mv[7],BAT1_hi_voltage_mv,BAT1_low_voltage_mv,BAT2_group_voltage_mv,BAT2_group_current_dA,BAT2_remain_perc,BAT2_low_temp_degC,BAT2_hi_temp_degC,BAT2_voltages_mv[14],BAT2_hi_voltage_mv,BAT2_low_voltage_mv,BAT1_STA1,BAT1_STA2,BAT2_STA1,BAT2_STA2,p500w_enabled\n"));
+ setFileData(ccmstate_file, QByteArray("time_boot_ms,fuel_level,temp[0],temp[1],temp[2],temp[3],volts[0],volts[1],volts[2],volts[3],echo_seq\n"));
+ setFileData(serial_control_file, QByteArray("baudrate,timeout,device,flags,count,data\n"));
- qDebug() << "mavlinknode" << QThread::currentThreadId();
+
+ qDebug() << "mavlinknode" << QThread::currentThreadId();
uint8_t count = 0;
QByteArray datagram = nullptr;
@@ -588,6 +690,36 @@ void MavLinkNode::LogTimerOut(void)
*/
}
+
+
+bool MavLinkNode::setLogData(mavlink_message_t msg)
+{
+
+ uint8_t buff[MAVLINK_MAX_PACKET_LEN+sizeof(quint64)];
+ quint64 currentTimestamp = ((quint64)QDateTime::currentMSecsSinceEpoch()) * 1000;
+ qToBigEndian(currentTimestamp, buff);
+ uint16_t len = mavlink_msg_to_send_buffer(buff+sizeof(quint64), &msg);
+ if (mavLogFile)
+ {
+ auto size = Packer2_pack(&packer,1,buff,len);
+
+
+ QByteArray data;
+
+ data.clear();
+ data.append((const char *)packer.buff,size);
+
+ QDataStream stream(mavLogFile);
+
+ stream << data;
+
+ return mavLogFile->flush();
+ }
+ return false;
+}
+
+
+
void MavLinkNode::timer_1s_Out(void)
{
static qint64 last = QDateTime::currentMSecsSinceEpoch();
@@ -651,16 +783,17 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
last_seq = msg.seq;
+ setLogData(msg);
+
+
+ /*
uint8_t buff[MAVLINK_MAX_PACKET_LEN+sizeof(quint64)];
quint64 currentTimestamp = ((quint64)QDateTime::currentMSecsSinceEpoch()) * 1000;
qToBigEndian(currentTimestamp, buff);
uint16_t len = mavlink_msg_to_send_buffer(buff+sizeof(quint64), &msg);
if (mavLogFile)
{
- /*
- mavLogFile->write((const char *)buff, len+sizeof(quint64));
- mavLogFile->flush();
- */
+
QByteArray data;
data.clear();
@@ -673,6 +806,7 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
mavLogFile->flush();
}
+ */
count++;
@@ -812,24 +946,48 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
switch (msg.msgid) {
case MAVLINK_MSG_ID_AUTOPILOT_VERSION: {
mavlink_msg_autopilot_version_decode(&msg,&vehicle.autopilot_version);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.autopilot_version.capabilities)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.flight_sw_version)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.middleware_sw_version)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.os_sw_version)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.board_version)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.uid)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.vendor_id)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.product_id)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.flight_custom_version[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.middleware_custom_version[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.os_custom_version[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.autopilot_version.uid2[0])); csvdata.append('\n');
+
+ setFileData(autopilot_version_file,csvdata);
+
+
}break;
case MAVLINK_MSG_ID_SYS_STATUS: {
mavlink_msg_sys_status_decode(&msg,&vehicle.sys_status);
+ QByteArray csvdata;
+ csvdata.clear();
- sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_present)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_enabled)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.onboard_control_sensors_health)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.load)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.voltage_battery)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.current_battery)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.battery_remaining)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.drop_rate_comm)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.errors_comm)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.errors_count1)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.errors_count2)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.errors_count3)); sys_status_csv.append(',');
- sys_status_csv.append(QString::number(vehicle.sys_status.errors_count4)); sys_status_csv.append('\n');
+ csvdata.append(QString::number(vehicle.sys_status.onboard_control_sensors_present)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.onboard_control_sensors_enabled)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.onboard_control_sensors_health)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.load)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.voltage_battery)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.current_battery)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.battery_remaining)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.drop_rate_comm)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.errors_comm)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.errors_count1)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.errors_count2)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.errors_count3)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.sys_status.errors_count4)); csvdata.append('\n');
+
+ setFileData(sys_status_file,csvdata);
}break;
@@ -843,61 +1001,85 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
Status->m_heartbeat.system_status = vehicle.heartbeat.system_status;
Status->m_heartbeat.type = vehicle.heartbeat.type;
+ QByteArray csvdata;
+ csvdata.clear();
- heartbeat_csv.append(QString::number(vehicle.heartbeat.type)); heartbeat_csv.append(',');
- heartbeat_csv.append(QString::number(vehicle.heartbeat.autopilot)); heartbeat_csv.append(',');
- heartbeat_csv.append(QString::number(vehicle.heartbeat.base_mode)); heartbeat_csv.append(',');
- heartbeat_csv.append(QString::number(vehicle.heartbeat.custom_mode)); heartbeat_csv.append(',');
- heartbeat_csv.append(QString::number(vehicle.heartbeat.system_status)); heartbeat_csv.append(',');
- heartbeat_csv.append(QString::number(vehicle.heartbeat.mavlink_version)); heartbeat_csv.append('\n');
+ csvdata.append(QString::number(vehicle.heartbeat.type)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.heartbeat.autopilot)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.heartbeat.base_mode)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.heartbeat.custom_mode)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.heartbeat.system_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.heartbeat.mavlink_version)); csvdata.append('\n');
+
+ setFileData(heartbeat_file,csvdata);
emit beep(msg.sysid);
}break;
case MAVLINK_MSG_ID_PING: {
mavlink_msg_ping_decode(&msg,&vehicle.ping);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.ping.time_usec)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ping.seq)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ping.target_system)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ping.target_component)); csvdata.append(',');
+
+
+ setFileData(ping_file,csvdata);
}break;
case MAVLINK_MSG_ID_ATTITUDE: {
mavlink_msg_attitude_decode(&msg,&vehicle.attitude);
- attitude_csv.append(QString::number(vehicle.attitude.time_boot_ms)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.roll)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.pitch)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.yaw)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.rollspeed)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.pitchspeed)); attitude_csv.append(',');
- attitude_csv.append(QString::number(vehicle.attitude.yawspeed)); attitude_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.attitude.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.roll)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.pitch)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.yaw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.rollspeed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.pitchspeed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.attitude.yawspeed)); csvdata.append('\n');
+
+ setFileData(attitude_file,csvdata);
}break;
case MAVLINK_MSG_ID_INS1: {
mavlink_msg_ins1_decode(&msg,&vehicle.ins1);
- ins1_csv.append(QString::number(vehicle.ins1.time_boot_ms)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.pitch)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.roll)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.yaw)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.lon,'f',8)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.lat,'f',8)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.alt)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.v_north)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.v_up)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.v_east)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.gx)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.gy)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.gz)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.ax)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.ay)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.az)); ins1_csv.append(',');
- ins1_csv.append(QString::number((uint64_t)vehicle.ins1.time,'f',0)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.sys_status)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.com_status)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.gps_status)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.BIT)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.seq)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.eph)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.epv)); ins1_csv.append(',');
- ins1_csv.append(QString::number(vehicle.ins1.satellites_visible)); ins1_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.ins1.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.pitch)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.roll)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.yaw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.lon,'f',8)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.lat,'f',8)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.v_north)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.v_up)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.v_east)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.gx)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.gy)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.gz)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.ax)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.ay)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.az)); csvdata.append(',');
+ csvdata.append(QString::number((uint64_t)vehicle.ins1.time,'f',0)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.sys_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.com_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.gps_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.BIT)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.seq)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.eph)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.epv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins1.satellites_visible)); csvdata.append('\n');
+
+ setFileData(ins1_file,csvdata);
emit signal_ins1(vehicle.ins1);
@@ -905,31 +1087,36 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
case MAVLINK_MSG_ID_INS2: {
mavlink_msg_ins2_decode(&msg,&vehicle.ins2);
- ins2_csv.append(QString::number(vehicle.ins2.time_boot_ms)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.pitch)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.roll)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.yaw)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.lon,'f',8)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.lat,'f',8)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.alt)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.v_north)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.v_up)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.v_east)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.gx)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.gy)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.gz)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.ax)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.ay)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.az)); ins2_csv.append(',');
- ins2_csv.append(QString::number((uint64_t)vehicle.ins2.time,'f',0)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.sys_status)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.com_status)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.gps_status)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.BIT)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.seq)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.eph)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.epv)); ins2_csv.append(',');
- ins2_csv.append(QString::number(vehicle.ins2.satellites_visible)); ins2_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.ins2.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.pitch)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.roll)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.yaw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.lon,'f',8)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.lat,'f',8)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.v_north)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.v_up)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.v_east)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.gx)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.gy)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.gz)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.ax)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.ay)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.az)); csvdata.append(',');
+ csvdata.append(QString::number((uint64_t)vehicle.ins2.time,'f',0)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.sys_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.com_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.gps_status)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.BIT)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.seq)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.eph)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.epv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ins2.satellites_visible)); csvdata.append('\n');
+
+ setFileData(ins2_file,csvdata);
emit signal_ins2(vehicle.ins2);
@@ -937,50 +1124,74 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
case MAVLINK_MSG_ID_GPS_RAW_INT: {
mavlink_msg_gps_raw_int_decode(&msg,&vehicle.gps_raw_int);
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.time_usec));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.lat));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.lon));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.alt));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.eph));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.epv));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.vel));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.cog));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.fix_type));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.satellites_visible));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.alt_ellipsoid));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.time_usec));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.h_acc));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.v_acc));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.vel_acc));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.hdg_acc));gps_raw_int_csv.append(',');
- gps_raw_int_csv.append(QString::number(vehicle.gps_raw_int.yaw));gps_raw_int_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.gps_raw_int.time_usec)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.lat)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.lon)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.eph)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.epv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.vel)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.cog)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.fix_type)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.satellites_visible)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.alt_ellipsoid)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.time_usec)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.h_acc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.v_acc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.vel_acc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.hdg_acc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.gps_raw_int.yaw)); csvdata.append('\n');
+ setFileData(gps_raw_int_file,csvdata);
}break;
case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: {
mavlink_msg_global_position_int_decode(&msg,&vehicle.global_position_int);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.global_position_int.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.lat)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.lon)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.relative_alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.vx)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.vy)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.vz)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.global_position_int.hdg)); csvdata.append('\n');
+
+ setFileData(global_position_int_file,csvdata);
+
}break;
case MAVLINK_MSG_ID_SERVO_OUTPUT_RAW: {
mavlink_msg_servo_output_raw_decode(&msg,&vehicle.servo_output_raw);
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.time_usec)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.port)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo1_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo2_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo3_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo4_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo5_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo6_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo7_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo8_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo9_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo10_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo11_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo12_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo13_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo14_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo15_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append(',');
- servo_output_raw_csv[vehicle.servo_output_raw.port].append(QString::number(vehicle.servo_output_raw.servo16_raw)); servo_output_raw_csv[vehicle.servo_output_raw.port].append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.servo_output_raw.time_usec)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.port)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo1_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo2_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo3_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo4_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo5_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo6_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo7_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo8_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo9_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo10_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo11_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo12_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo13_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo14_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo15_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.servo_output_raw.servo16_raw)); csvdata.append('\n');
+
+ setFileData(servo_output_raw_file,csvdata);
emit signal_servo_output_raw(vehicle.servo_output_raw);
@@ -989,175 +1200,290 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
}break;
case MAVLINK_MSG_ID_RC_CHANNELS_RAW: {
mavlink_msg_rc_channels_raw_decode(&msg,&vehicle.rc_channels_raw);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.rc_channels_raw.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.port)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.rssi)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan1_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan2_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan3_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan4_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan5_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan6_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan7_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan8_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan9_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan10_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan11_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan12_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan13_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan14_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan15_raw)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rc_channels_raw.chan16_raw)); csvdata.append('\n');
+
+
+ setFileData(rc_channels_raw_file,csvdata);
}break;
case MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT: {
mavlink_msg_nav_controller_output_decode(&msg,&vehicle.nav_controller_output);
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_roll)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_pitch)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.nav_bearing)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.target_bearing)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.wp_dist)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.alt_error)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.aspd_error)); nav_controller_output_csv.append(',');
- nav_controller_output_csv.append(QString::number(vehicle.nav_controller_output.xtrack_error)); nav_controller_output_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.nav_controller_output.nav_roll)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.nav_pitch)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.nav_bearing)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.target_bearing)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.wp_dist)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.alt_error)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.aspd_error)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.nav_controller_output.xtrack_error)); csvdata.append('\n');
+ setFileData(nav_controller_output_file,csvdata);
}break;
case MAVLINK_MSG_ID_AIRSPEED_AUTOCAL: {
mavlink_msg_airspeed_autocal_decode(&msg,&vehicle.airspeed_autocal);
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.airspeed_autocal.vx)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.vy)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.vz)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.diff_pressure)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.EAS2TAS)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.ratio)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.state_x)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.state_y)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.state_z)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.Pax)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.Pby)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.airspeed_autocal.Pcz)); csvdata.append(',');
+
+ setFileData(airspeed_autocal_file,csvdata);
}break;
case MAVLINK_MSG_ID_RPM: {
mavlink_msg_rpm_decode(&msg,&vehicle.rpm);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.rpm.rpm1)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rpm.rpm2)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rpm.rpm3)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rpm.rpm4)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.rpm.rpm5)); csvdata.append('\n');
+
+ setFileData(rpm_file,csvdata);
}break;
case MAVLINK_MSG_ID_SCALED_PRESSURE: {
mavlink_msg_scaled_pressure_decode(&msg,&vehicle.scaled_pressure);
- scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.time_boot_ms)); scaled_pressure_csv.append(',');
- scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.press_abs)); scaled_pressure_csv.append(',');
- scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.press_diff)); scaled_pressure_csv.append(',');
- scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.temperature)); scaled_pressure_csv.append(',');
- scaled_pressure_csv.append(QString::number(vehicle.scaled_pressure.temperature_press_diff)); scaled_pressure_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.scaled_pressure.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.scaled_pressure.press_abs)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.scaled_pressure.press_diff)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.scaled_pressure.temperature)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.scaled_pressure.temperature_press_diff)); csvdata.append('\n');
+ setFileData(scaled_pressure_file,csvdata);
}break;
case MAVLINK_MSG_ID_EXTENDED_SYS_STATE: {
mavlink_msg_extended_sys_state_decode(&msg,&vehicle.extended_sys_state);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+ csvdata.append(QString::number(vehicle.extended_sys_state.vtol_state)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.extended_sys_state.landed_state)); csvdata.append('\n');
+
+ setFileData(extended_sys_state_file,csvdata);
}break;
case MAVLINK_MSG_ID_BATTERY_STATUS: {
mavlink_msg_battery_status_decode(&msg,&vehicle.battery_status);
- /*
- battery_status_csv.append(QString::number(vehicle.battery_status.time_boot_ms)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.Airspeed)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.beta)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.alpha)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.ps)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.qbar)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.seq)); battery_status_csv.append(',');
- battery_status_csv.append(QString::number(vehicle.battery_status.mach)); battery_status_csv.append('\n');
- */
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.battery_status.current_consumed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.energy_consumed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.temperature)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[1])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[2])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[3])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[4])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[5])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[6])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[7])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[8])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages[9])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.current_battery)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.id)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.battery_function)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.type)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.battery_remaining)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.time_remaining)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.charge_state)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages_ext[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages_ext[1])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages_ext[2])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.battery_status.voltages_ext[3])); csvdata.append('\n');
+
+ setFileData(battery_status_file,csvdata);
}break;
case MAVLINK_MSG_ID_VIBRATION: {
mavlink_msg_vibration_decode(&msg,&vehicle.vibration);
+
+ QByteArray csvdata;
+ csvdata.clear();
+
+
+
+ setFileData(vibration_file,csvdata);
}break;
case MAVLINK_MSG_ID_EngineState: {
mavlink_msg_enginestate_decode(&msg,&vehicle.enginestate);
- enginestate_csv.append(QString::number(vehicle.enginestate.time_boot_ms)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.ChokeFlag)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.Ignition2Flag)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.AmbientTemperatur)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.AirPressure)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.ActualFuelPressure)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.FuelPumpDutyCycle)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.ActualJet1DutyCycle)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.ActualRPM)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.CHTemperature1)); enginestate_csv.append(',');
- enginestate_csv.append(QString::number(vehicle.enginestate.counts)); enginestate_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.enginestate.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.ChokeFlag)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.Ignition2Flag)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.AmbientTemperatur)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.AirPressure)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.ActualFuelPressure)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.FuelPumpDutyCycle)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.ActualJet1DutyCycle)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.ActualRPM)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.CHTemperature1)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.enginestate.counts)); csvdata.append('\n');
+ setFileData(enginestate_file,csvdata);
}break;
case MAVLINK_MSG_ID_VFR_HUD: {
mavlink_msg_vfr_hud_decode(&msg,&vehicle.vfr_hud);
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.airspeed)); vfr_hud_csv.append(',');
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.groundspeed)); vfr_hud_csv.append(',');
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.alt)); vfr_hud_csv.append(',');
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.climb)); vfr_hud_csv.append(',');
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.heading)); vfr_hud_csv.append(',');
- vfr_hud_csv.append(QString::number(vehicle.vfr_hud.throttle)); vfr_hud_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.vfr_hud.airspeed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.vfr_hud.groundspeed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.vfr_hud.alt)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.vfr_hud.climb)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.vfr_hud.heading)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.vfr_hud.throttle)); csvdata.append('\n');
+
+ setFileData(vfr_hud_file,csvdata);
}break;
case MAVLINK_MSG_ID_EMB_ATMO_COM: {
mavlink_msg_emb_atmo_com_decode(&msg,&vehicle.emb_atom_com);
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.time_boot_ms)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.Airspeed)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.beta)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.alpha)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.ps)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.qbar)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.seq)); emb_atom_com_csv.append(',');
- emb_atom_com_csv.append(QString::number(vehicle.emb_atom_com.mach)); emb_atom_com_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.emb_atom_com.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.Airspeed)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.beta)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.alpha)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.ps)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.qbar)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.seq)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.emb_atom_com.mach)); csvdata.append('\n');
+
+ setFileData(emb_atom_com_file,csvdata);
}break;
case MAVLINK_MSG_ID_TurbineState: {
mavlink_msg_turbinestate_decode(&msg,&vehicle.turbinstate);
- turbinstate_csv.append(QString::number(vehicle.turbinstate.time_boot_ms)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.RPM_mea)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.T5)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.Kfuel)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.RPM_des)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.RPM_des_ap)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.RPM_bak)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.IOState)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.SysState)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.Fault)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.stage_ap)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.temp_ap)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.tas_ap)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.asl_ap)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.KabMain)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.KabFire)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.KDj)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.T1t)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.P1t)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.P3t)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.P5t)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.DJS)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.Vcc)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.Tbak)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.rev)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.CFuelMode)); turbinstate_csv.append(',');
- turbinstate_csv.append(QString::number(vehicle.turbinstate.Cmd)); turbinstate_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.turbinstate.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.RPM_mea)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.T5)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.Kfuel)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.RPM_des)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.RPM_des_ap)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.RPM_bak)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.IOState)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.SysState)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.Fault)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.stage_ap)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.temp_ap)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.tas_ap)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.asl_ap)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.KabMain)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.KabFire)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.KDj)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.T1t)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.P1t)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.P3t)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.P5t)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.DJS)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.Vcc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.Tbak)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.rev)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.CFuelMode)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.turbinstate.Cmd)); csvdata.append('\n');
+
+ setFileData(turbinstate_file,csvdata);
}break;
case MAVLINK_MSG_ID_BMUState: {
mavlink_msg_bmustate_decode(&msg,&vehicle.bmustate);
- bmustate_csv.append(QString::number(vehicle.bmustate.time_boot_ms)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_group_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_group_current_dA)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_remain_perc)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_low_temp_degC)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_voltages_mv[0])); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_hi_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_low_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_group_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_group_current_dA)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_remain_perc)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_low_temp_degC)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_hi_temp_degC)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_voltages_mv[0])); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_hi_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_low_voltage_mv)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_STA1)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT1_STA2)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_STA1)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.BAT2_STA2)); bmustate_csv.append(',');
- bmustate_csv.append(QString::number(vehicle.bmustate.p500w_enabled)); bmustate_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.bmustate.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_group_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_group_current_dA)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_remain_perc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_low_temp_degC)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_voltages_mv[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_hi_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_low_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_group_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_group_current_dA)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_remain_perc)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_low_temp_degC)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_hi_temp_degC)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_voltages_mv[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_hi_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_low_voltage_mv)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_STA1)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT1_STA2)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_STA1)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.BAT2_STA2)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.bmustate.p500w_enabled)); csvdata.append('\n');
+
+ setFileData(bmustate_file,csvdata);
}break;
case MAVLINK_MSG_ID_CCMState: {
mavlink_msg_ccmstate_decode(&msg,&vehicle.ccmstate);
- ccmstate_csv.append(QString::number(vehicle.ccmstate.time_boot_ms)); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.fuel_level)); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.temp[0])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.temp[1])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.temp[2])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.temp[3])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[0])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[1])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[2])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.volts[3])); ccmstate_csv.append(',');
- ccmstate_csv.append(QString::number(vehicle.ccmstate.echo_seq)); ccmstate_csv.append('\n');
+ QByteArray csvdata;
+ csvdata.clear();
+ csvdata.append(QString::number(vehicle.ccmstate.time_boot_ms)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.fuel_level)); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.temp[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.temp[1])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.temp[2])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.temp[3])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.volts[0])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.volts[1])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.volts[2])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.volts[3])); csvdata.append(',');
+ csvdata.append(QString::number(vehicle.ccmstate.echo_seq)); csvdata.append('\n');
+ setFileData(ccmstate_file,csvdata);
}break;
}
@@ -1166,15 +1492,8 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
//vehicleList.insert(msg.sysid,vehicle);//直接覆盖
-
-
//emit signal_vehicle(vehicle);
-
-
-
-
-
static qint64 frq_time = 0;
if((QDateTime::currentMSecsSinceEpoch() - frq_time) >= 200)
{
diff --git a/MavLinkNode/mavlinknode.h b/MavLinkNode/mavlinknode.h
index 512e2a0..58434e9 100644
--- a/MavLinkNode/mavlinknode.h
+++ b/MavLinkNode/mavlinknode.h
@@ -21,6 +21,9 @@
#include "ThreadTemplet.h"
+#include "ParsePack.h"
+
+
#ifdef QtMavlinkNode
#include
class MAVLINKNODESHARED_EXPORT MavLinkNode : public ThreadTemplet {
@@ -109,36 +112,6 @@ public:
QByteArray rtkrawdata;
- QByteArray csvData;
-
- QByteArray autopilot_version_csv;
- QByteArray sys_status_csv;
- QByteArray heartbeat_csv;
- QByteArray ping_csv;
- QByteArray attitude_csv;
- QByteArray ins1_csv;
- QByteArray ins2_csv;
- QByteArray gps_raw_int_csv;
- QByteArray global_position_int_csv;
- QByteArray servo_output_raw_csv[10];
- QByteArray rc_channels_raw_csv;
- QByteArray nav_controller_output_csv;
- QByteArray airspeed_autocal_csv;
- QByteArray rpm_csv;
- QByteArray scaled_pressure_csv;
- QByteArray extended_sys_state_csv;
- QByteArray battery_status_csv;
- QByteArray vibration_csv;
- QByteArray enginestate_csv;
- QByteArray vfr_hud_csv;
- QByteArray aoa_ssa_csv;
- QByteArray emb_atom_com_csv;
- QByteArray turbinstate_csv;
- QByteArray bmustate_csv;
- QByteArray ccmstate_csv;
- QByteArray serial_control_csv;
-
-
QFile * autopilot_version_file = nullptr;
QFile * sys_status_file = nullptr;
QFile * heartbeat_file = nullptr;
@@ -222,6 +195,10 @@ signals:
public slots:
//线程对外接口
void CreateCSV(void);
+ void CloseCSV(void);
+
+ bool setFileData(QFile *file,const QByteArray &data);
+
//缓存对外接口
void readPendingDatagramsReplay(void);
@@ -255,6 +232,7 @@ private slots:
//check for new vehicle
void CheckVehicle(int sysid, int compid);
+ bool setLogData(mavlink_message_t msg);
protected:
@@ -295,6 +273,9 @@ protected:
QTimer *timer_1s = nullptr;
+ Parser2_t parser;
+ Packer2_t packer;
+
mutable QReadWriteLock RWlock;
};
diff --git a/MavLinkNode/replay.cpp b/MavLinkNode/replay.cpp
index 8da2b1d..8ea0876 100644
--- a/MavLinkNode/replay.cpp
+++ b/MavLinkNode/replay.cpp
@@ -6,6 +6,10 @@ Replay::Replay(QObject *parent) : ThreadTemplet(parent)
setRunFrq(5);//100
logFile.clear();
+
+ Parser2_init(&parser);
+ Packer2_init(&packer);
+
}
Replay::~Replay()
@@ -31,85 +35,95 @@ void Replay::process()//线程函数
{
if(position <= file->size())
{
- QByteArray raw;
+ QByteArray data;
QByteArray time;
- file->seek(position);
+ //file->seek(position);
- raw = file->read(MAVLINK_MAX_PACKET_LEN + sizeof(quint64));
+ data = file->readAll();
+ //data = file->read(MAVLINK_MAX_PACKET_LEN + sizeof(quint64));
- if(raw.indexOf(0xFD) >= 8)
+ for (QByteArray::const_iterator i = data.cbegin(); i != data.cend(); ++i)
{
- time = raw.mid(raw.indexOf(0xFD) - 8,8);
- }
- else
- {
- position -= 8 - raw.indexOf(0xFD);
-
- file->seek(position);
-
- raw = file->read(MAVLINK_MAX_PACKET_LEN + sizeof(quint64));
-
- time = raw.mid(raw.indexOf(0xFD) - 8,8);
- }
-
- union {uint8_t B[8];uint64_t DW;}src;
-
- src.B[0] = time.data()[7];
- src.B[1] = time.data()[6];
- src.B[2] = time.data()[5];
- src.B[3] = time.data()[4];
- src.B[4] = time.data()[3];
- src.B[5] = time.data()[2];
- src.B[6] = time.data()[1];
- src.B[7] = time.data()[0];
-
- currentTimestamp = src.DW;
-
- if(lastTimestamp == 0)
- {
- lastTimestamp = currentTimestamp - 50;
- }
-
- if(((currentTimestamp - lastTimestamp) >0)&&((currentTimestamp - lastTimestamp) < 5000000))
- {
- timeStamp = currentTimestamp - lastTimestamp;
- }
-
- if((currentTimestamp - lastTimestamp) >0)
- {
-
- if((((double)timeStamp)/ multiple) > 50)
- {
- QThread::usleep(uint64_t(timeStamp / multiple));
- }
- else
- {
- QThread::usleep(1000);
- //qDebug() << "1000 us";
- }
-
- if(timeStamp < 50)
+ if(0x01 == Parser2_char(&parser,*i))
{
- timeStamp = 50;
+ QByteArray raw;
+ raw.setRawData((const char*)parser.buff,parser.len);
+
+ if(raw.indexOf(0xFD) >= 8)
+ {
+ time = raw.mid(raw.indexOf(0xFD) - 8,8);
+ }
+ else
+ {
+ position -= 8 - raw.indexOf(0xFD);
+
+ file->seek(position);
+
+ raw = file->read(MAVLINK_MAX_PACKET_LEN + sizeof(quint64));
+
+ time = raw.mid(raw.indexOf(0xFD) - 8,8);
+ }
+
+ union {uint8_t B[8];uint64_t DW;}src;
+
+ src.B[0] = time.data()[7];
+ src.B[1] = time.data()[6];
+ src.B[2] = time.data()[5];
+ src.B[3] = time.data()[4];
+ src.B[4] = time.data()[3];
+ src.B[5] = time.data()[2];
+ src.B[6] = time.data()[1];
+ src.B[7] = time.data()[0];
+
+ currentTimestamp = src.DW;
+
+ if(lastTimestamp == 0)
+ {
+ lastTimestamp = currentTimestamp - 50;
+ }
+
+ if(((currentTimestamp - lastTimestamp) >0)&&((currentTimestamp - lastTimestamp) < 5000000))
+ {
+ timeStamp = currentTimestamp - lastTimestamp;
+ }
+
+ if((currentTimestamp - lastTimestamp) >0)
+ {
+
+ if((((double)timeStamp)/ multiple) > 50)
+ {
+ QThread::usleep(uint64_t(timeStamp / multiple));
+ }
+ else
+ {
+ QThread::usleep(1000);
+ }
+
+ if(timeStamp < 50)
+ {
+ timeStamp = 50;
+ }
+ }
+
+
+ position += (uint8_t)raw.at(raw.indexOf(0xFD)+1) + 20;
+
+ buff.clear();
+ buff = raw.mid(raw.indexOf(0xFD),(uint8_t)raw.at(raw.indexOf(0xFD) +1) + 12);
+
+ //读取一帧数据
+ //将百分比增加,或者位置增加
+ percentage = (float)position / file->size();
+ emit currentPercentage(percentage);
+ emit readReady();
+
+ lastTimestamp = currentTimestamp;
+
+
+ break;
}
}
-
-
- position += (uint8_t)raw.at(raw.indexOf(0xFD)+1) + 20;
-
- buff.clear();
- buff = raw.mid(raw.indexOf(0xFD),(uint8_t)raw.at(raw.indexOf(0xFD) +1) + 12);
-
- //读取一帧数据
- //将百分比增加,或者位置增加
- percentage = (float)position / file->size();
- emit currentPercentage(percentage);
- emit readReady();
-
- lastTimestamp = currentTimestamp;
-
- //QApplication::processEvents();
}
else
{
@@ -125,7 +139,6 @@ void Replay::process()//线程函数
}
else
{
- //QThread::yieldCurrentThread();//放弃运行
QThread::msleep(1000);//如果没有播放,那么每秒钟检测一下是否要播放
}
@@ -133,12 +146,10 @@ void Replay::process()//线程函数
{
break;
}
- //QThread::yieldCurrentThread();
}
}
//类相关函数
-
QByteArray Replay::readAll(void)
{
//把buff里面的数据返回
diff --git a/MavLinkNode/replay.h b/MavLinkNode/replay.h
index 584f380..f5410aa 100644
--- a/MavLinkNode/replay.h
+++ b/MavLinkNode/replay.h
@@ -16,6 +16,8 @@
#include "ThreadTemplet.h"
+#include "ParsePack.h"
+
#ifdef QtMavlinkNode
#include
class MAVLINKNODESHARED_EXPORT Replay : public ThreadTemplet {
@@ -61,6 +63,9 @@ protected:
bool isplaying = false;//控制开始和结束
QByteArray buff;
+ Parser2_t parser;
+ Packer2_t packer;
+
double multiple = 1;
diff --git a/opmap/MAP_zh_CN.qm b/opmap/MAP_zh_CN.qm
index b88cb57..2e3fa9f 100644
Binary files a/opmap/MAP_zh_CN.qm and b/opmap/MAP_zh_CN.qm differ
diff --git a/opmap/MAP_zh_CN.ts b/opmap/MAP_zh_CN.ts
index eb24b88..5e0ead1 100644
--- a/opmap/MAP_zh_CN.ts
+++ b/opmap/MAP_zh_CN.ts
@@ -83,27 +83,27 @@ Please first select the area of the map to rip with <CTRL>+Left mouse clic
-
+
+ 开始上传围栏,总数%1
+
+
+
+
开始上传航点,总数%1
-
+
上传失败%1
-
- polygons
-
+
+ fence
+ 围栏
-
- circles
-
-
-
-
+
recieve way point group:%1 seq:%2
收到航点:第%1组,第%2点
@@ -126,6 +126,23 @@ Please first select the area of the map to rip with <CTRL>+Left mouse clic
时间:
+
+ mapcontrol::UAVItem
+
+
+ Speed: %1m/s
+Ma:%2
+ 表速:%1m/s
+马赫数:%2
+
+
+
+ Height: %1m
+%2
+ 高度:%1m
+%2
+
+
mapcontrol::WayPointItem
diff --git a/opmap/mapwidget/geoFencecircle.h b/opmap/mapwidget/geoFencecircle.h
index 5244e20..be592ff 100644
--- a/opmap/mapwidget/geoFencecircle.h
+++ b/opmap/mapwidget/geoFencecircle.h
@@ -38,6 +38,8 @@ public:
void setGroup(int value)
{
m_group = value;
+
+ //emit updateFenceCircle(m_group,m_radius,m_inclusion,m_latitude,m_longitide);
update();
}
diff --git a/opmap/mapwidget/geoFenceitem.cpp b/opmap/mapwidget/geoFenceitem.cpp
index 6e0f30b..8dec006 100644
--- a/opmap/mapwidget/geoFenceitem.cpp
+++ b/opmap/mapwidget/geoFenceitem.cpp
@@ -208,6 +208,8 @@ void geoFenceitem::setPoints(QList p)
m_Vertex = p.size();
RefreshPos();
}
+
+
}
diff --git a/opmap/mapwidget/geoFenceitem.h b/opmap/mapwidget/geoFenceitem.h
index e791015..abeb7eb 100644
--- a/opmap/mapwidget/geoFenceitem.h
+++ b/opmap/mapwidget/geoFenceitem.h
@@ -45,6 +45,17 @@ public:
void setGroup(int value)
{
m_group = value;
+
+ QList latlng;
+
+
+ for(internals::PointLatLng p:points)
+ {
+ latlng.push_back(QPointF(p.Lat(),p.Lng()));
+ }
+
+ //emit updateFencePolygon(m_group,m_Vertex,m_inclusion,latlng);
+
RefreshPos();
}
diff --git a/opmap/mapwidget/opmapwidget.cpp b/opmap/mapwidget/opmapwidget.cpp
index b3d4d87..502fe4e 100644
--- a/opmap/mapwidget/opmapwidget.cpp
+++ b/opmap/mapwidget/opmapwidget.cpp
@@ -147,6 +147,8 @@ OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config) : QGraphicsView
//missiontable->hide();
+
+
point_begin.SetLat(0);
point_begin.SetLng(0);
@@ -571,9 +573,25 @@ void OPMapWidget::setUAVHeading(int sysid,int compid,float Heading)
}
}
}
-
}
+void OPMapWidget::setUAVSpeed(int sysid,int compid,qreal Ma,qreal Speed)
+{
+ Q_UNUSED(compid)
+ foreach(QGraphicsItem * i, map->childItems()) {
+ UAVItem *u = qgraphicsitem_cast(i);
+ if (u) {
+ if(u->SysID() == sysid)
+ {
+ u->setMa(Ma);
+ u->setSpeed(Speed);
+ }
+ }
+ }
+}
+
+
+
int OPMapWidget::getUAVCurrent(void)
{
int num = -1;
@@ -1221,17 +1239,27 @@ void OPMapWidget::WPInsert()
{
WPLineCreate(item,w_next,Qt::green,false,2);
}
+
+
}
- //设置跟随
- /*
+ //
+
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast(i);
if (w) {
- WPFollowPrevious(w->FollowPrevious(),w);
+ if(w->isSelected())
+ {
+ w->emitWPProperty();
+ }
}
}
- */
+
+
+
+
+
+
}
void OPMapWidget::WPInsert(WayPointItem *item, const int &position)
@@ -1653,6 +1681,9 @@ void OPMapWidget::setSelectedWP(int number)
if(!wp->FollowPrevious())
altitudeitem->setCurrentPoint(wp->Number());
}
+
+ emit currentPointSeleted(wp->MissionType(),wp->Number());
+
}
}
@@ -2163,6 +2194,29 @@ void OPMapWidget::delFence(int group)
}
}
}
+
+ //重新整理一下fenceCount
+
+ /*
+ fenceCount = 0;
+ foreach(QGraphicsItem * i, map->childItems()) {
+ geoFenceitem *w = qgraphicsitem_cast(i);
+ if (w) {
+ w->setGroup(fenceCount++);
+ }
+ }
+
+ foreach(QGraphicsItem * i, map->childItems()) {
+ geoFencecircle *w = qgraphicsitem_cast(i);
+ if (w) {
+ w->setGroup(fenceCount++);
+ }
+ }
+ */
+
+
+
+
}
@@ -2519,7 +2573,7 @@ void OPMapWidget::WPDownload(void)
if(currentGroup == 1)
{
- //fenceCount = 0;
+ fenceCount = 0;
}
int sysid = 0;
@@ -3014,8 +3068,8 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par
bool inclusion = true;
qreal radius = param1;
- geoFencecircle *c = new geoFencecircle(fenceCount++,inclusion,0,internals::PointLatLng(x * 10e-8,y * 10e-8),radius,QColor("#FF8000"),map);
- emit createFenceCircle(0,radius,inclusion,x * 10e-8,y * 10e-8);
+ geoFencecircle *c = new geoFencecircle(fenceCount,inclusion,0,internals::PointLatLng(x * 10e-8,y * 10e-8),radius,QColor("#FF8000"),map);
+ emit createFenceCircle(fenceCount++,radius,inclusion,x * 10e-8,y * 10e-8);
connect(c,SIGNAL(updateFenceCircle(int,qreal,bool,qreal,qreal)),
this,SIGNAL(updateFenceCircle(int,qreal,bool,qreal,qreal)));
@@ -3025,8 +3079,8 @@ void OPMapWidget::receivedPoint(float param1,float param2,float param3,float par
bool inclusion = false;
qreal radius = param1;
- geoFencecircle *c = new geoFencecircle(fenceCount++,inclusion,0,internals::PointLatLng(x * 10e-8,y * 10e-8),radius,QColor("#FF8000"),map);
- emit createFenceCircle(0,radius,inclusion,x * 10e-8,y * 10e-8);
+ geoFencecircle *c = new geoFencecircle(fenceCount,inclusion,0,internals::PointLatLng(x * 10e-8,y * 10e-8),radius,QColor("#FF8000"),map);
+ emit createFenceCircle(fenceCount++,radius,inclusion,x * 10e-8,y * 10e-8);
connect(c,SIGNAL(updateFenceCircle(int,qreal,bool,qreal,qreal)),
this,SIGNAL(updateFenceCircle(int,qreal,bool,qreal,qreal)));
@@ -3190,13 +3244,29 @@ void OPMapWidget::AltitudeChanged(int seq,double value)
void OPMapWidget::setCurrentPoint(int value)
{
+ //qDebug() << "current point" << value;
if(altitudeitem)
{
altitudeitem->setCurrentPoint(value);
}
}
-
+void OPMapWidget::getCurrentPoint(int group)
+{
+ foreach(QGraphicsItem * i, map->childItems()) {
+ WayPointItem *w = qgraphicsitem_cast(i);
+ if (w)
+ {
+ if(w->MissionType() == group)
+ {
+ if(w->isSelected())
+ {
+ w->emitWPProperty();
+ }
+ }
+ }
+ }
+}
void OPMapWidget::updateMessage(void)
diff --git a/opmap/mapwidget/opmapwidget.h b/opmap/mapwidget/opmapwidget.h
index 80c9789..23f9ddb 100644
--- a/opmap/mapwidget/opmapwidget.h
+++ b/opmap/mapwidget/opmapwidget.h
@@ -397,7 +397,6 @@ public:
WayPointSetting *waypointsetting;
-
MeasureLine *measureline = nullptr;
int currentGroup = 3;//编辑情况
@@ -457,6 +456,7 @@ public:
void setUAVPos(int sysid,int compid,double x,double y,double z);
void setUAVHeading(int sysid,int compid,float Heading);
+ void setUAVSpeed(int sysid,int compid,qreal Ma,qreal Speed);
void DeleteTrail(void);
@@ -664,7 +664,7 @@ signals:
uint16_t compid,
uint16_t currentGroup);
-
+ void currentPointSeleted(int group,int point);
public slots:
@@ -681,6 +681,7 @@ public slots:
+
void getMapTypes(void);
void setMapTypes(QVariant value);
@@ -759,7 +760,7 @@ public slots:
void addPolygon();
void delFence(int group);
-
+ void getCurrentPoint(int group);
};
}
diff --git a/opmap/mapwidget/ruledialog.cpp b/opmap/mapwidget/ruledialog.cpp
index bc102a9..0b17e69 100644
--- a/opmap/mapwidget/ruledialog.cpp
+++ b/opmap/mapwidget/ruledialog.cpp
@@ -14,7 +14,6 @@ RuleDialog::RuleDialog(QWidget *parent) :
RuleDialog::~RuleDialog()
{
- emit isWindowClose(ID);
delete ui;
}
diff --git a/opmap/mapwidget/ruledialog.h b/opmap/mapwidget/ruledialog.h
index 4598fd8..71cbee7 100644
--- a/opmap/mapwidget/ruledialog.h
+++ b/opmap/mapwidget/ruledialog.h
@@ -13,11 +13,11 @@ class RuleDialog;
#ifdef QtopmapWidget
#include
-class OPMAPWIDGETSHARED_EXPORT RuleDialog : public QDialog
+class OPMAPWIDGETSHARED_EXPORT RuleDialog : public QDialog {
#else
class RuleDialog : public QDialog
-#endif
{
+#endif
Q_OBJECT
public:
@@ -26,9 +26,6 @@ public:
explicit RuleDialog(QWidget *parent = 0);
~RuleDialog();
-
-
-
signals:
void isWindowClose(char);
void GetPoint(quint8);
diff --git a/opmap/mapwidget/uavitem.cpp b/opmap/mapwidget/uavitem.cpp
index 9388cef..1601af7 100644
--- a/opmap/mapwidget/uavitem.cpp
+++ b/opmap/mapwidget/uavitem.cpp
@@ -127,6 +127,12 @@ void UAVItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q
painter->restore();
+
+
+
+
+
+
painter->save();
// Rotate the text back to vertical
@@ -148,6 +154,49 @@ void UAVItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q
painter->restore();
+
+ if(isShowTip)
+ {
+ painter->save();
+
+ qreal rot = this->rotation();
+ painter->rotate(-1 * rot);
+
+ QRectF rect = QRectF(-50,-80,100,50);
+
+ //画一块底色#58ACFA
+ painter->setBrush(QColor("#BEF781"));
+ //painter->setBrush(Qt::NoBrush);
+ painter->setOpacity(TipOpacity);
+
+
+ pen.setColor(QColor("#58ACFA"));
+ pen.setWidth(2);
+ painter->setPen(pen);
+ painter->drawRoundedRect(rect,5,5);
+
+ //画字
+ QFont font;
+ font.setWeight(QFont::ExtraLight);
+ font.setFamily("Arial");//非衬线
+ font.setPixelSize(12);
+ painter->setFont(font);
+
+ pen.setColor(QColor("#000000"));
+ painter->setPen(pen);
+
+ QString _h;
+ QString _v;
+
+
+ _v = tr("Speed: %1m/s\nMa:%2").arg(QString::number(Vc,'f',0)).arg(QString::number(Ma,'f',2));
+
+ _h.append(tr("Height: %1m\n%2").arg(QString::number(altitude,'f',0)).arg(_v));
+ painter->drawText(QRectF(rect.x() + 2,rect.y()+2,rect.width() - 4,rect.height() - 4),Qt::AlignLeft | Qt::AlignVCenter,_h);
+
+ painter->restore();
+ }
+
}
@@ -185,6 +234,9 @@ void UAVItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
}
qDebug() << "emit select" << sysid << compid;
emit selected(sysid,compid);
+
+ isShowTip = (isShowTip)?(false):(true);
+
update();
}
@@ -288,7 +340,7 @@ QRectF UAVItem::boundingRect() const
return QRectF(-boundingRectSize, -boundingRectSize, 2 * boundingRectSize, 2 * boundingRectSize);
}
} else {
- return QRectF(-pic.width() / 2, -pic.height() / 2, pic.width(), pic.height());
+ return QRectF(-pic.width() * 2, -pic.height() * 2, pic.width() * 4, pic.height() * 4);
}
}
diff --git a/opmap/mapwidget/uavitem.h b/opmap/mapwidget/uavitem.h
index b7b7289..4915639 100644
--- a/opmap/mapwidget/uavitem.h
+++ b/opmap/mapwidget/uavitem.h
@@ -239,6 +239,13 @@ private:
bool isEdit = false;
+ qreal TipOpacity = 1;
+ bool isShowTip = false;
+
+ qreal Ma = 0;
+ qreal Vc = 0;
+
+
protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
@@ -254,6 +261,20 @@ public slots:
void RefreshPos();
void setOpacitySlot(qreal opacity);
void zoomChangedSlot();
+
+ void setMa(qreal value)
+ {
+ Ma = value;
+ update();
+ }
+
+ void setSpeed(qreal value)
+ {
+ Vc = value;
+ update();
+ }
+
+
signals:
void selected(int sys,int comp);
diff --git a/opmap/mapwidget/waypointitem.cpp b/opmap/mapwidget/waypointitem.cpp
index 8bc0da7..e3e7bbd 100644
--- a/opmap/mapwidget/waypointitem.cpp
+++ b/opmap/mapwidget/waypointitem.cpp
@@ -492,6 +492,7 @@ void WayPointItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
ElevationTrig();
//发送航点的属性
+
emit WPProperty(property.param1,property.param2,property.param3,property.param4,
property.x,property.y,property.z,
property.seq,
@@ -504,6 +505,7 @@ void WayPointItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
property.autocontinue,
property.mission_type);
+
emit setCurrentPoint(this->Number());
}
else//这时候是在飞行界面