You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

489 lines
18 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "stdafx.h"
#include "Decoder.h"
// 李振h264解码库
#include "DecoderFactory.h"
#include "deque"
#include "CUDPSocket.h"
#include "CTCPSocket.h"
#include <opencv2\opencv.hpp>
using namespace cv;
#include "QBStru.h"
// 命名
typedef unsigned __int8 UINT8;
typedef unsigned __int16 UINT16;
typedef unsigned __int32 UINT32;
//typedef __int8 INT8;
typedef __int16 INT16;
typedef __int32 INT32;
// 工作模式
extern bool g_bWorkMode; // true回放 false实时
extern BOOL g_bMulticastSocketConnect; // 表征组播连接已创建的变量 TURE创建连接 FALSE断开连接
extern BOOL g_bReplayPlay; // TRUE: 回放中处于播放态, FALSE: 回放中处于暂停态
extern int g_ChartTabNum; // 图表分析窗口中tab页的编号1为第一页以此类推
extern BOOL g_bShowEvaluation; // 载荷评价对话框是否展开
extern BOOL g_bVideoCapture; //视频录制
extern HWND g_mainDlgHwnd; // 主窗口句柄
extern HWND g_ReplayDlgHwnd; // 视频控制窗口句柄
extern HWND g_MapGuideHwnd; // 地图导引
extern HWND g_QBTargetHwnd; // 情报席位目标定位窗口句柄(待删除)
extern HWND g_PhotoCtrlDlgHwnd; // 图片显示窗口句柄
extern HWND g_QBFunctionsHwnd; // 其他功能窗口句柄
extern HWND g_QBTargetTrackFunctionsHwnd; // 目标跟踪功能窗口句柄
extern HWND g_SendControlCommandDlgHwnd; // 发送指令&&手动控制指令盘界面句柄
extern HWND g_JoyStickControlDlgHwnd; // 摇杆控制窗口句柄
extern HWND g_CH96CtrlDlgHwnd; // CH96控制页面
extern HWND g_MulticastSocketReceiveDlgHwnd; // 组播收数窗口句柄
extern HWND g_mapMatchDlg;
// 视频解码器 及 图像存储空间
extern H264Decode g_EO_Decoder;
extern H264Decode g_IR_Decoder;
extern unsigned char g_CH96_ImgBuffer[1920 * 1088 * 3];
extern unsigned char g_IR_ImgBuffer[720 * 576 * 3];
extern BOOL g_bEOImgUpdate; // 界面EO图像是否更新TRUE更新 FALSE未更新
extern BOOL g_bIRImgUpdate; // 界面IR图像是否更新TRUE更新 FALSE未更新
// 解码器对象
extern DecoderInterface *g_CH96_h264decoder;
//数据转发
extern CTCPSocket g_TCPTrans2Server;
extern BYTE g_tcpData[276];
extern bool g_tcpStarted;
extern CUDPSocket g_UDPTrans2Server;
extern bool g_udpStarted;
extern unsigned int g_frameCountTX;
// 当计算机性能较差时,采用硬解码,同时不使用图像库
extern cv::Mat g_ImgforLowComputer;
// 表征计算机性能的BOOL变量
extern BOOL g_bGoodComputer;
// 复接数据
extern struProtocal_FJ g_ImgFJData; // 视频图像复接数据
extern struProtocal_FJ g_SocketFJData; // 组播复接数据
extern struProtocal_FJ g_PhotoFJData; // 数码照片复接数据
extern struTranslateProtocal_FJ g_ImgTransFJData; // 转换后
extern struTranslateProtocal_FJ g_PhotoTransFJData; // 转换后
extern struSocketProtocal g_LocationSocketData; // 位置信息组播数据
extern Protocal96TXD g_CH96FJData; // CH96原始复接数据
extern Data96TXD g_CH96TransFJData; // CH96显示用复接数据
extern struQB_FJ g_CH96QBData; // CH96目标定位用情报数据
extern QBStru g_QB;
extern struQB_FJ g_IRFJData;
// 跟踪偏移量
extern CPoint g_TrackOffset;
extern BOOL g_bTracking;
// 摇杆控制量——伺服移动速度
extern int g_ServoSpeedUpDown; // [-512, 512]
extern int g_ServoSpeedLeftRight; // [-512, 512]
// 主界面指令盘点击偏移量
extern CPoint g_CtrlAzimuth; //方位角
extern CPoint g_CtrlPitch; //俯仰角
//主窗口控制指令实时显示变量
extern CString g_sCtrlInstruction;
// 存储全部遥测数据的文件
extern FILE* g_pFileSaveCH96txData; // 全部数据
extern FILE* g_pFileSaveVideoDataCH96; // 可见光 264编码部分
extern FILE* g_pFileSaveVideoForKCF; // 为KCF分析录制视频
extern FILE* g_pFileSaveVideoH264Data; // 光电吊舱 264编码部分
// 接收到的有效数据: 预分配内存 大小
static const int g_MaxBufferLen = 102400 * 5;
extern BYTE g_receiveDataBuffer[g_MaxBufferLen];
extern BYTE g_receiveDataBuffer_middle[g_MaxBufferLen];
extern int g_validDataLen; // 有效长度
// 接收到的有效数据:用于进行组播组包
static const int g_MaxBufferLenSocket = 102400 * 5;
extern BYTE g_receiveDataBufferSocket[g_MaxBufferLenSocket];
extern BYTE g_receiveDataBuffer_middleSocket[g_MaxBufferLenSocket];
extern int g_validDataLenSocket;
// 数据处理互斥句柄
extern HANDLE g_hMutex_ProcessData;
extern HANDLE g_hMutex_ProcessDataSocket;
extern HANDLE g_hMutex_SaveFJData;
extern HANDLE g_hMutex_ShowFJData;
extern HANDLE g_hMutex_ProcessDataCH96;
extern HANDLE g_hMutex_ProcessDataH264;
// 图像显示处理互斥句柄
extern HANDLE g_hMutex_DisplayVideoCH96;
extern HANDLE g_hMutex_DisplayIRVideo;
extern HANDLE g_hMutex_DisplayDCPhoto;
// 组播组包/发送互斥句柄
extern HANDLE g_hMutex_SocketSendLocation;
extern HANDLE g_hMutex_SocketSendIR;
extern HANDLE g_hMutex_SocketSendEO;
// 解码图像存储队列
extern std::deque<cv::Mat> g_CH96VideoDeque;
// 目标定位用复接数据存储队列
extern std::deque<struQB_FJ> g_TgtLocStructDeque; // 目标定位 复接数据 队列 容量 3
//主界面数引功能全局控制变量
extern float g_Guide_Azimuth; //方位角
extern float g_Guide_Pitch; //俯仰角
extern bool g_bGuide_Button; //判断主界面数引键是否按下
// ProcessData线程开关变量
extern bool g_bProcessDataFlag;
extern bool g_bProcessDataSocketFlag;
// 手动搜索控制指令盘变量
extern double g_MS_Ratio; // 比率
extern double g_MS_Angle; // 角度
// 精确飞机位置姿态
extern double g_UAVLon;
extern double g_UAVLat;
extern double g_UAVAlt;
extern double g_UAVRoll;
extern double g_UAVYaw;
extern double g_UAVPitch;
//定义控制指令UDP数据发送对象
extern CUDPSocket g_UdpSend2Payload;
extern CUDPSocket g_UdpSendTgtInfo;
extern CUDPSocket g_UdpSend2Mobile;
extern bool g_bCreatUDP;
extern bool g_bCreatTgtInfoUDP;
extern bool g_bCreatSend2Mobile;
extern BYTE g_payloadCtrlInstruction[32]; // 发送指令
extern int g_payloadCtrlProtocol; // 载荷控制开关指令
extern BYTE g_payloadCtrlInstructionFromVK[8]; // 收到来自视频键盘的控制指令
extern BOOL g_bCtrlFromSoftware; // 判断指令是否来自视频键盘或者软件软键盘 TURE:软件 FALSE:视频键盘
extern bool g_CtrlFocusThroughMouseWheel; // 是否通过滚轮控制载荷焦距
extern BOOL g_bShowEOInBigArea; // 变换显示,在大区域显示可见光或红外
// 定义收取目标定位信息结构体
extern MostSimpleTgtInfo tgtRecvInfo;
// 载荷软件存储文件
extern CString g_DataSavePath; // 载荷软件存储文件的路径名称
// 地图导引模块中高程设置变量
extern float g_DEMSetting;
// 设置跟踪阈值全局变量
extern int g_ThresholdSetting; // 范围[0,10]默认6
extern BOOL g_bMapDirectGuide; // 是否是地图直接导引标志
// 数码照片名称
extern CString g_str_DCname;
extern CString g_DCPath;
extern cv::Mat g_DCImg;
// 目标定位
extern HANDLE g_hMutex_TgtLoc;// 目标定位互斥句柄
extern double g_LLA[3]; // WGS84下目标定位结果
extern double g_VD[2]; // 动目标定位速度方向
extern double g_TgtLocReliability; // 定位结果可信度
extern BOOL g_bMoveTarget; // TRUE动目标定位 FALSE静目标定位
extern BOOL g_bWithLaser; // TRUE: 有激光定位 FALSE: 无激光定位
extern BOOL g_bStartTargetLoc; // TRUE: 开始目标定位 FALSE: 停止目标定位
extern BOOL g_bReStartTargetLoc; // TRUE: 重新开始目标定位 FALSE: 不重新开始目标定位
extern CString g_strTargetLocResult_Lon; // 目标定位经度
extern CString g_strTargetLocResult_Lat; // 目标定位纬度
// 语言变量获取语言内容时先用char格式获取再将char转为CString
// [TITLE]
extern char g_char_TitleReplay[30]; // 视频回放标题
extern CString g_str_TitleReplay;
// [WARNING]
extern char g_char_WarningTitle[100]; // 信息提示
extern CString g_str_WarningTitle;
extern char g_char_WarningStorage[100]; // 磁盘空间提示
extern CString g_str_WarningStorage;
extern char g_char_WarningUDPReceive[100]; // UDP收数提示测控、情报
extern CString g_str_WarningUDPReceive;
extern char g_char_WarningSerialReceive[100]; // 串口收数提示
extern CString g_str_WarningSerialReceive;
extern char g_char_WarningPayloadControl[100]; // 载荷控制连接提示
extern CString g_str_WarningPayloadControl;
extern char g_char_WarningLRFCode[100]; // 激光编码密码登陆提示
extern CString g_str_WarningLRFCode;
extern char g_char_WarningLRFNumber[100]; // 激光编码周期范围提示
extern CString g_str_WarningLRFNumber;
extern char g_char_WarningInputNumber[100]; // 输入数字提示(数引)
extern CString g_str_WarningInputNumber;
extern char g_char_WarningMapAltSet[100]; // 地图高程设定提示
extern CString g_str_WarningMapAltSet;
// [STATIC]
extern char g_char_CommandSend[30]; // 发送指令
extern CString g_str_CommandSend;
extern char g_char_CommandResponse[30]; // 回报指令
extern CString g_str_CommandResponse;
extern char g_char_State[30]; // 载荷状态
extern CString g_str_State;
extern char g_char_FilePath[30]; // 文件路径
extern CString g_str_FilePath;
extern char g_char_EOCommand[30]; // 可见光相机指令
extern CString g_str_EOCommand;
extern char g_char_IRCommand[30]; // 红外相机指令
extern CString g_str_IRCommand;
extern char g_char_Drift[30]; // 陀螺修正
extern CString g_str_Drift;
extern char g_char_AVTGate[30]; // 波门位移
extern CString g_str_AVTGate;
extern char g_char_LogIn[30]; // 密码登陆
extern CString g_str_LogIn;
extern char g_char_LaserNum[30]; // 编码序号:
extern CString g_str_LaserNum;
extern char g_char_LaserPeriod[30]; // 编码周期:
extern CString g_str_LaserPeriod;
// [COMMAND]——按照协议顺序编写
extern char g_char_TargetLonSet[30]; // 目标经度装订
extern CString g_str_TargetLonSet;
extern char g_char_TargetLatSet[30]; // 目标纬度导引
extern CString g_str_TargetLatSet;
extern char g_char_TargetAltSet[30]; // 目标高度导引
extern CString g_str_TargetAltSet;
extern char g_char_GeographyTracking[30]; // 地理坐标跟踪
extern CString g_str_GeographyTracking;
extern char g_char_ManualSlew[30]; // 手动搜索
extern CString g_str_ManualSlew;
extern char g_char_VerticalView[30]; // 锁定
extern CString g_str_VerticalView;
extern char g_char_AutoScan[30]; // 扫描
extern CString g_str_AutoScan;
extern char g_char_AngleLock[30]; // 数引
extern CString g_str_AngleLock;
extern char g_char_TurretReset[30]; // 平台复位
extern CString g_str_TurretReset;
extern char g_char_DriftRight[30]; // 陀螺右修
extern CString g_str_DriftRight;
extern char g_char_DriftLeft[30]; // 陀螺左修
extern CString g_str_DriftLeft;
extern char g_char_DriftUp[30]; // 陀螺上修
extern CString g_str_DriftUp;
extern char g_char_DriftDown[30]; // 陀螺下修
extern CString g_str_DriftDown;
extern char g_char_TurretStow[30]; // 载荷升
extern CString g_str_TurretStow;
extern char g_char_TurretFWD[30]; // 载荷降
extern CString g_str_TurretFWD;
extern char g_char_EOAutoTracking[30]; // EO自动跟踪
extern CString g_str_EOAutoTracking;
extern char g_char_IRAutoTracking[30]; // IR自动跟踪
extern CString g_str_IRAutoTracking;
extern char g_char_CorrelationTracking[30]; // 相关跟踪
extern CString g_str_CorrelationTracking;
extern char g_char_CentroidBlackTracking[30]; // 重心黑
extern CString g_str_CentroidBlackTracking;
extern char g_char_CentroidWhiteTracking[30]; // 重心白
extern CString g_str_CentroidWhiteTracking;
extern char g_char_OSDONOFF[30]; // 字符叠加/消隐
extern CString g_str_OSDONOFF;
extern char g_char_OffsetTracking[30]; // 偏心跟踪
extern CString g_str_OffsetTracking;
extern char g_char_StaticTargetTracking[30]; // 静态目标跟踪
extern CString g_str_StaticTargetTracking;
extern char g_char_MoveTargetTracking[30]; // 动态目标跟踪
extern CString g_str_MoveTargetTracking;
extern char g_char_ViewTracking[30]; // 场景跟踪
extern CString g_str_ViewTracking;
extern char g_char_AVTGateSizeBig[30]; // 大波门
extern CString g_str_AVTGateSizeBig;
extern char g_char_AVTGateSizeSmall[30]; // 小波门
extern CString g_str_AVTGateSizeSmall;
extern char g_char_AVTGateSizeMiddle[30]; // 中波门
extern CString g_str_AVTGateSizeMiddle;
extern char g_char_AVTGateSizeAuto[30]; // 自适应波门
extern CString g_str_AVTGateSizeAuto;
extern char g_char_ImgEnhanceON[30]; // 图像增强开
extern CString g_str_ImgEnhanceON;
extern char g_char_ImgEnhanceOFF[30]; // 图像增强关
extern CString g_str_ImgEnhanceOFF;
extern char g_char_AVTGateRight[30]; // 波门右移
extern CString g_str_AVTGateRight;
extern char g_char_AVTGateLeft[30]; // 波门左移
extern CString g_str_AVTGateLeft;
extern char g_char_AVTGateUp[30]; // 波门上移
extern CString g_str_AVTGateUp;
extern char g_char_AVTGateDown[30]; // 波门下移
extern CString g_str_AVTGateDown;
extern char g_char_LRFPowerON[30]; // 激光电源开
extern CString g_str_LRFPowerON;
extern char g_char_LRFPowerOFF[30]; // 激光电源关
extern CString g_str_LRFPowerOFF;
extern char g_char_LRFArmed[30]; // 激光测距开
extern CString g_str_LRFArmed;
extern char g_char_LRFSafe[30]; // 激光测距关
extern CString g_str_LRFSafe;
extern char g_char_LDArmed[30]; // 激光照射开
extern CString g_str_LDArmed;
extern char g_char_LDSafe[30]; // 激光照射关
extern CString g_str_LDSafe;
extern char g_char_LaserNo1[30]; // 激光编码1
extern CString g_str_LaserNo1;
extern char g_char_LaserNo2[30]; // 激光编码2
extern CString g_str_LaserNo2;
extern char g_char_LaserNo3[30]; // 激光编码3
extern CString g_str_LaserNo3;
extern char g_char_LaserNo4[30]; // 激光编码4
extern CString g_str_LaserNo4;
extern char g_char_LaserNo5[30]; // 激光编码5
extern CString g_str_LaserNo5;
extern char g_char_LaserNo6[30]; // 激光编码6
extern CString g_str_LaserNo6;
extern char g_char_LaserNo7[30]; // 激光编码7
extern CString g_str_LaserNo7;
extern char g_char_LaserNo8[30]; // 激光编码8
extern CString g_str_LaserNo8;
extern char g_char_LaserNo9[30]; // 激光编码9
extern CString g_str_LaserNo9;
extern char g_char_LaserNo10[30]; // 激光编码10
extern CString g_str_LaserNo10;
extern char g_char_LaserLoad[30]; // 激光编码加载
extern CString g_str_LaserLoad;
extern char g_char_ICRON[30]; // 低照度增强开
extern CString g_str_ICRON;
extern char g_char_ICROFF[30]; // 低照度增强关
extern CString g_str_ICROFF;
extern char g_char_DefogON[30]; // 透雾开
extern CString g_str_DefogON;
extern char g_char_DefogOFF[30]; // 透雾关
extern CString g_str_DefogOFF;
extern char g_char_EOFocusPlus[30]; // EO远焦
extern CString g_str_EOFocusPlus;
extern char g_char_EOFocusMinus[30]; // EO近焦
extern CString g_str_EOFocusMinus;
extern char g_char_EOZoomOut[30]; // EO视场大
extern CString g_str_EOZoomOut;
extern char g_char_EOZoomIn[30]; // EO视场小
extern CString g_str_EOZoomIn;
extern char g_char_EOLightManual[30]; // EO手动调光
extern CString g_str_EOLightManual;
extern char g_char_EOLightAuto[30]; // EO自动调光
extern CString g_str_EOLightAuto;
extern char g_char_EOLightPlus[30]; // EO亮度+
extern CString g_str_EOLightPlus;
extern char g_char_EOLightMinus[30]; // EO亮度-
extern CString g_str_EOLightMinus;
extern char g_char_EOPowerON[30]; // EO电源开
extern CString g_str_EOPowerON;
extern char g_char_EOPowerOFF[30]; // EO电源关
extern CString g_str_EOPowerOFF;
extern char g_char_EOWDRON[30]; // EO宽动态开
extern CString g_str_EOWDRON;
extern char g_char_EOWDROFF[30]; // EO宽动态关
extern CString g_str_EOWDROFF;
extern char g_char_EOFocusAuto[30]; // EO自动调焦
extern CString g_str_EOFocusAuto;
extern char g_char_EOFocusRealTime[30]; // EO实时调焦
extern CString g_str_EOFocusRealTime;
extern char g_char_IRFocusPlus[30]; // IR远焦
extern CString g_str_IRFocusPlus;
extern char g_char_IRFocusMinus[30]; // IR近焦
extern CString g_str_IRFocusMinus;
extern char g_char_IRFocusAuto[30]; // IR自动调焦
extern CString g_str_IRFocusAuto;
extern char g_char_IRFocusRealTime[30]; // IR实时调焦
extern CString g_str_IRFocusRealTime;
extern char g_char_IRZoomOut[30]; // IR视场大
extern CString g_str_IRZoomOut;
extern char g_char_IRZoomIn[30]; // IR视场小
extern CString g_str_IRZoomIn;
extern char g_char_BHWH[30]; // IR黑白热
extern CString g_str_BHWH;
extern char g_char_IRCalibration[30]; // IR校正
extern CString g_str_IRCalibration;
extern char g_char_IRLightManual[30]; // IR手动调光
extern CString g_str_IRLightManual;
extern char g_char_IRLightAuto[30]; // IR自动调光
extern CString g_str_IRLightAuto;
extern char g_char_IRLightPlus[30]; // IR亮度+
extern CString g_str_IRLightPlus;
extern char g_char_IRLightMinus[30]; // IR亮度-
extern CString g_str_IRLightMinus;
extern char g_char_IRContrastPlus[30]; // IR对比度+
extern CString g_str_IRContrastPlus;
extern char g_char_IRContrastMinus[30]; // IR对比度-
extern CString g_str_IRContrastMinus;
extern char g_char_DDEON[30]; // IR边缘锐化开
extern CString g_str_DDEON;
extern char g_char_DDEOFF[30]; // IR边缘锐化关
extern CString g_str_DDEOFF;
extern char g_char_IRPowerON[30]; // IR电源开
extern CString g_str_IRPowerON;
extern char g_char_IRPowerOFF[30]; // IR电源关
extern CString g_str_IRPowerOFF;
extern char g_char_ImgTypeSet[30]; // 设置图像类型
extern CString g_str_ImgTypeSet;
extern char g_char_ImgFlowSet[30]; // 设置图像码流
extern CString g_str_ImgFlowSet;
extern char g_char_DCWBManual[30]; // DC手动白平衡
extern CString g_str_DCWBManual;
extern char g_char_DCWBAuto[30]; // DC自动白平衡
extern CString g_str_DCWBAuto;
extern char g_char_SingleShoot[30]; // 单拍
extern CString g_str_SingleShoot;
extern char g_char_CC2s[30]; // 两秒连拍
extern CString g_str_CC2s;
extern char g_char_CC4s[30]; // 四秒连拍
extern CString g_str_CC4s;
extern char g_char_CCOverlap[30]; // 保证重叠率连拍
extern CString g_str_CCOverlap;
extern char g_char_CCAutoScan[30]; // 摆扫连拍
extern CString g_str_CCAutoScan;
extern char g_char_DCExposureAuto[30]; // DC自动曝光
extern CString g_str_DCExposureAuto;
extern char g_char_DCExposureManual[30]; // DC手动曝光
extern CString g_str_DCExposureManual;
extern char g_char_DCExposurePlus[30]; // DC曝光+
extern CString g_str_DCExposurePlus;
extern char g_char_DCExposureMinus[30]; // DC曝光-
extern CString g_str_DCExposureMinus;
extern char g_char_DCExposureVHR[30]; // DC速高比曝光
extern CString g_str_DCExposureVHR;
extern char g_char_ServoPowerON[30]; // 伺服电源开
extern CString g_str_ServoPowerON;
extern char g_char_ServoPowerOFF[30]; // 伺服电源关
extern CString g_str_ServoPowerOFF;
//[OTHER]
extern char g_char_LaserChoose[30]; // 未选择激光编码
extern CString g_str_LaserChoose;
extern char g_char_LaserLoadSuccess[30]; // 编码加载成功
extern CString g_str_LaserLoadSuccess;
extern char g_char_LaserLoadFail[30]; // 编码加载失败
extern CString g_str_LaserLoadFail;
// 创建全局WinSoc套接字
extern SOCKET g_socketFH96Data;
// 采集图像
extern bool g_bCaptureImg;
// 互斥对象句柄
extern HANDLE g_hMutex_ImgStitch;
// 定义图像队列
extern std::deque<QBStru> g_StitchImgDeque;
extern BOOL g_bRun;
extern BOOL g_bStop;