#pragma once #include "stdafx.h" #include "Decoder.h" // 李振h264解码库 #include "DecoderFactory.h" #include "deque" #include "CUDPSocket.h" #include "CTCPSocket.h" #include 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 g_CH96VideoDeque; // 目标定位用复接数据存储队列 extern std::deque 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 g_StitchImgDeque; extern BOOL g_bRun; extern BOOL g_bStop;