2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
271 lines
11 KiB
C++
271 lines
11 KiB
C++
#ifndef CAMERA_H
|
||
#define CAMERA_H
|
||
|
||
#include <QObject>
|
||
#include "protocol/CmdResponse.h"
|
||
#include "GDUModule/glink/glink_m/glink_m.h"
|
||
#include "glink/glink_m/m.h"
|
||
/******************************************************************************************
|
||
* @Copyright: Copyright (c) 2015 GDU Technology(Shenzhen) Co., Ltd. All rights reserved.
|
||
* @ProjName: qgroundcontrol
|
||
* @FileName: Camera.h
|
||
* @Description: 相机、云台请求类消息组包
|
||
* @Author: xutie
|
||
* @Date: 2021-12-14
|
||
*******************************************************************************************/
|
||
class GDUDroneManager;
|
||
|
||
class Camera : public QObject
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
explicit Camera(GDUDroneManager *gduDroneManager);
|
||
|
||
//三光云台调焦类型
|
||
enum CmdZoom30XFocusActionType
|
||
{
|
||
CmdZoom30XFocusActionType_Auto = 0x00,//自动对焦
|
||
CmdZoom30XFocusActionType_Add = 0x01,//手动微调对焦+;
|
||
CmdZoom30XFocusActionType_Miu = 0x02,//手动微调对焦-;
|
||
CmdZoom30XFocusActionType_Stop = 0x03,//停止手动微调对焦;
|
||
CmdZoom30XFocusActionType_Area = 0x04,//区域自动对焦;
|
||
CmdZoom30XFocusActionType_OffZoomAuto = 0x06,//打开变倍后自动对焦;
|
||
CmdZoom30XFocusActionType_OpenZoomAuto = 0x07,//关闭变倍后自动对焦;
|
||
};
|
||
|
||
//对焦相机类别
|
||
enum CmdFocusCameraType
|
||
{
|
||
CmdFocusCameraType_Remoto = 0x00,//遥控器对焦(相机自主判断对焦相机)
|
||
CmdFocusCameraType_Infrared = 0x01,//红外相机对焦
|
||
CmdFocusCameraType_VisibleLight = 0x02,//可见光相机对焦
|
||
CmdFocusCameraType_InfraredAndVisibleLight = 0x03,//红外相机及可见光相机对焦
|
||
};
|
||
|
||
// 数码连续变焦指令
|
||
enum CmdZoom30XZoomActionType
|
||
{
|
||
CmdZoom30XZoomActionType_Minus = 0x00,//缩小
|
||
CmdZoom30XZoomActionType_Stop = 0x01,//停止
|
||
CmdZoom30XZoomActionType_Add = 0x02,//放大
|
||
};
|
||
|
||
//激光测距开关
|
||
enum CmdLaserRangSwitch
|
||
{
|
||
CmdLaserRangSwitch_Close = 0x00,//不开启
|
||
CmdLaserRangSwitch_Open = 0x01,//开启测距
|
||
};
|
||
|
||
//视觉跟踪控制指令
|
||
//跟踪状态
|
||
enum CmdTrackingStatus
|
||
{
|
||
CmdTrackingStatus_Unlock = 0x00,//解锁状态
|
||
CmdTrackingStatus_Detection = 0x01,//检测状态
|
||
CmdTrackingStatus_Tracking = 0x02,//跟踪状态
|
||
};
|
||
|
||
//反馈状态
|
||
enum CmdFeedbackStatus
|
||
{
|
||
CmdFeedbackStatus_DetectionOrTracking_Fail = 0x00,//检测/跟踪失败
|
||
CmdFeedbackStatus_DetectionOrTracking_Success = 0x01,//检测/跟踪成功
|
||
};
|
||
|
||
//拍照模式
|
||
enum CmdTakePhotoModeType
|
||
{
|
||
CmdTakePhotoModeType_Deault = 0x00,//默认拍照
|
||
CmdTakePhotoModeType_Infrared = 0x01,//红外拍照
|
||
CmdTakePhotoModeType_Visible = 0x02,//可见光拍照
|
||
CmdTakePhotoModeType_InfraraedAndVisibleLight = 0x03,//红外+可见光拍照
|
||
};
|
||
|
||
//相机拍照指令
|
||
enum CmdCameraPhotoInstruction
|
||
{
|
||
CmdCameraPhotoInstruction_SingleShot = 0X00,//单拍/开始拍照
|
||
CmdCameraPhotoInstruction_StopTakingPhoto = 0X01,//停止拍照(仅连拍模式有效)
|
||
};
|
||
|
||
//录像模式
|
||
enum CmdVideoModeType
|
||
{
|
||
CmdVideoModeType_Deault = 0x00,//默认录像
|
||
CmdVideoModeType_Ir = 0x01,//红外录像
|
||
CmdVideoModeType_Vis = 0x02,//可见光录像
|
||
CmdVideoModeType_IrAndVis = 0x03,//红外+可见光录像
|
||
};
|
||
//录像指令
|
||
enum CmdVideoInstructionType{
|
||
CmdVideoInstructionType_Start = 0x01,//开始录像(四代TK吊舱该指令仅支持开始录像,再次发送不会停止录像,停止需发送停止录像指令)
|
||
CmdVideoInstructionType_Stop = 0x02,//停止录像
|
||
CmdVideoInstructionType_Delay3s = 0x03,//3s延时录影开始
|
||
CmdVideoInstructionType_Delay5s = 0x04,//5s延时录影开始
|
||
CmdVideoInstructionType_Delay10s = 0x05,//10s延时录影开始
|
||
};
|
||
|
||
//可见光相机变倍控制
|
||
enum CmdVisZoomControlType{
|
||
CmdVisZoomControlType_ContinIncrease = 0x00,//连续放大
|
||
CmdVisZoomControlType_ContinReduction = 0x01,//连续缩小
|
||
CmdVisZoomControlType_StopZoom = 0x02,//停止变倍
|
||
CmdVisZoomControlType_Increase = 0x03,//放大
|
||
CmdVisZoomControlType_Reduction = 0x04,//缩小
|
||
};
|
||
|
||
//变倍相机类别
|
||
enum CmdZoomCameraType
|
||
{
|
||
CmdZoomCameraType_Remoto = 0x00,//遥控器变倍(相机自主判断变倍相机)
|
||
CmdZoomCameraType_Infrared = 0x01,//红外相机变倍
|
||
CmdZoomCameraType_VisibleLight = 0x02,//可见光相机变倍
|
||
CmdZoomCameraType_InfraredAndVisibleLight = 0x03,//红外相机及可见光相机变倍
|
||
};
|
||
|
||
//TF卡格式化指令
|
||
enum CmdFormatCameraType
|
||
{
|
||
CmdFormatCameraType_Infrared = 0x01,//格式化红外
|
||
CmdFormatCameraType_VisibleLight = 0x02,//格式化可见光
|
||
CmdFormatCameraType_InfraredAndVisibleLight = 0x03,//红外+可见光都格式化
|
||
};
|
||
//Q_ENUM qml使用枚举
|
||
Q_ENUM(CmdZoom30XFocusActionType)
|
||
Q_ENUM(CmdZoom30XZoomActionType)
|
||
Q_ENUM(CmdLaserRangSwitch)
|
||
Q_ENUM(CmdFocusCameraType)
|
||
Q_ENUM(CmdTrackingStatus)
|
||
Q_ENUM(CmdFeedbackStatus)
|
||
Q_ENUM(CmdTakePhotoModeType)
|
||
Q_ENUM(CmdCameraPhotoInstruction)
|
||
Q_ENUM(CmdVideoModeType)
|
||
Q_ENUM(CmdVideoInstructionType)
|
||
Q_ENUM(CmdVisZoomControlType)
|
||
Q_ENUM(CmdZoomCameraType)
|
||
Q_ENUM(CmdFormatCameraType)
|
||
|
||
//Q_INVOKABLE可以直接提供给qml调用
|
||
//调焦指令(3光云台)协议文档不清晰???
|
||
// Q_INVOKABLE void sendCamera30XFocus(CmdZoom30XFocusActionType focusActionType) {
|
||
// sendCamera30XFocus(focusActionType, nullptr);
|
||
// }
|
||
// void sendCamera30XFocus(CmdZoom30XFocusActionType focusActionType, cmdComplete_t completionBlock);
|
||
|
||
//连续变焦(3光云台)
|
||
// Q_INVOKABLE void sendCameraZoom(CmdZoom30XZoomActionType zoomActionType){
|
||
// sendCameraZoom(zoomActionType,nullptr);
|
||
// }
|
||
// void sendCameraZoom(CmdZoom30XZoomActionType zoomActionType, cmdComplete_t completionBlock);
|
||
|
||
//激光测距
|
||
Q_INVOKABLE void sendLaserRand(CmdLaserRangSwitch rangSwitch){
|
||
sendLaserRand(rangSwitch,nullptr);
|
||
}
|
||
void sendLaserRand(CmdLaserRangSwitch rangSwitch, cmdComplete_t completionBlock);
|
||
|
||
//激光照射ms
|
||
Q_INVOKABLE void sendLaserIrradiate(int time,cmdComplete_t completionBlock);
|
||
|
||
//激光连续照射s
|
||
Q_INVOKABLE void sendContinusLaserIrradiate(int time,cmdComplete_t completionBlock);
|
||
|
||
//激光停止照射
|
||
Q_INVOKABLE void sendStopLaserIrradiate(cmdComplete_t completionBlock);
|
||
|
||
//5公斤三光吊舱(compid:0x0B)
|
||
//1.云台控制协议
|
||
//云台控制指令
|
||
//yawRate left->right=255~0,pitchRate top->bottom=0~255 defult=20度/秒 128不动 高4位:云台工作模式 低4位:云台快速功能
|
||
Q_INVOKABLE void sendControlGimbalInfo(GLINK_M_WORKING_MODE1 gimbalWorkMode,GLINK_M_WORKING_MODE2 gimbalQuickFun,int yawSpeed,int pitchSpeed,cmdComplete_t completionBlock);
|
||
|
||
//指定云台角度控制指令(云台俯仰角度、云台方位角度)
|
||
Q_INVOKABLE void sendGimbalAngle(int pitchAngle, int yawAngle,cmdComplete_t completionBlock);
|
||
|
||
/**视觉跟踪控制指令
|
||
* @brief sendGimbalVisualControl
|
||
* @param horizontal 目标水平方向脱靶量:水平偏移像素 ,有符号短整型,低字节在前,图像水平向左移动为负,向右为正
|
||
* @param vertical 目标垂直方向脱靶量:垂直偏移像素 , 有符号短整型,低字节在前,垂直向下为正,向上为负
|
||
* @param trackingStatus 跟踪状态:0:解锁状态 1:检测状态2:跟踪状态
|
||
* @param feedbackStatus 反馈状态:0:检测/跟踪失败1:检测/跟踪成功
|
||
* @param width 跟踪框宽:无符号整型,低字节在前,图像宽
|
||
* @param height 跟踪框高:无符号整型,低字节在前,图像宽
|
||
* @param completionBlock 命令发送完成回调函数
|
||
*/
|
||
Q_INVOKABLE void sendGimbalVisualControl(int horizontal,int vertical,CmdTrackingStatus trackingStatus,CmdFeedbackStatus feedbackStatus,int width,int height,cmdComplete_t completionBlock);
|
||
|
||
//2.相机载荷协议
|
||
//相机所有设置参数读取
|
||
/**红外相机所有设置参数读取
|
||
* @brief readInfraredCameraAllPara
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void readInfraredCameraAllPara(cmdComplete_t completionBlock);
|
||
|
||
/**可见光相机所有设置参数读取
|
||
* @brief readVisibleLightCameraAllPara
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void readVisibleLightCameraAllPara(cmdComplete_t completionBlock);
|
||
|
||
/**录像指令
|
||
* @brief sendVideo
|
||
* @param videoMode 录像模式
|
||
* @param videoInstruction 相机录像指令
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void sendVideo(CmdVideoModeType videoMode,CmdVideoInstructionType videoInstruction,cmdComplete_t completionBlock);
|
||
|
||
/**调焦指令(通用部分)+ - \区域自动对焦(点击屏幕区域自动对焦)
|
||
* @brief sendFocus
|
||
* @param focusCamera 对焦相机类别
|
||
* @param zoomType 三光云台调焦类型
|
||
* @param Upper_left_X 区域自动对焦框左上X坐标
|
||
* @param Upper_left_Y 区域自动对焦框左上Y坐标
|
||
* @param Lower_right_X 区域自动对焦框左上Y坐标
|
||
* @param Lower_right_Y 区域自动对焦框左上Y坐标
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void sendFocus(CmdFocusCameraType focusCamera, CmdZoom30XFocusActionType zoomType, int Upper_left_X, int Upper_left_Y, int Lower_right_X, int Lower_right_Y, cmdComplete_t completionBlock);
|
||
|
||
/**光学变倍指令(通用部分)T/W
|
||
* @brief sendZoom
|
||
* @param zoomCameraType 变倍相机类别
|
||
* @param visZoomControlType 可见光相机变倍控制
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void sendZoom(CmdZoomCameraType zoomCameraType,CmdVisZoomControlType visZoomControlType,cmdComplete_t completionBlock);
|
||
|
||
/**TF卡格式化指令
|
||
* @brief sendFormatSD
|
||
* @param formatCameraType 格式化相机类型
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void sendFormatSD(CmdFormatCameraType formatCameraType,cmdComplete_t completionBlock);
|
||
|
||
/**拍照指令
|
||
* @brief sendTakePhoto
|
||
* @param takePhotoModeType 拍照模式
|
||
* @param cameraPhotoInstruction 相机拍照指令
|
||
* @param fileName
|
||
* @param completionBlock
|
||
*/
|
||
Q_INVOKABLE void sendTakePhoto(CmdTakePhotoModeType takePhotoModeType,CmdCameraPhotoInstruction cameraPhotoInstruction,cmdComplete_t completionBlock);
|
||
|
||
//3.激光载荷协议
|
||
//激光测距设置(不支持)
|
||
|
||
signals:
|
||
|
||
public slots:
|
||
|
||
private:
|
||
GDUDroneManager *_gduDroneManager = nullptr;
|
||
|
||
|
||
|
||
};
|
||
|
||
#endif // CAMERA_H
|