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.

140 lines
4.9 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 "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();