|
|
#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();
|
|
|
|
|
|
|
|
|
|