1252 lines
31 KiB
C
1252 lines
31 KiB
C
|
|
#ifndef FLYCONTROLINFO_H
|
|||
|
|
#define FLYCONTROLINFO_H
|
|||
|
|
|
|||
|
|
#include <QObject>
|
|||
|
|
#include <QVariant>
|
|||
|
|
#include <QVariantMap>
|
|||
|
|
#include <QVariantList>
|
|||
|
|
#include <QVariantHash>
|
|||
|
|
#include <QPointF>
|
|||
|
|
|
|||
|
|
#include "GDUModule/glink/glink_m/glink_m.h"
|
|||
|
|
#include "GDUModule/glink/glink_np/glink_np.h"
|
|||
|
|
|
|||
|
|
class FlyControlInfo : public QObject
|
|||
|
|
{
|
|||
|
|
Q_OBJECT
|
|||
|
|
public:
|
|||
|
|
explicit FlyControlInfo(QObject *parent = nullptr);
|
|||
|
|
|
|||
|
|
//**************第1包数据**************
|
|||
|
|
/*<
|
|||
|
|
bit0~6飞行状态
|
|||
|
|
0:NULL
|
|||
|
|
1:初始化中(不允许解锁,未解锁,未起飞)
|
|||
|
|
2:初始化完成(允许解锁,未解锁,未起飞)
|
|||
|
|
3:地面(已解锁,未起飞)
|
|||
|
|
4:悬停中(已起飞)
|
|||
|
|
5:手动飞行中(已起飞)
|
|||
|
|
6:自主起飞中(已起飞)
|
|||
|
|
7:自主降落中(已起飞)
|
|||
|
|
8:自主返航中(已起飞)
|
|||
|
|
9:自主环绕中(已起飞)
|
|||
|
|
10:指点飞行中(已起飞)
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar fly_state READ fly_state NOTIFY basicStateNoti)
|
|||
|
|
uchar fly_state(){
|
|||
|
|
return state1->SLfly_status & 0b01111111;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
bit7模拟飞行标志
|
|||
|
|
0:真实飞行
|
|||
|
|
1:模拟飞行
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar sim_fly_state READ sim_fly_state NOTIFY basicStateNoti)
|
|||
|
|
uchar sim_fly_state(){
|
|||
|
|
return state1->SLfly_status & 0b10000000;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
0:未解锁
|
|||
|
|
1:遥杆解锁
|
|||
|
|
2:指令解锁
|
|||
|
|
3: 遥控器拉油门着陆上锁
|
|||
|
|
4: SDK向下控速着陆上锁
|
|||
|
|
5:地面机身翻转上锁
|
|||
|
|
6: 空中机身翻转上锁
|
|||
|
|
7:指令上锁
|
|||
|
|
8:自主降落着陆上锁
|
|||
|
|
9:地面遥控器失联上锁
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar unlock_reason READ unlock_reason NOTIFY basicStateNoti)
|
|||
|
|
uchar unlock_reason(){
|
|||
|
|
return state1->armOrDisarm;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*< 数据,赋值操作,操控模式属性: 0: 极限模式1: 姿态模式2: 位置-标准操控3: 位置-运动操控 4: 视觉模式*/
|
|||
|
|
Q_PROPERTY(uchar control_mode READ control_mode NOTIFY basicStateNoti)
|
|||
|
|
uchar control_mode(){
|
|||
|
|
return state1->controlMode;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte-byte6 uint32 GPS时间(UTC)
|
|||
|
|
|
|||
|
|
bit0~5(共6位)年份后两位
|
|||
|
|
(例:21表示2021年)
|
|||
|
|
bit6~9(共4位)月
|
|||
|
|
bit10~14(共5位)日
|
|||
|
|
bit15~19(共5位)时
|
|||
|
|
bit20~25(共6位)分
|
|||
|
|
bit26~31(共6位)秒
|
|||
|
|
(总例:0x7DF7BDFF表示2063年7月15日15时31分31秒)
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
unsigned short year : 6;
|
|||
|
|
unsigned short month : 4;
|
|||
|
|
unsigned short day : 5;
|
|||
|
|
unsigned short hour : 5;
|
|||
|
|
unsigned short minute : 6;
|
|||
|
|
unsigned short second : 6;
|
|||
|
|
}GPS_TIME_t;
|
|||
|
|
|
|||
|
|
GPS_TIME_t p_gps_time_t = {0,0,0,0,0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(QString gsp_time READ gsp_time NOTIFY basicStateNoti)
|
|||
|
|
QString gsp_time(){
|
|||
|
|
p_gps_time_t.year = (state1->GPStime & 0b00000000000000000000000000111111);
|
|||
|
|
p_gps_time_t.month = (state1->GPStime & 0b00000000000000000000001111000000) >> 6;
|
|||
|
|
p_gps_time_t.day = (state1->GPStime & 0b00000000000000000111110000000000) >> 10;
|
|||
|
|
p_gps_time_t.hour = (state1->GPStime & 0b00000000000011111000000000000000) >> 15;
|
|||
|
|
p_gps_time_t.minute = (state1->GPStime & 0b00000011111100000000000000000000) >> 20;
|
|||
|
|
p_gps_time_t.second = (state1->GPStime & 0b11111100000000000000000000000000) >> 26;
|
|||
|
|
//memcpy(&p_gps_time_t,&(state1->GPStime),4);
|
|||
|
|
//return state1->GPStime;
|
|||
|
|
QString time = ""
|
|||
|
|
+ QString::number(p_gps_time_t.year)
|
|||
|
|
+ QString::number(p_gps_time_t.month)
|
|||
|
|
+ QString::number(p_gps_time_t.day)
|
|||
|
|
+ " "
|
|||
|
|
+ QString::number(p_gps_time_t.hour)
|
|||
|
|
+ ":"
|
|||
|
|
+ QString::number(p_gps_time_t.minute)
|
|||
|
|
+ ":"
|
|||
|
|
+ QString::number(p_gps_time_t.second);
|
|||
|
|
return time;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*< byte7-byte8 当次飞行时间 unsigned short 单位秒钟*/
|
|||
|
|
Q_PROPERTY(ushort flight_time READ flight_time NOTIFY basicStateNoti)
|
|||
|
|
ushort flight_time(){
|
|||
|
|
return state1->flytime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*< byte9-byte10 当前开机时间 unsigned short 单位秒钟*/
|
|||
|
|
Q_PROPERTY(ushort boot_up READ boot_up NOTIFY basicStateNoti)
|
|||
|
|
ushort boot_up(){
|
|||
|
|
return state1->CurrentFlyTime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*< byte11-byte14 总飞行时间unsigned int 单位秒钟*/
|
|||
|
|
Q_PROPERTY(unsigned int total_time READ total_time NOTIFY basicStateNoti)
|
|||
|
|
unsigned int total_time(){
|
|||
|
|
return state1->TotalFlyTime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte15-byte18
|
|||
|
|
uint32
|
|||
|
|
飞控版本号
|
|||
|
|
|
|||
|
|
十进制数各位含义(从左向右):
|
|||
|
|
第1~6位(共6位):日期
|
|||
|
|
例:210301表示2021年3月1日。
|
|||
|
|
第7~9位(共3位):序号
|
|||
|
|
值000~999
|
|||
|
|
第10位(共1位):版本类型
|
|||
|
|
值:0测试版;1发布版
|
|||
|
|
|
|||
|
|
总例:210301001 1表示2021年3月1日发布版第一版
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uint fc_Version READ fc_Version NOTIFY basicStateNoti)
|
|||
|
|
uint fc_Version(){
|
|||
|
|
return state1->fcVersion;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte19-byte22
|
|||
|
|
uint32
|
|||
|
|
卫星天线数量及状态
|
|||
|
|
|
|||
|
|
bit0~4主天线星数
|
|||
|
|
bit5~9主天线信号强度
|
|||
|
|
bit10~14从1天线星数
|
|||
|
|
(bit30~31位天线数量类型位值为1时该位值无意义)
|
|||
|
|
bit15~19从1天线信号强度
|
|||
|
|
(bit30~31位天线数量类型位值为1(单天线版)时该位值无意义)
|
|||
|
|
bit20~29预留
|
|||
|
|
(值0无意义)
|
|||
|
|
bit30~31天线数量类型
|
|||
|
|
1:单天线版
|
|||
|
|
2:双天线版
|
|||
|
|
*/
|
|||
|
|
/*< 天线 */
|
|||
|
|
Q_PROPERTY(char p_satellite_type READ p_satellite_type NOTIFY basicStateNoti)
|
|||
|
|
char p_satellite_type(){
|
|||
|
|
return (state1->GPSNum & 0xC0000000) >> 30;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 主天线星数*/
|
|||
|
|
Q_PROPERTY(char p_satellites_number READ p_satellites_number NOTIFY basicStateNoti)
|
|||
|
|
char p_satellites_number(){
|
|||
|
|
return state1->GPSNum & 0b00000000000000000000000000011111;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*主天线信号强度*/
|
|||
|
|
Q_PROPERTY(char p_satellites_strength READ p_satellites_strength NOTIFY basicStateNoti)
|
|||
|
|
char p_satellites_strength(){
|
|||
|
|
return (state1->GPSNum & 0b00000000000000000000001111100000) >> 5;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*从天线星数*/
|
|||
|
|
Q_PROPERTY(char s_satellites_number READ s_satellites_number NOTIFY basicStateNoti)
|
|||
|
|
char s_satellites_number(){
|
|||
|
|
return (state1->GPSNum & 0b00000000000000000111110000000000) >> 10;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*从天线信号强度*/
|
|||
|
|
Q_PROPERTY(char s_satellites_strength READ s_satellites_strength NOTIFY basicStateNoti)
|
|||
|
|
char s_satellites_strength(){
|
|||
|
|
return (state1->GPSNum & 0b0000000000001111100000000000000) >> 15;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte23-byte24
|
|||
|
|
uint16
|
|||
|
|
RTK状态
|
|||
|
|
|
|||
|
|
bit0~bit2主天线定位差分状态:
|
|||
|
|
0:未定位
|
|||
|
|
1:2D定位
|
|||
|
|
2:3D定位
|
|||
|
|
4:RTK float
|
|||
|
|
5:RTK fixed
|
|||
|
|
bit3~bit5从1天线定位差分状态
|
|||
|
|
(9字段bit30~31天线数量类型为1(单天线版)时该位无意义)
|
|||
|
|
0:未定位
|
|||
|
|
1:2D定位
|
|||
|
|
2:3D定位
|
|||
|
|
4:RTK float
|
|||
|
|
5:RTK fixed
|
|||
|
|
bit6~14预留
|
|||
|
|
0无意义
|
|||
|
|
bit15抗磁干扰模式,定向功能
|
|||
|
|
0关闭
|
|||
|
|
1开启
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(ushort rtk_state READ rtk_state NOTIFY basicStateNoti)
|
|||
|
|
ushort rtk_state(){
|
|||
|
|
return state1->RTKstatus;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*<
|
|||
|
|
byte25-byte26
|
|||
|
|
int16
|
|||
|
|
离禁飞区距离 m
|
|||
|
|
|
|||
|
|
在15KM范围里面进行相应播报。
|
|||
|
|
在15KM范围以外,表示远离禁飞区,这时,直接固定填入特定值为20KM)。
|
|||
|
|
负数表示已在禁飞区内。
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short no_flyzone_distance READ no_flyzone_distance NOTIFY basicStateNoti)
|
|||
|
|
short no_flyzone_distance(){
|
|||
|
|
return state1->flyzoneDistance;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte27
|
|||
|
|
uint8
|
|||
|
|
返航状态
|
|||
|
|
|
|||
|
|
bit0~2返航状态
|
|||
|
|
0:不在返航
|
|||
|
|
1:指令返航(返航中)
|
|||
|
|
2:失联返航(返航中)
|
|||
|
|
3:累计失联返航(返航中)
|
|||
|
|
4:低电返航(返航中)
|
|||
|
|
bit3~5返航状态
|
|||
|
|
(bit0~2返航状态位值为0该位值无意义)
|
|||
|
|
1:爬升
|
|||
|
|
2:预定高度掉头
|
|||
|
|
3:回航
|
|||
|
|
4:home点上空掉头
|
|||
|
|
5:降落
|
|||
|
|
bit6预留
|
|||
|
|
0无意义
|
|||
|
|
bit7:返航点记录状态
|
|||
|
|
0:返航点未记录或清除
|
|||
|
|
1:返航点已记录
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar return_Reason READ return_Reason NOTIFY basicStateNoti)
|
|||
|
|
uchar return_Reason(){
|
|||
|
|
return state1->returnStatus & 0b00000111;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(uchar return_status READ return_status NOTIFY basicStateNoti)
|
|||
|
|
uchar return_status(){
|
|||
|
|
return (state1->returnStatus & 0b00111000) >> 3;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(uchar return_point_status READ return_point_status NOTIFY basicStateNoti)
|
|||
|
|
uchar return_point_status(){
|
|||
|
|
return (state1->returnStatus & 0b10000000) >> 7;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte28-byte29
|
|||
|
|
uint16
|
|||
|
|
|
|||
|
|
返航高度 dm
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(ushort return_height READ return_height NOTIFY basicStateNoti)
|
|||
|
|
ushort return_height(){
|
|||
|
|
return state1->returnHeight;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*<
|
|||
|
|
* byte30-byte33
|
|||
|
|
* int32 返航信息3
|
|||
|
|
* 返航点经度
|
|||
|
|
* deg
|
|||
|
|
* 1e7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double return_longitude READ return_longitude NOTIFY basicStateNoti)
|
|||
|
|
double return_longitude(){
|
|||
|
|
return state1->returnLong * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte34 -byte37
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
返航点纬度
|
|||
|
|
deg
|
|||
|
|
1e7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double return_latitude READ return_latitude NOTIFY basicStateNoti)
|
|||
|
|
double return_latitude(){
|
|||
|
|
return state1->returnLat * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte38
|
|||
|
|
uint8
|
|||
|
|
自动降落信息
|
|||
|
|
|
|||
|
|
降落状态:
|
|||
|
|
0不在降落
|
|||
|
|
1指令降落(降落中)
|
|||
|
|
2失联降落(降落中)
|
|||
|
|
3低电降落(降落中)
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar auto_landing READ auto_landing NOTIFY basicStateNoti)
|
|||
|
|
uchar auto_landing(){
|
|||
|
|
return state1->autoLanding;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte39-byte40
|
|||
|
|
uint16
|
|||
|
|
|
|||
|
|
水平限距距离 m
|
|||
|
|
注:0xffff表示未开启限距功能
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(ushort distance_limit READ distance_limit NOTIFY basicStateNoti)
|
|||
|
|
ushort distance_limit(){
|
|||
|
|
return state1->levelDistLimit;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte41-byte42
|
|||
|
|
uint16
|
|||
|
|
|
|||
|
|
限高高度 m
|
|||
|
|
注:0xffff表示未开启限高功能
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(ushort height_limit READ height_limit NOTIFY basicStateNoti)
|
|||
|
|
ushort height_limit(){
|
|||
|
|
return state1->heightLimit;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte43-byte44
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
航向x100,单位度,两位小数
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double heading READ heading NOTIFY basicStateNoti)
|
|||
|
|
double heading(){
|
|||
|
|
return state1->headingAngle /100.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte45-byte46
|
|||
|
|
|
|||
|
|
int16
|
|||
|
|
当前横滚角度
|
|||
|
|
deg
|
|||
|
|
1e2
|
|||
|
|
滚转x100,单位度,两位小数
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double roll READ roll NOTIFY basicStateNoti)
|
|||
|
|
double roll(){
|
|||
|
|
return state1->rollAngle /100.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte47-byte48
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
当前俯仰角度
|
|||
|
|
deg
|
|||
|
|
1e2
|
|||
|
|
俯仰x100,单位度,两位小数
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double pitch READ pitch NOTIFY basicStateNoti)
|
|||
|
|
double pitch(){
|
|||
|
|
return state1->pitchAngle /100.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte49-byte50
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
北向速度 cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_north READ speed_north NOTIFY basicStateNoti)
|
|||
|
|
short speed_north(){
|
|||
|
|
return state1->northSpeed;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte51-byte52
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
东向速度,单位cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_east READ speed_east NOTIFY basicStateNoti)
|
|||
|
|
short speed_east(){
|
|||
|
|
return state1->eastSpeed;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte53-byte54
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
机头速度,单位cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_heading READ speed_heading NOTIFY basicStateNoti)
|
|||
|
|
short speed_heading (){
|
|||
|
|
return state1->headSpeed;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte55-byte56
|
|||
|
|
int16
|
|||
|
|
右向速度,单位cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_right READ speed_right NOTIFY basicStateNoti)
|
|||
|
|
short speed_right(){
|
|||
|
|
return state1->rightSpeed;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte57-byte58
|
|||
|
|
int16
|
|||
|
|
垂直速度 cm/s
|
|||
|
|
向上为正
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_vetical READ speed_vetical NOTIFY basicStateNoti)
|
|||
|
|
short speed_vetical(){
|
|||
|
|
return state1->verticalSpeed;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte59-byte62
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
飞机当前位置
|
|||
|
|
经度 deg 1e7
|
|||
|
|
飞行当前点经度 degrees * 10^7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double current_longitude READ current_longitude NOTIFY basicStateNoti)
|
|||
|
|
double current_longitude(){
|
|||
|
|
return state1->PositionLong * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte63-byte66
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
飞机当前位置
|
|||
|
|
纬度 deg 1e7
|
|||
|
|
飞行当前点纬度 degrees * 10^7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double current_latitude READ current_latitude NOTIFY basicStateNoti)
|
|||
|
|
double current_latitude(){
|
|||
|
|
return state1->PositionLat * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte67-byte70
|
|||
|
|
uint32
|
|||
|
|
|
|||
|
|
水平距离
|
|||
|
|
离起飞点距离
|
|||
|
|
单位米
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uint level_distance READ level_distance NOTIFY basicStateNoti)
|
|||
|
|
uint level_distance(){
|
|||
|
|
return state1->levelDist;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte71-byte74
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
融合高度
|
|||
|
|
cm
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(int height READ height NOTIFY basicStateNoti)
|
|||
|
|
int height(){
|
|||
|
|
return state1->height;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte75-byte78
|
|||
|
|
int32
|
|||
|
|
气压高度
|
|||
|
|
cm
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(int barometric_height READ barometric_height NOTIFY basicStateNoti)
|
|||
|
|
int barometric_height(){
|
|||
|
|
return state1->heightBarometric;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte79-byte82
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
GNSS 椭球高度
|
|||
|
|
单位cm
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(int height_GNSS READ height_GNSS NOTIFY basicStateNoti)
|
|||
|
|
int height_GNSS(){
|
|||
|
|
return state1->heightEllipsoid;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte83-byte86
|
|||
|
|
int32
|
|||
|
|
cm
|
|||
|
|
GNSS 海拔高度
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(int altitude_GNSS READ altitude_GNSS NOTIFY basicStateNoti)
|
|||
|
|
int altitude_GNSS(){
|
|||
|
|
return state1->Altitude;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte87-byte88
|
|||
|
|
uint16
|
|||
|
|
|
|||
|
|
近地辅助高度(TOF/超声)
|
|||
|
|
cm
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(int height_tof READ height_tof NOTIFY basicStateNoti)
|
|||
|
|
int height_tof(){
|
|||
|
|
return state1->TOFheight;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte89
|
|||
|
|
uint8
|
|||
|
|
|
|||
|
|
bit0~1RCRC异常类型
|
|||
|
|
1:已连接
|
|||
|
|
2:连接不稳定
|
|||
|
|
3:未连接
|
|||
|
|
|
|||
|
|
bit2电量值异常标志(1标志生效)
|
|||
|
|
bit3电压值异常标志(1标志生效)
|
|||
|
|
bit4~6电池报警
|
|||
|
|
0:无报警
|
|||
|
|
1:电量一级报警
|
|||
|
|
2:电量二级报警
|
|||
|
|
3:电量三级报警
|
|||
|
|
4:电池不在线
|
|||
|
|
bit7电池温度报警标志(1标志生效)
|
|||
|
|
RC连接状态
|
|||
|
|
未连接
|
|||
|
|
连接不稳
|
|||
|
|
已连接
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar rc_connect_state READ rc_connect_state NOTIFY basicStateNoti)
|
|||
|
|
uchar rc_connect_state(){
|
|||
|
|
return state1->RCabnstatus & 0b00000011;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*电池异常状态 */
|
|||
|
|
Q_PROPERTY(uchar battery_error READ battery_error NOTIFY basicStateNoti)
|
|||
|
|
uchar battery_error(){
|
|||
|
|
return (state1->RCabnstatus & 0b11111100) >> 2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
|
|||
|
|
byte90 uint8
|
|||
|
|
|
|||
|
|
IMU异常状态
|
|||
|
|
bit0~1异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
bit2震动标志(1标志生效)
|
|||
|
|
bit3晃动标志(1标志生效)
|
|||
|
|
bit4未校准标志(1标志生效)
|
|||
|
|
bit5~7传感器编号
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar imu_error READ imu_error NOTIFY basicStateNoti)
|
|||
|
|
uchar imu_error(){
|
|||
|
|
return state1->IMUsabntatus;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte91-byte92
|
|||
|
|
|
|||
|
|
磁、气压计、光流、超声/TOF异常状态
|
|||
|
|
bit0~1磁异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
3:环境干扰大
|
|||
|
|
bit2 需校磁标志(1标志生效)
|
|||
|
|
bit3~4磁传感器编号
|
|||
|
|
|
|||
|
|
|
|||
|
|
bit5~6气压计异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
bit7气压计温度异常标志(1标志生效)
|
|||
|
|
bit8~9气压计编号
|
|||
|
|
|
|||
|
|
|
|||
|
|
bit10~11光流模块异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
bit12光流置信度低标志(1标志生效)
|
|||
|
|
|
|||
|
|
|
|||
|
|
bit13~14超声/TOF异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
|
|||
|
|
|
|||
|
|
bit15预留 0无意义
|
|||
|
|
|
|||
|
|
磁力计异常状态
|
|||
|
|
*/
|
|||
|
|
//https://docs.microsoft.com/en-us/cpp/cpp/cpp-bit-fields?view=msvc-160
|
|||
|
|
//https://en.cppreference.com/w/cpp/language/bit_field
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
/* byte 0 */
|
|||
|
|
unsigned short magWarngingType : 2;/* bit: 0~1 */
|
|||
|
|
unsigned short needCalibrationFlag : 1;/* bit:2 */
|
|||
|
|
unsigned short magNubmer : 2;/* bit: 3~4 */
|
|||
|
|
unsigned short barometerWarningType : 2;/* bit: 5~6 */
|
|||
|
|
unsigned short barometerTemperatureFlag : 1;/* bit:7 */
|
|||
|
|
|
|||
|
|
/* byte 2 */
|
|||
|
|
unsigned short barometerNumber : 2;/* bit:8~9 */
|
|||
|
|
unsigned short visionWarngingType : 2;/* bit:10~11 */
|
|||
|
|
unsigned short visionLowConfidenceFlag : 1;/* bit:12 */
|
|||
|
|
unsigned short tofWarngingType : 2;/* bit:13~14 */
|
|||
|
|
unsigned short : 1; /*bit15预留*/
|
|||
|
|
|
|||
|
|
}MAGNETOMETER_ERROR_t;
|
|||
|
|
|
|||
|
|
MAGNETOMETER_ERROR_t p_magnetometer_error_t = {0,0,0,0,0,0,0,0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int magWarngingType READ magWarngingType NOTIFY basicStateNoti)
|
|||
|
|
int magWarngingType(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.magWarngingType;
|
|||
|
|
}
|
|||
|
|
Q_PROPERTY(bool needCalibrationFlag READ needCalibrationFlag NOTIFY basicStateNoti)
|
|||
|
|
bool needCalibrationFlag(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.needCalibrationFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int magNubmer READ magNubmer NOTIFY basicStateNoti)
|
|||
|
|
int magNubmer(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.magNubmer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int barometerWarngingType READ barometerWarngingType NOTIFY basicStateNoti)
|
|||
|
|
int barometerWarngingType(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.barometerWarningType;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool barometerTemperatureFlag READ barometerTemperatureFlag NOTIFY basicStateNoti)
|
|||
|
|
bool barometerTemperatureFlag(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.barometerTemperatureFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int barometerNumber READ barometerNumber NOTIFY basicStateNoti)
|
|||
|
|
int barometerNumber(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.barometerNumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int visionWarngingType READ visionWarngingType NOTIFY basicStateNoti)
|
|||
|
|
int visionWarngingType(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.visionWarngingType;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool visionLowConfidenceFlag READ visionLowConfidenceFlag NOTIFY basicStateNoti)
|
|||
|
|
bool visionLowConfidenceFlag(){
|
|||
|
|
memcpy(&p_magnetometer_error_t,&(state1->TOFabnstatus),2);
|
|||
|
|
return p_magnetometer_error_t.visionLowConfidenceFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int tofWarngingType READ tofWarngingType NOTIFY basicStateNoti)
|
|||
|
|
int tofWarngingType(){
|
|||
|
|
memset(&p_magnetometer_error_t, state1->TOFabnstatus,2);
|
|||
|
|
return p_magnetometer_error_t.tofWarngingType;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte93
|
|||
|
|
uint8
|
|||
|
|
|
|||
|
|
EEPROM、存储器、GPS模块异常状态
|
|||
|
|
bit0EEPROM通信异常标志(1标志生效)
|
|||
|
|
bit1存储器通信异常标志(1标志生效)
|
|||
|
|
bit2存储器已满标志(1标志生效)
|
|||
|
|
bit3存储器保护标志(1标志生效)
|
|||
|
|
bit4~5GPS异常类型
|
|||
|
|
1:通信异常
|
|||
|
|
2:数据异常
|
|||
|
|
bit6~7GPS模块编号
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
typedef struct {
|
|||
|
|
/* byte 0 */
|
|||
|
|
unsigned short EEPROMComFlag : 1;/* bit: 0 */
|
|||
|
|
unsigned short memoryComFlag : 1;/* bit: 1 */
|
|||
|
|
unsigned short memoryFullFlag : 1;/* bit: 2 */
|
|||
|
|
unsigned short memorySafeFlag : 1;/* bit: 3 */
|
|||
|
|
unsigned short gpsWarningType : 2;/* bit: 4~5 */
|
|||
|
|
unsigned short gpsNumber : 2;/* bit: 6~7 */
|
|||
|
|
}MEMORY_STATE_t;
|
|||
|
|
|
|||
|
|
MEMORY_STATE_t p_momory_state_t = {0,0,0,0,0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool EEPROMComFlag READ EEPROMComFlag NOTIFY basicStateNoti)
|
|||
|
|
bool EEPROMComFlag(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.EEPROMComFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool memoryComFlag READ memoryComFlag NOTIFY basicStateNoti)
|
|||
|
|
bool memoryComFlag(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.memoryComFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool memoryFullFlag READ memoryFullFlag NOTIFY basicStateNoti)
|
|||
|
|
bool memoryFullFlag(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.memoryFullFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool memorySafeFlag READ memorySafeFlag NOTIFY basicStateNoti)
|
|||
|
|
bool memorySafeFlag(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.memorySafeFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int gpsWarningType READ gpsWarningType NOTIFY basicStateNoti)
|
|||
|
|
int gpsWarningType(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.gpsWarningType;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(int gpsNumber READ gpsNumber NOTIFY basicStateNoti)
|
|||
|
|
int gpsNumber(){
|
|||
|
|
memcpy(&p_momory_state_t,&(state1->EEPROMabnstatus),1);
|
|||
|
|
return p_momory_state_t.gpsNumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte94
|
|||
|
|
uint8
|
|||
|
|
飞控主控异常状态
|
|||
|
|
bit0温度异常标志(1标志生效)
|
|||
|
|
bit1与协处理器通信异常标志(1标志生效)
|
|||
|
|
bit2~7预留 0无意义
|
|||
|
|
*/
|
|||
|
|
typedef struct {
|
|||
|
|
/* byte 0 */
|
|||
|
|
unsigned short fcTemperatureWaringFlag : 1;/* bit: 0 */
|
|||
|
|
unsigned short fcProcesssorComFlag : 1;/* bit: 1 */
|
|||
|
|
unsigned short : 6;/* bit: 2~7 */
|
|||
|
|
}FCMAIN_STATE_t;
|
|||
|
|
|
|||
|
|
FCMAIN_STATE_t p_fcmain_state_t = {0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool fcTemperatureWaringFlag READ fcTemperatureWaringFlag NOTIFY basicStateNoti)
|
|||
|
|
bool fcTemperatureWaringFlag(){
|
|||
|
|
memcpy(&p_fcmain_state_t,&(state1->FCabnstatus),1);
|
|||
|
|
return p_fcmain_state_t.fcTemperatureWaringFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool fcProcesssorComFlag READ fcProcesssorComFlag NOTIFY basicStateNoti)
|
|||
|
|
bool fcProcesssorComFlag(){
|
|||
|
|
memcpy(&p_fcmain_state_t,&(state1->FCabnstatus),1);
|
|||
|
|
return p_fcmain_state_t.fcProcesssorComFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte0 uint8 SDK控制使能(RC以外的控制接入) (1标志生效)
|
|||
|
|
bit0:SDK使能
|
|||
|
|
bit 1:航向角度控制
|
|||
|
|
bit 2:航向速度控制
|
|||
|
|
bit 3:水平速度控制
|
|||
|
|
bit 4:水平位置控制
|
|||
|
|
bit 5:高度控制
|
|||
|
|
bit 6:高度速度控制
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar sdk_control READ sdk_control NOTIFY basicStateNoti)
|
|||
|
|
uchar sdk_control(){
|
|||
|
|
return {state2->SDKswitch};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte1
|
|||
|
|
uint8
|
|||
|
|
|
|||
|
|
遥杆屏蔽状态(1标志生效)
|
|||
|
|
Bit0: 前进杆屏蔽状态
|
|||
|
|
Bit1: 后退杆屏蔽状态
|
|||
|
|
Bit2: 向左杆屏蔽状态
|
|||
|
|
Bit3: 向右杆屏蔽状态
|
|||
|
|
Bit4: 向上杆屏蔽状态
|
|||
|
|
Bit5: 向下杆屏蔽状态
|
|||
|
|
Bit6: 右旋杆屏蔽状态
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar rc_shield READ rc_shield NOTIFY basicStateNoti)
|
|||
|
|
uchar rc_shield(){
|
|||
|
|
return {state2->RCshield};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte2 uint8
|
|||
|
|
|
|||
|
|
飞控任务、功能
|
|||
|
|
bit0~3任务
|
|||
|
|
0:NONE_TASK
|
|||
|
|
1:IDLE_TASK
|
|||
|
|
2:MANUALPILOT_TASK
|
|||
|
|
3:RTL_TASK
|
|||
|
|
4:AUTO_TAKEOFF_TASK
|
|||
|
|
5:AUTO_LAND_TASK
|
|||
|
|
6:GNSS_SURROUND_TASK
|
|||
|
|
7:TRAJECTOR_PLAN_TASK
|
|||
|
|
|
|||
|
|
bit4~7功能
|
|||
|
|
1:idle
|
|||
|
|
2:standby
|
|||
|
|
3:guide
|
|||
|
|
4:takeoff
|
|||
|
|
5:land
|
|||
|
|
6:circle
|
|||
|
|
7:NONE_FUNC
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
/* byte 0 */
|
|||
|
|
unsigned short fcTask : 4;/* bit: 0~3 */
|
|||
|
|
unsigned short fcFunc : 4;/* bit: 4~7 */
|
|||
|
|
}FCTASKFUNC_t;
|
|||
|
|
|
|||
|
|
FCTASKFUNC_t p_fcTaskFunc_t = {0,0};
|
|||
|
|
|
|||
|
|
//zxtested
|
|||
|
|
Q_PROPERTY(int task READ task NOTIFY basicStateNoti)
|
|||
|
|
int task(){
|
|||
|
|
memcpy(&p_fcTaskFunc_t,&(state2->fcTask),1);
|
|||
|
|
return p_fcTaskFunc_t.fcTask;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//zxtested
|
|||
|
|
Q_PROPERTY(int funcProper READ funcProper NOTIFY basicStateNoti)
|
|||
|
|
int funcProper(){
|
|||
|
|
memcpy(&p_fcTaskFunc_t,&(state2->fcTask),1);
|
|||
|
|
return p_fcTaskFunc_t.fcFunc;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte3-byte4
|
|||
|
|
int16
|
|||
|
|
油门通道控制量
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short throttle READ throttle NOTIFY basicStateNoti)
|
|||
|
|
short throttle(){
|
|||
|
|
return state2->throttle;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte5-byte6
|
|||
|
|
int16
|
|||
|
|
航向通道控制量
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short headingChannel READ headingChannel NOTIFY basicStateNoti)
|
|||
|
|
short headingChannel(){
|
|||
|
|
return state2->heading;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte7-byte8
|
|||
|
|
int16
|
|||
|
|
横滚通道控制量
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short rollChannel READ rollChannel NOTIFY basicStateNoti)
|
|||
|
|
short rollChannel(){
|
|||
|
|
return state2->roll;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte9-byte10
|
|||
|
|
int16
|
|||
|
|
俯仰通道控制量
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short pitchChannel READ pitchChannel NOTIFY basicStateNoti)
|
|||
|
|
short pitchChannel(){
|
|||
|
|
return state2->pitch;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte11-byte14
|
|||
|
|
uint32
|
|||
|
|
|
|||
|
|
电机控制量(减去1000)
|
|||
|
|
1~3号
|
|||
|
|
|
|||
|
|
bit0~9 1号电机
|
|||
|
|
bit10~19 2号电机
|
|||
|
|
bit20~29 3号电机
|
|||
|
|
bit30~31预留 0无意义
|
|||
|
|
*/
|
|||
|
|
typedef struct {
|
|||
|
|
short a : 10;/* bit: 0~9 */
|
|||
|
|
short b : 10;/* bit: 10~19 */
|
|||
|
|
short c : 10;/* bit: 20~29 */
|
|||
|
|
short : 2;/* bit: 30~21 */
|
|||
|
|
}ELECTRIC_MACHINERY_t;
|
|||
|
|
|
|||
|
|
ELECTRIC_MACHINERY_t moter_1to3 = {0,0,0};
|
|||
|
|
ELECTRIC_MACHINERY_t moter_4to6 = {0,0,0};
|
|||
|
|
ELECTRIC_MACHINERY_t moter_7to9 = {0,0,0};
|
|||
|
|
ELECTRIC_MACHINERY_t moter_10to12 = {0,0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_1 READ electric_machinery_1 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_1(){
|
|||
|
|
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_1to3.a;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_2 READ electric_machinery_2 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_2(){
|
|||
|
|
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_1to3.b;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_3 READ electric_machinery_3 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_3(){
|
|||
|
|
moter_1to3.a = (state2->moter_1 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_1to3.b = (state2->moter_1 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_1to3.c = (state2->moter_1 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_1to3.c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_4 READ electric_machinery_4 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_4(){
|
|||
|
|
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_4to6.a;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_5 READ electric_machinery_5 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_5(){
|
|||
|
|
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_4to6.b;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_6 READ electric_machinery_6 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_6(){
|
|||
|
|
moter_4to6.a = (state2->moter_4 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_4to6.b = (state2->moter_4 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_4to6.c = (state2->moter_4 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_4to6.c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_7 READ electric_machinery_7 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_7(){
|
|||
|
|
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_7to9.a;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_8 READ electric_machinery_8 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_8(){
|
|||
|
|
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_7to9.b;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_9 READ electric_machinery_9 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_9(){
|
|||
|
|
moter_7to9.a = (state2->moter_7 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_7to9.b = (state2->moter_7 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_7to9.c = (state2->moter_7 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_7to9.c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_10 READ electric_machinery_10 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_10(){
|
|||
|
|
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_10to12.a;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_11 READ electric_machinery_11 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_11(){
|
|||
|
|
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;
|
|||
|
|
return moter_10to12.b;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(short electric_machinery_12 READ electric_machinery_12 NOTIFY basicStateNoti)
|
|||
|
|
short electric_machinery_12(){
|
|||
|
|
moter_10to12.a = (state2->moter_10 & 0b00000000000000000000001111111111);
|
|||
|
|
moter_10to12.b = (state2->moter_10 & 0b00000000000011111111110000000000) >> 10;
|
|||
|
|
moter_10to12.c = (state2->moter_10 & 0b00111111111100000000000000000000) >> 20;;
|
|||
|
|
return moter_10to12.c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte27
|
|||
|
|
uint8
|
|||
|
|
振动晃动系数
|
|||
|
|
|
|||
|
|
bit0~3
|
|||
|
|
振动系数
|
|||
|
|
|
|||
|
|
bit4~7
|
|||
|
|
晃动系数
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(uchar vibrated_number READ vibrated_number NOTIFY basicStateNoti)
|
|||
|
|
uchar vibrated_number(){
|
|||
|
|
return (state2->vibrationNum);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte28-byte31
|
|||
|
|
int32
|
|||
|
|
GPS北向速度
|
|||
|
|
cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short GNSSspeed_N READ GNSSspeed_N NOTIFY basicStateNoti)
|
|||
|
|
short GNSSspeed_N(){
|
|||
|
|
return (state2->GPSnorthSpeed);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte32-byte35
|
|||
|
|
int32
|
|||
|
|
GPS东向速度
|
|||
|
|
cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short GNSSspeed_E READ GNSSspeed_E NOTIFY basicStateNoti)
|
|||
|
|
short GNSSspeed_E(){
|
|||
|
|
return (state2->GPSeastSpeed);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte36-byte39
|
|||
|
|
int32
|
|||
|
|
GPS地向速度
|
|||
|
|
cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short GNSSspeed_D READ GNSSspeed_D NOTIFY basicStateNoti)
|
|||
|
|
short GNSSspeed_D(){
|
|||
|
|
return (state2->GPSgroundSpeed);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte40-byte43
|
|||
|
|
int32
|
|||
|
|
目标位置经度
|
|||
|
|
deg
|
|||
|
|
1e7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double target_longitude READ target_longitude NOTIFY basicStateNoti)
|
|||
|
|
double target_longitude(){
|
|||
|
|
return state2->targetLong * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte44-byte47
|
|||
|
|
int32
|
|||
|
|
|
|||
|
|
目标位置纬度
|
|||
|
|
deg
|
|||
|
|
1e7
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(double target_latitude READ target_latitude NOTIFY basicStateNoti)
|
|||
|
|
double target_latitude(){
|
|||
|
|
return state2->targetLat * 1.0 / 10000000.0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
数据,赋值操作,地向速度,单位cm/s
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed_ground READ speed_ground NOTIFY basicStateNoti)
|
|||
|
|
short speed_ground(){
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte48
|
|||
|
|
uint8
|
|||
|
|
位置启动、电机状态
|
|||
|
|
|
|||
|
|
bit0水平位置控制
|
|||
|
|
bit1高度位置控制
|
|||
|
|
bit2~3电机状态
|
|||
|
|
0:停转
|
|||
|
|
1:怠速
|
|||
|
|
2:运行
|
|||
|
|
3:测试
|
|||
|
|
zxtested
|
|||
|
|
*/
|
|||
|
|
typedef struct {
|
|||
|
|
unsigned short hControl : 1;/* bit: 0*/
|
|||
|
|
unsigned short vControl : 1;/* bit: 1*/
|
|||
|
|
unsigned short moter_state : 2;/* bit: 2~3 */
|
|||
|
|
unsigned short : 4;
|
|||
|
|
}MOTER_STATE_t;
|
|||
|
|
|
|||
|
|
MOTER_STATE_t p_moter_state_t = {0,0,0};
|
|||
|
|
|
|||
|
|
Q_PROPERTY(bool hControl READ hControl NOTIFY basicStateNoti)
|
|||
|
|
bool hControl(){
|
|||
|
|
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
|
|||
|
|
return p_moter_state_t.hControl;
|
|||
|
|
}
|
|||
|
|
Q_PROPERTY(bool vControl READ vControl NOTIFY basicStateNoti)
|
|||
|
|
bool vControl(){
|
|||
|
|
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
|
|||
|
|
return p_moter_state_t.vControl;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Q_PROPERTY(uchar alternator_state READ alternator_state NOTIFY basicStateNoti)
|
|||
|
|
uchar alternator_state(){
|
|||
|
|
memcpy(&p_moter_state_t,&(state2->moterStatus),1);
|
|||
|
|
return p_moter_state_t.moter_state;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte49-byte50
|
|||
|
|
int16
|
|||
|
|
|
|||
|
|
IMU温度
|
|||
|
|
deg
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short imu_temperature READ imu_temperature NOTIFY basicStateNoti)
|
|||
|
|
short imu_temperature(){
|
|||
|
|
return (state2->IMU_temp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
byte51-byte52
|
|||
|
|
uint16
|
|||
|
|
平均转速
|
|||
|
|
*/
|
|||
|
|
Q_PROPERTY(short speed READ speed NOTIFY basicStateNoti)
|
|||
|
|
short speed(){
|
|||
|
|
return (state2->avgNum);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//飞控上报数据1
|
|||
|
|
glink_m_aircraft_fc_basic_state_1_t *state1 = glink_m_aircraft_fc_basic_state_1_createEmptyInfo();
|
|||
|
|
//QVariantMap infoMap1;
|
|||
|
|
glink_m_aircraft_fc_basic_state_2_t *state2 = glink_m_aircraft_fc_basic_state_2_createEmptyInfo();
|
|||
|
|
//QVariantMap infoMap2;
|
|||
|
|
|
|||
|
|
Q_PROPERTY(QPointF droneCoordinate READ droneCoordinate NOTIFY droneCoordinateNoti)
|
|||
|
|
QPointF droneCoordinate(){
|
|||
|
|
return QPointF(current_longitude(),current_latitude());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void updataBaseState(){
|
|||
|
|
emit basicStateNoti();
|
|||
|
|
emit droneCoordinateNoti(droneCoordinate());
|
|||
|
|
}
|
|||
|
|
signals:
|
|||
|
|
void basicStateNoti();
|
|||
|
|
void droneCoordinateNoti(QPointF point);
|
|||
|
|
|
|||
|
|
|
|||
|
|
public slots:
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif // FLYCONTROLINFO_H
|