Files
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

271 lines
11 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 TechnologyShenzhen 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