add mavlink parse

This commit is contained in:
hm
2020-03-04 23:03:02 +08:00
parent 70c95f088c
commit a27878ce87
4 changed files with 85 additions and 28 deletions
+11 -1
View File
@@ -14,6 +14,14 @@ MainWindow::MainWindow(QWidget *parent)
dlink = new DLink();
/*
connect(dlink->mavlinknode,&MavLinkNode::state_updated,
this,&MainWindow::updateUI);
*/
connect(dlink->mavlinknode,SIGNAL(state_updated()),
this,SLOT(updateUI()));
map = new mapcontrol::OPMapWidget(this);
map->SetShowHome(false);
@@ -54,7 +62,7 @@ MainWindow::MainWindow(QWidget *parent)
connect(updateTimer,&QTimer::timeout,
this,&MainWindow::updateUI);
updateTimer->start(20);
//updateTimer->start(20);
}
@@ -153,6 +161,8 @@ void MainWindow::client_triggered()
void MainWindow::updateUI()
{
qDebug() << "updateUI";
copk->setAttitude(dlink->mavlinknode->vehicle.attitude.pitch * 57.3,
dlink->mavlinknode->vehicle.attitude.roll * 57.3,
dlink->mavlinknode->vehicle.attitude.yaw * 57.3);
+49 -7
View File
@@ -222,7 +222,7 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
case MAVLINK_MSG_ID_VIBRATION:
case MAVLINK_MSG_ID_EngineState:
case MAVLINK_MSG_ID_VFR_HUD:
StateParse(msg);
StatusParse(msg);
break;
//航线部分
@@ -251,28 +251,70 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
}
}
void MavLinkNode::StateParse(mavlink_message_t msg)
void MavLinkNode::StatusParse(mavlink_message_t msg)
{
switch (msg.msgid) {
case MAVLINK_MSG_ID_HEARTBEAT: {
//qDebug() << "msgid:" << msg.msgid;
switch (msg.msgid) {
case MAVLINK_MSG_ID_AUTOPILOT_VERSION: {
mavlink_msg_autopilot_version_decode(&msg,&vehicle.autopilot_version);
}break;
case MAVLINK_MSG_ID_SYS_STATUS: {
mavlink_msg_sys_status_decode(&msg,&vehicle.sys_status);
}break;
case MAVLINK_MSG_ID_HEARTBEAT: {
mavlink_msg_heartbeat_decode(&msg,&vehicle.heartbeat);
}break;
case MAVLINK_MSG_ID_PING: {
mavlink_msg_ping_decode(&msg,&vehicle.ping);
}break;
case MAVLINK_MSG_ID_ATTITUDE: {
}break;
case MAVLINK_MSG_ID_ATTITUDE: {
mavlink_msg_attitude_decode(&msg,&vehicle.attitude);
emit state_updated();
}break;
case MAVLINK_MSG_ID_GPS_RAW_INT: {
mavlink_msg_gps_raw_int_decode(&msg,&vehicle.gps_raw_int);
}break;
case MAVLINK_MSG_ID_GLOBAL_POSITION_INT: {
mavlink_msg_global_position_int_decode(&msg,&vehicle.global_position_int);
}break;
case MAVLINK_MSG_ID_SERVO_OUTPUT_RAW: {
mavlink_msg_servo_output_raw_decode(&msg,&vehicle.servo_output_raw);
}break;
case MAVLINK_MSG_ID_RC_CHANNELS_RAW: {
mavlink_msg_rc_channels_raw_decode(&msg,&vehicle.rc_channels_raw);
}break;
case MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT: {
mavlink_msg_nav_controller_output_decode(&msg,&vehicle.nav_controller_output);
}break;
case MAVLINK_MSG_ID_AIRSPEED_AUTOCAL: {
mavlink_msg_airspeed_autocal_decode(&msg,&vehicle.airspeed_autocal);
}break;
case MAVLINK_MSG_ID_RPM: {
mavlink_msg_rpm_decode(&msg,&vehicle.rpm);
}break;
case MAVLINK_MSG_ID_SCALED_PRESSURE: {
mavlink_msg_scaled_pressure_decode(&msg,&vehicle.scaled_pressure);
}break;
case MAVLINK_MSG_ID_EXTENDED_SYS_STATE: {
mavlink_msg_extended_sys_state_decode(&msg,&vehicle.extended_sys_state);
}break;
case MAVLINK_MSG_ID_BATTERY_STATUS: {
mavlink_msg_battery_status_decode(&msg,&vehicle.battery_status);
}break;
case MAVLINK_MSG_ID_VIBRATION: {
mavlink_msg_vibration_decode(&msg,&vehicle.vibration);
}break;
case MAVLINK_MSG_ID_EngineState: {
mavlink_msg_enginestate_decode(&msg,&vehicle.enginestate);
}break;
case MAVLINK_MSG_ID_VFR_HUD: {
mavlink_msg_vfr_hud_decode(&msg,&vehicle.vfr_hud);
}break;
}
}
}
void MavLinkNode::ParamParse(mavlink_message_t msg)
+17 -11
View File
@@ -29,20 +29,25 @@ class MavLinkNode : public QObject
uint8_t sysid; /*< ID of message sender system/aircraft */
uint8_t compid; /*< ID of the message sender component */
mavlink_heartbeat_t heartbeat_old;
mavlink_autopilot_version_t autopilot_version;
mavlink_sys_status_t sys_status;
mavlink_heartbeat_t heartbeat;
mavlink_ping_t ping;
mavlink_attitude_t attitude;
mavlink_gps_raw_int_t gps_raw_int;
mavlink_battery_status_t battery_status;
mavlink_rpm_t rpm;
mavlink_rc_channels_raw_t rc_channels_raw;
mavlink_global_position_int_t global_position_int;
mavlink_servo_output_raw_t servo_output_raw;
mavlink_scaled_pressure_t scaled_pressure;
mavlink_vfr_hud_t vfr_hud;
mavlink_rc_channels_raw_t rc_channels_raw;
mavlink_nav_controller_output_t nav_controller_output;
mavlink_airspeed_autocal_t airspeed_autocal;
mavlink_rpm_t rpm;
mavlink_scaled_pressure_t scaled_pressure;
mavlink_extended_sys_state_t extended_sys_state;
mavlink_battery_status_t battery_status;
mavlink_vibration_t vibration;
mavlink_enginestate_t enginestate;
mavlink_vfr_hud_t vfr_hud;
mavlink_command_int_t command_int;
mavlink_mission_count_t mission_count;
mavlink_mission_item_t mission_item;
@@ -79,14 +84,15 @@ public:
signals:
void state_updated();
void parameter_updated();
void mission_updated();
public slots:
//线程对外接口
void setRunFrq(uint32_t frq);
void start();
void stop();
//缓存对外接口
void setbuff(quint32 src, QByteArray data);
@@ -104,7 +110,7 @@ private slots:
void MAVLinkRcv_Handler(mavlink_message_t msg);
void StateParse(mavlink_message_t msg);
void StatusParse(mavlink_message_t msg);
void ParamParse(mavlink_message_t msg);
void CommandParse(mavlink_message_t msg);
void MissionParse(mavlink_message_t msg);
+8 -9
View File
@@ -8,13 +8,6 @@
#include "QDebug"
#include "mavlinknode.h"
struct Node{
QUdpSocket * sock;
QHostAddress addr;
quint16 port;
};
#ifdef QtDlink
#include <dlinkglobal.h>
class DLINKSHARED_EXPORT DLink : public QObject {
@@ -22,9 +15,15 @@ class DLINKSHARED_EXPORT DLink : public QObject {
class DLink : public QObject
{
#endif
Q_OBJECT
struct Node{
QUdpSocket * sock;
QHostAddress addr;
quint16 port;
};
public:
explicit DLink(QObject *parent = nullptr);
~DLink();