航线可以下载

This commit is contained in:
hm
2022-04-09 17:58:02 +08:00
parent 4ba7db7cf6
commit a96c7d143e
15 changed files with 96 additions and 155 deletions
+2 -2
View File
@@ -36,7 +36,7 @@ Chart::Chart(QChart *chart, QWidget *parent)
axisY->setLabelsFont(font);
axisY->setRange(-3, 3);
axisY->setTickCount(7);
axisY->setLabelFormat("%.2f");
axisY->setLabelFormat("%.1f");
chart->addAxis(axisY, Qt::AlignLeft);
setParent(parent);
@@ -92,7 +92,7 @@ Chart::Chart(QWidget *parent)
axisY->setLabelsFont(font);
axisY->setRange(-1, 1);
axisY->setTickCount(7);
axisY->setLabelFormat("%.2f");
axisY->setLabelFormat("%.1f");
chart()->addAxis(axisY, Qt::AlignLeft);
chart()->setPos(0,0);
+2
View File
@@ -55,6 +55,7 @@ StatusUI::StatusUI(QWidget *parent) :
ui->label_2_pit->setFixedSize(w,h);
ui->label_2_heading->setFixedSize(w,h);
ui->label_2_alt->setFixedSize(w,h);
ui->label_2_cas->setFixedSize(w,h);
ui->label_2_tas->setFixedSize(w,h);
//========================================
ui->label_la_real->setFixedSize(w,h);
@@ -244,6 +245,7 @@ void StatusUI::setState(uint32_t pos, QVariant value1, QVariant value2)
break;
case 7:
ui->label_1_cas->setText(value1.toString());
ui->label_2_cas->setText(value2.toString());
if(value1.toFloat() <= 90)
{
+14
View File
@@ -938,6 +938,20 @@ color: rgb(0, 128, 0);</string>
</property>
</widget>
</item>
<item row="12" column="2">
<widget class="QLabel" name="label_2_cas">
<property name="styleSheet">
<string notr="true">background-color: rgb(189, 189, 189);
color: rgb(0, 128, 0);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
+3 -1
View File
@@ -37,7 +37,9 @@
background-color: #FF8C8E;
}
.QLineEdit {
font: 20px "黑体";
}
.QLabel {
font: 20px "黑体";
+17 -15
View File
@@ -388,11 +388,11 @@ MainWindow::MainWindow(QWidget *parent)
map,SLOT(WPsearchall()));
//dlink ----- map
connect(map,SIGNAL(signal_WPDownload(uint8_t, uint8_t)),
dlink->mavlinknode->Mission,SLOT(ReadCmd(uint8_t, uint8_t)),Qt::DirectConnection);
connect(map,SIGNAL(signal_WPDownload(uint8_t,uint8_t,int)),
dlink->mavlinknode->Mission,SLOT(ReadCmd(uint8_t,uint8_t,int)),Qt::DirectConnection);
connect(map,SIGNAL(signal_WPUpload(uint8_t,uint8_t,uint32_t)),
dlink->mavlinknode->Mission,SLOT(WriteCmd(uint8_t,uint8_t,uint32_t)),Qt::DirectConnection);
connect(map,SIGNAL(signal_WPUpload(uint8_t,uint8_t,uint32_t,int)),
dlink->mavlinknode->Mission,SLOT(WriteCmd(uint8_t,uint8_t,uint32_t,int)),Qt::DirectConnection);
//生成航线必须在map线程完成,因此不能直接连接
@@ -1650,7 +1650,9 @@ void MainWindow::updateUI()//事件驱动式更新数据
QString::number(dlink->mavlinknode->vehicle.gps_raw_int.alt * 10e-4
+dlink->mavlinknode->vehicle.nav_controller_output.alt_error,'f',1));
statusui->setState(7,QString::number(dlink->mavlinknode->vehicle.vfr_hud.airspeed,'f',1),tr(" "));
statusui->setState(7,QString::number(dlink->mavlinknode->vehicle.vfr_hud.airspeed,'f',1),
QString::number(dlink->mavlinknode->vehicle.vfr_hud.airspeed
+dlink->mavlinknode->vehicle.nav_controller_output.aspd_error,'f',1));
statusui->setState(8,QString::number(dlink->mavlinknode->vehicle.emb_atom_com.Airspeed,'f',1),
QString::number(dlink->mavlinknode->vehicle.emb_atom_com.Airspeed
@@ -1670,8 +1672,8 @@ void MainWindow::updateUI()//事件驱动式更新数据
toolsui->senser->setAltChart("气压高度",dlink->mavlinknode->vehicle.vfr_hud.alt,1);
toolsui->senser->setAttChart("滚转",dlink->mavlinknode->vehicle.attitude.roll*57.3,3);
toolsui->senser->setAttChart("俯仰",dlink->mavlinknode->vehicle.attitude.pitch*57.3,1);
toolsui->senser->setAttChart("滚转角度值",dlink->mavlinknode->vehicle.attitude.roll*57.3,3);
toolsui->senser->setAttChart("俯仰角度值",dlink->mavlinknode->vehicle.attitude.pitch*57.3,1);
toolsui->senser->setGyroChart("滚转角速度",dlink->mavlinknode->vehicle.attitude.rollspeed * 57.3,3);
@@ -1679,12 +1681,12 @@ void MainWindow::updateUI()//事件驱动式更新数据
toolsui->senser->setGyroChart("偏航角速度",dlink->mavlinknode->vehicle.attitude.yawspeed * 57.3,2);
toolsui->senser->setAccChart("内置ax",dlink->mavlinknode->vehicle.ins1.ax,3);
toolsui->senser->setAccChart("外置ax",dlink->mavlinknode->vehicle.ins2.ax,3);
toolsui->senser->setAccChart("内置ay",dlink->mavlinknode->vehicle.ins1.ay,1);
toolsui->senser->setAccChart("外置ay",dlink->mavlinknode->vehicle.ins2.ay,1);
toolsui->senser->setAccChart("内置az",dlink->mavlinknode->vehicle.ins1.az,2);
toolsui->senser->setAccChart("外置az",dlink->mavlinknode->vehicle.ins2.az,2);
toolsui->senser->setAccChart("轴向加速度",dlink->mavlinknode->vehicle.ins1.ax,3);
//toolsui->senser->setAccChart("外置ax",dlink->mavlinknode->vehicle.ins2.ax,3);
toolsui->senser->setAccChart("侧向加速度",dlink->mavlinknode->vehicle.ins1.ay,1);
//toolsui->senser->setAccChart("外置ay",dlink->mavlinknode->vehicle.ins2.ay,1);
toolsui->senser->setAccChart("法向加速度",dlink->mavlinknode->vehicle.ins1.az,2);
//toolsui->senser->setAccChart("外置az",dlink->mavlinknode->vehicle.ins2.az,2);
toolsui->senser->setSpeedChart("地速",dlink->mavlinknode->vehicle.gps_raw_int.vel * 10e-3,3);
toolsui->senser->setSpeedChart("真空速",dlink->mavlinknode->vehicle.emb_atom_com.Airspeed,2);
@@ -1724,11 +1726,11 @@ void MainWindow::updateUI()//事件驱动式更新数据
{
//toolsui->senser->setServoChart("左副翼",la_angle);
//toolsui->senser->setServoChart("左副翼角度",la_command);
toolsui->senser->setServoChart("右副翼",ra_angle,3);
toolsui->senser->setServoChart("右副翼",ra_angle,3);
//toolsui->senser->setServoChart("右副翼角度",ra_command);
//toolsui->senser->setServoChart("左升降",le_angle);
//toolsui->senser->setServoChart("左升降角度",le_command);
toolsui->senser->setServoChart("右升降",re_angle,1);
toolsui->senser->setServoChart("右升降",re_angle,1);
//toolsui->senser->setServoChart("右升降角度",re_command);
toolsui->senser->setServoChart("方向舵",ru_angle,2);
//toolsui->senser->setServoChart("方向舵角度",ru_command);
+5
View File
@@ -109,6 +109,11 @@ private slots:
protected slots:
signals:
void currentGroup(int value);
protected:
+17 -39
View File
@@ -52,7 +52,7 @@ void MissionProcess::process()//线程函数
}
}
void MissionProcess::ReadCmd(uint8_t m_sysid, uint8_t m_compid,uint8_t m_group)
void MissionProcess::ReadCmd(uint8_t m_sysid, uint8_t m_compid,int m_group)
{
if(mission_status.m_Mode == Nop_Mode)//没有任务正在下载
{
@@ -64,13 +64,15 @@ void MissionProcess::ReadCmd(uint8_t m_sysid, uint8_t m_compid,uint8_t m_group)
}
}
void MissionProcess::WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count )
void MissionProcess::WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count ,int m_group)
{
if(mission_status.m_Mode == Nop_Mode)//没有任务在上传
{
mission_status.transmit.type = 0;
mission_status.transmit.count = count;
mission_status.transmit.group = m_group;
mission_status.m_Mode = TransmitMode;//发送模式
qDebug() << "write mission" << sysid << compid;
}
}
@@ -163,24 +165,12 @@ void MissionProcess::Parse(mavlink_message_t msg)
case MAVLINK_MSG_ID_MISSION_COUNT: {
mavlink_msg_mission_count_decode(&msg,&mission_count);
if(mission_count.target_system != GCS_SysID)
{
qDebug() << mission_count.target_system << "this msg is'nt mine";
//break;//如果目标系统不是自己,那么就抛弃该指令
}
qDebug() << "mission_count" << mission_count.count;
mission_status.recieve.isWaitingforCount = false;
}break;
case MAVLINK_MSG_ID_MISSION_REQUEST_INT: {
mavlink_msg_mission_request_int_decode(&msg,&mission_request_int);
if(mission_count.target_system != GCS_SysID)
{
qDebug() << mission_count.target_system << "this msg is'nt mine";
//break;//如果目标系统不是自己,那么就抛弃该指令
}
qDebug() << "recieve mission_request_int ";
mission_item_int.seq ++;
@@ -190,12 +180,6 @@ void MissionProcess::Parse(mavlink_message_t msg)
case MAVLINK_MSG_ID_MISSION_REQUEST: {
mavlink_msg_mission_request_decode(&msg,&mission_request);
if(mission_request.target_system != GCS_SysID)
{
qDebug() << mission_request.target_system << "this msg is'nt mine";
//break;//如果目标系统不是自己,那么就抛弃该指令
}
qDebug() << "recieve mission_request ";
mission_item_int.seq ++;
@@ -206,12 +190,6 @@ void MissionProcess::Parse(mavlink_message_t msg)
case MAVLINK_MSG_ID_MISSION_ITEM_INT: {
mavlink_msg_mission_item_int_decode(&msg,&mission_item_int);
if(mission_item_int.target_system != GCS_SysID)
{
qDebug() << mission_item_int.target_system << "this msg is'nt mine";
//break;//如果目标系统不是自己,那么就抛弃该指令
}
qDebug() << "recieve mission " << mission_item_int.seq;
if(mission_item_int.seq == 0)
@@ -222,7 +200,7 @@ void MissionProcess::Parse(mavlink_message_t msg)
//把航点发出去
emit receivedPoint(mission_item_int.param1,mission_item_int.param2,mission_item_int.param3,mission_item_int.param4,
mission_item_int.x,mission_item_int.y,mission_item_int.z,
mission_item_int.seq,0,
mission_item_int.seq,mission_item_int.mission_type,
mission_item_int.command,
mission_item_int.target_system,
mission_item_int.target_component,
@@ -278,7 +256,7 @@ void MissionProcess::ReadStateMachine(void)
{
qDebug() << "start reading mission";
mission_status.recieve.isWaitingforCount = true;
request_list();
request_list(mission_status.recieve.group);
step++;
time = QTime::currentTime().msecsSinceStartOfDay();
}
@@ -305,7 +283,7 @@ void MissionProcess::ReadStateMachine(void)
qDebug() << "mission count reccieved";
timeout_count = 0;
request_int(0,0);//读取0点
request_int(0,mission_status.recieve.group);//读取0点
time = QTime::currentTime().msecsSinceStartOfDay();
mission_status.recieve.isWaitingforItem = true;
step ++;
@@ -367,7 +345,7 @@ void MissionProcess::ReadStateMachine(void)
qDebug() << "request mission_item_int.seq+1" << (mission_item_int.seq+1);
mission_status.recieve.isWaitingforItem = true;
request_int(mission_item_int.seq+1,0);
request_int(mission_item_int.seq+1,mission_status.recieve.group);
timeout_count = 0;
time = QTime::currentTime().msecsSinceStartOfDay();
@@ -405,7 +383,7 @@ void MissionProcess::WriteStateMachine(void)
{
//向其他线程或者自己读取航点的数量
qDebug() << "start send count" << mission_status.transmit.count;
count(mission_status.transmit.count);//发送count
count(mission_status.transmit.count,mission_status.transmit.group);//发送count
mission_status.transmit.isWaiteforRequest = true;
time = QTime::currentTime().msecsSinceStartOfDay();
step++;//下一个阶段
@@ -584,12 +562,12 @@ void MissionProcess::WriteStateMachine(void)
* MISSION_REQUEST_PARTIAL_LIST
* MISSION_WRITE_PARTIAL_LIST
**/
void MissionProcess::request_list(void)//读取整列请求
void MissionProcess::request_list(int missiontype)//读取整列请求
{
static mavlink_message_t msg;
static mavlink_mission_request_list_t mission_request_list;
mission_request_list.mission_type = 0;//3456对应 1234
mission_request_list.mission_type = missiontype;//3456对应 1234
mission_request_list.target_system = sysid;
mission_request_list.target_component = compid;
@@ -597,13 +575,13 @@ void MissionProcess::request_list(void)//读取整列请求
Send(msg);
}
void MissionProcess::count(uint16_t count)//计数值
void MissionProcess::count(uint16_t count,int missiontype)//计数值
{
static mavlink_message_t msg;
static mavlink_mission_count_t mission_count;
mission_count.count = count;
mission_count.mission_type = 0;
mission_count.mission_type = missiontype;
mission_count.target_system = sysid;
mission_count.target_component = compid;
@@ -611,13 +589,13 @@ void MissionProcess::count(uint16_t count)//计数值
Send(msg);
}
void MissionProcess::request_int(uint16_t seq,uint8_t type)//读取请求
void MissionProcess::request_int(uint16_t seq,int missiontype)//读取请求
{
static mavlink_message_t msg;
static mavlink_mission_request_int_t mission_request_int;
mission_request_int.seq = seq;
mission_request_int.mission_type = 0;
mission_request_int.mission_type = missiontype;
mission_request_int.target_system = sysid;
mission_request_int.target_component = compid;
@@ -625,12 +603,12 @@ void MissionProcess::request_int(uint16_t seq,uint8_t type)//读取请求
Send(msg);
}
void MissionProcess::request(uint16_t seq,uint8_t type)//读取请求
void MissionProcess::request(uint16_t seq,int missiontype)//读取请求
{
static mavlink_message_t msg;
static mavlink_mission_request_t mission_request;
mission_request.mission_type = type;
mission_request.mission_type = missiontype;
mission_request.seq = seq;
mission_request.target_system = sysid;
mission_request.target_component = compid;
+8 -6
View File
@@ -46,6 +46,8 @@ class MissionProcess : public ThreadTemplet
int seq;
uint8_t type;
int group;
}_transmit;
typedef struct
@@ -74,8 +76,8 @@ public slots:
//读取航线的指令
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, uint8_t m_group);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count );
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, int m_group);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count ,int m_group);
void SetCurrentPoint(int seq);
@@ -105,10 +107,10 @@ private slots:
void WriteStateMachine(void);
//所有的相关函数
void request_list(void);
void count(uint16_t count);
void request_int(uint16_t seq,uint8_t type);
void request(uint16_t seq, uint8_t type);
void request_list(int missiontype);
void count(uint16_t count,int missiontype);
void request_int(uint16_t seq,int missiontype);
void request(uint16_t seq, int missiontype);
void item_int(float param1, float param2, float param3, float param4,
int32_t x, int32_t y, float z,
uint16_t seq, uint16_t command,
+8 -3
View File
@@ -1,8 +1,13 @@
#ifndef DEBUGHEADER_H
#define DEBUGHEADER_H
// #define DEBUG_CORE
// #define DEBUG_TILE
// #define DEBUG_TILEMATRIX
// #define DEBUG_MEMORY_CACHE
// #define DEBUG_CACHE
// #define DEBUG_GMAPS
// #define DEBUG_PUREIMAGECACHE
// #define DEBUG_TILECACHEQUEUE
// #define DEBUG_URLFACTORY
// #define DEBUG_MEMORY_CACHE
// #define DEBUG_GetGeocoderFromCache
#endif // DEBUGHEADER_H
+1 -12
View File
@@ -6,13 +6,6 @@
#ifdef _USE_MATH_DEFINES
#ifdef unix
#else
#ifdef __MINGW32__
#else
#define M_E 2.71828182845904523536
#define M_LOG2E 1.44269504088896340736
#define M_LOG10E 0.434294481903251827651
@@ -26,11 +19,7 @@
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2 1.41421356237309504880
#define M_SQRT1_2 0.707106781186547524401
#endif /* __MINGW32__ */
#endif
#endif /* _USE_MATH_DEFINES */
#endif /* END FILE */
+11 -6
View File
@@ -35,6 +35,7 @@ class MissionProcess : public ThreadTemplet
typedef struct {
bool isWaitingforCount;
bool isWaitingforItem;
int group;
}_recieve;
typedef struct {
@@ -45,6 +46,8 @@ class MissionProcess : public ThreadTemplet
int seq;
uint8_t type;
int group;
}_transmit;
typedef struct
@@ -65,14 +68,16 @@ public:
_mission_ mission_status;
int currentGroup = 3;
public slots:
void Parse(mavlink_message_t msg);
//读取航线的指令
void ReadCmd(uint8_t m_sysid, uint8_t m_compid);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count );
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, int m_group);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid ,uint32_t count ,int m_group);
void SetCurrentPoint(int seq);
@@ -102,10 +107,10 @@ private slots:
void WriteStateMachine(void);
//所有的相关函数
void request_list(void);
void count(uint16_t count);
void request_int(uint16_t seq,uint8_t type);
void request(uint16_t seq, uint8_t type);
void request_list(int missiontype);
void count(uint16_t count,int missiontype);
void request_int(uint16_t seq,int missiontype);
void request(uint16_t seq, int missiontype);
void item_int(float param1, float param2, float param3, float param4,
int32_t x, int32_t y, float z,
uint16_t seq, uint16_t command,
+2 -2
View File
@@ -604,8 +604,8 @@ signals:
void signal_WPDownload(uint8_t m_sysid, uint8_t m_compid);
void signal_WPUpload(uint8_t m_sysid, uint8_t m_compid, uint32_t count);
void signal_WPDownload(uint8_t m_sysid, uint8_t m_compid,int missiontype);
void signal_WPUpload(uint8_t m_sysid, uint8_t m_compid, uint32_t count,int missiontype);
void transmitPoint(float param1,float param2,float param3,float param4,
Binary file not shown.
+4 -67
View File
@@ -728,7 +728,7 @@ void OPMapWidget::mouseReleaseEvent(QMouseEvent *event)
this->setCursor(QCursor(pix.scaled(QSize(50,50), Qt::KeepAspectRatio)));
}
qDebug() << "relea";
//qDebug() << "relea";
}
void OPMapWidget::mouseDoubleClickEvent(QMouseEvent *event)
@@ -1979,7 +1979,7 @@ void OPMapWidget::WPDownload(void)
sysid = u->SysID();
compid = u->CompID();
emit signal_WPDownload(sysid,compid);
emit signal_WPDownload(sysid,compid,currentGroup);
}
}
}
@@ -2040,7 +2040,7 @@ void OPMapWidget::WPUpload(void)
compid = u->CompID();
//如果有选中,那么就发送,选中几个就发几个
emit signal_WPUpload(sysid,compid,list.size());//直接发送全部航点到
emit signal_WPUpload(sysid,compid,list.size(),currentGroup);//直接发送全部航点到
}
}
}
@@ -2052,7 +2052,7 @@ void OPMapWidget::WPGroup(int value)
qDebug() << "group" << value;
//切换当前航线
//切换当前航线,显示当前航线,其他都隐藏,或者高亮当前
@@ -2066,8 +2066,6 @@ void OPMapWidget::WPGroup(int value)
if(flag == true)
{
QString str;
//str.append(tr("send way point %1").arg(seq));
str.append("上传航点");
str.append(QString::number(seq));
emit showMessage(str);
@@ -2075,71 +2073,10 @@ void OPMapWidget::WPGroup(int value)
else
{
QString str;
str.append(tr("上传失败%1").arg(seq));
emit showMessage(str);
}
/*
if(flag == true)
{
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
if(w->Number() == (seq))
{
w->setVisible(true);
foreach(QGraphicsItem * i, map->childItems()) {
WayPointLine *l = qgraphicsitem_cast<WayPointLine *>(i);
if (l) {
if(l->WPLineTo() == w)
l->setVisible(true);
}
}
}
}
}
}
*/
/*
if(flag == true)
{
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) {
if(w->Number() == (seq))
{
w->setVisible(true);
foreach(QGraphicsItem * i, map->childItems()) {
WayPointLine *l = qgraphicsitem_cast<WayPointLine *>(i);
if (l) {
if(l->WPLineTo() == w)
l->setVisible(true);
}
}
}
}
}
}
else
{
foreach(QGraphicsItem * i, map->childItems()) {
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
if (w) w->setVisible(true);
}
foreach(QGraphicsItem * i, map->childItems()) {
WayPointLine *l = qgraphicsitem_cast<WayPointLine *>(i);
if (l) l->setVisible(true);
}
}
*/
}
//这个有可能是其他线程运行,导致生成的航点不对,下载得到
+2 -2
View File
@@ -604,8 +604,8 @@ signals:
void signal_WPDownload(uint8_t m_sysid, uint8_t m_compid);
void signal_WPUpload(uint8_t m_sysid, uint8_t m_compid, uint32_t count);
void signal_WPDownload(uint8_t m_sysid, uint8_t m_compid,int missiontype);
void signal_WPUpload(uint8_t m_sysid, uint8_t m_compid, uint32_t count,int missiontype);
void transmitPoint(float param1,float param2,float param3,float param4,