#pragma once #include "stdafx.h" #include "GlobalMember.h" // 全局变量 #include "MUDP.h" #include "FrameFKU_Camera.h" #define SAFE_DELETE(p) { if(p) { delete (p); (p) = nullptr; } } #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p) = nullptr; } } extern CFrameFK_U_CAMERA g_FrameCamera; extern CMUDP g_MUDPCamera; extern BOOL g_IsSending; // 获取指定磁盘剩余空间 extern long GetFreeVolumeLen(char *p = "C"); // 功能:获取软件当前工作目录 extern CString GetSoftwareCurrentDirectory(); //功能:在文件夹中查找文件,看其是否存在 extern bool SearchDirectory(const CString &strDir); //功能:计算4个字节的数值 extern unsigned int getFrameLen(BYTE B0, BYTE B1, BYTE B2, BYTE B3); // 获取图像双击点偏移量 extern void CALLBACK GetEOImgCenterOffset(CPoint offset, int flag); // 右键点击可见光或红外,转换为手动跟踪 extern void CALLBACK GetEOIRImgRightButtonDown(int type); // 通过图像控制伺服 extern void CALLBACK GetDistRatioAndAngleThroughImg(double distRatio, double angle); //地图模块回调函数 extern void CALLBACK GetLeadLonLat(double Lon, double Lat, double Alt); // 回放模式输入数据 extern void ReplayInputData(const void* buffer, int length); // UDP 实时收数(来自情报) extern void CALLBACK UDPRevTgtInfo(const void* buffer, int length, UINT32 data); // 数据处理——(线程函数) extern void ProcessData(); // 位置信息结构体解析函数 extern void TransLocationSocketStruct(struSocketProtocal &dst, const struQB_FJ & src); // 复接数据结构体解析函数 extern void TransFJStruct( struTranslateProtocal_FJ &dst, const struProtocal_FJ &src); // 复接数据入队列 extern void PushToFrameDataDeque(const struQB_FJ &TgtLocStru); // 转情报用EO复接数据 extern void TransToEOQBFJ(struQB_FJ &dst, const struTranslateProtocal_FJ &src); // 转情报用IR复接数据 extern void TransToIRQBFJ(struQB_FJ &dst, const struTranslateProtocal_FJ &src); // CH96获取数据 extern void GetFH96DataFromNet(); extern void SocketReceiveFH96Data(const void* buffer, int length); extern void ProcessCH96Data(); // 获取CH96复接数据 extern void TransCH96FJData(Data96TXD &dst, Protocal96TXD &src); // CH96复接数据转FH统型复接数据 extern void TransCH96FJDatatoQBData(struQB_FJ &QB_FJ, Data96TXD &CH96FJ); // CH96解码回调函数 void CH96_h264DecodeResultCallbackFun(unsigned char* data,int width,int height); // 基于飞机位置姿态和目标位置,计算载荷姿态 // 功能:载荷导引,计算载荷姿态角() // 输入: // 1. uavPos:飞机位置,double uavPos[GPS经度,GPS纬度,GPS高度] // 2. tgtPos:目标位置,double tgtPos[GPS经度,GPS纬度,GPS高度] // 3. uavAttitude: 飞机姿态,double uavAttitude[俯仰,滚转,偏航] // 输出: // 1. loadPitch 载荷高低角,单位度 // 2. loadAzimuth 载荷方位角,单位度 // 返回值:计算成功返回true,否则返回false。 extern bool CalLoadAttitudeForLoadGuide(double &loadPitch, double &loadAzimuth, const double *uavPos, const double *tgtPos, const double *uavAttitude); // 获取飞机的经纬高和姿态 extern bool GetUAVLocAndPose(double &UAVLon, double &UAVLat,double &UAVAlt, double &UAVRoll, double &UAVYaw,double &UAVPitch, const struTranslateProtocal_FJ &src); // 转情报用EO复接数据 extern void TransToEOQBFJ(struQB_FJ &dst, const struTranslateProtocal_FJ &src); // 转情报用IR复接数据 extern void TransToIRQBFJ(struQB_FJ &dst, const struTranslateProtocal_FJ &src); // extern double getYaw(double XA, double YA); extern bool CalAnyPtCoordinateWithoutErrorCompensate(double &Lon, double &Lat, double &H, const struQB_FJ *frame, int pt_x, int pt_y); extern void CalLonLatOffset(double &LonOffset, double &LatOffset, const struQB_FJ *frame); //功能3:计算图像中心点经纬度坐标 //输入: 1. frame 输入复接数据 // //输出: 1. Lon 图像中心点经度 // 2. Lat 图像中心点纬度 // 3. H 图像中心点高度 // 4. 返回值:处理成功返回true,失败返回false // 说明:当有激光测距时,对地形无要求,当无激光测距时,定位地形应尽量平坦 extern bool CalImgCenterCoordinate(double &Lon, double &Lat, double &H, const struQB_FJ *frame); //功能4:计算图像中任意点经纬度坐标 //输入: 1. frame 输入复接数据 // 2. pt_x 列坐标 // 3. pt_y 行坐标 // //输出: 1. Lon 经度 // 2. Lat 纬度 // 3. H 高度 // 4. 返回值:处理成功返回true,失败返回false // 说明:当有激光测距时,对地形无要求; // 当无激光测距时,定位地形应尽量平坦,此时,定位误差与目标高程与飞机垂点地面高程之差成正比。 extern bool CalAnyPtCoordinate(double &Lon, double &Lat, double &H, const struQB_FJ *frame, int pt_x, int pt_y); // 功能:释放情报数据 extern void ReleaseQBData(QBStru *pQBData); // 功能:克隆图像数据 extern void CloneImgStru(const ImgStru *src, ImgStru *dst); extern void CloneQBData(const QBStru *src, QBStru *dst); extern BYTE Buffer[512000]; //功能:获取原始视频数据 extern void GetH264VideoDataFromNet(); extern void SocketReceiveH264VideoData(const void* buffer, int length); extern void ProcessH264VideoData();