#pragma once
///
/// 战车工作模式
///
enum ZCWorkModeEnum
{
CheckFly = 0x11, //检飞
TargetSimulate = 0x22, //模靶
Replay = 0x33, //重演
MissileSimulate = 0x44, //模弹
Check = 0x55, //检查
TargetMissileSimulate = 0x66, //电靶
Training = 0x77, //联合训练
Maintenance = 0x88, //维护
Combat = 0xAA, //战斗
PlayBack = 0xEE
};
enum GuideModeEnum
{
Radar, //雷达引导
Manu //人工引导
};
///
/// 锁定模式
///
enum LockModeEnum
{
LockAuto, //自动
LockManu //手动
};
///
/// 目标大小
///
enum TargetSizeModeEnum
{
TargetSmall, //小目标
TargetMiddle, //中目标
TargetBig //大目标
};
///
/// 目标类型
///
enum TargetModeEnum
{
// Bright, //亮目标
// Dark, //暗目标
// All //全目标
air,//空中目标
ground, //地面目标
standPole //立杆靶
};
typedef struct tagS338_SynthesisInfo
{
unsigned char ViewInfo; //视场信息
unsigned char JXCheck; //机芯自检结果
unsigned char SRAMCheck; //SRAM自检结果
unsigned char FLASHCheck; //FLASH自检结果
unsigned char CoolerCheck; //制冷机自检结果
unsigned char DJCheck; //电机自检结果
/***************************
* 时间相关部分
***************************/
bool ParityStandardTag; //时间校正标志
unsigned long long LocalTime; //本地时间(系统时间)
unsigned long long ParityTime; //校正后时间基准
int DiffTimeSpan; //本地时间与作战时间差值
unsigned long long GPSTime; //绝对时间(GPS时间)
unsigned int OriDataTreatEnqueueTime;//原始数据入队列时间
unsigned int OriDataTreatStartTime; //原始数据处理开始时间
unsigned int OriDataTreatEndTime; //原始数据处理结束时间
unsigned int ArithTreatEnqueueTime; //算法入队列时间
unsigned int ArithTreatStartTime; //算法开始时间
unsigned int ArithTreatEndTime; //算法结束时间
/***************************
* 定位定向部分
***************************/
float BD_HAngle; //航向角
float BD_VAngle; //俯仰角
float BD_SAngle; //横滚角
float BD_AzEncoderVal; //码盘值
float BD_YawSpeed; //定位定向航向速度
float BD_NorthSpeed; //北向速度
unsigned short BD_GPS; //-
double BD_GPSTime; //GPS时间
double BD_Longitude; //经度
double BD_Latitude; //纬度
short BD_Height; //高度
unsigned char BD_State; //定位定向系统状态(0x08表示工作正常,0x01表示设备故障)
float MainHAngle; //主转轴基座执行值
unsigned short MainHAngleState; //主转轴基座状态(0x00为异常)
/***************************
* 举升状态部分
***************************/
//LiftingStateEnum LiftingState; //举升状态
unsigned char LiftingState; //举升状态
/***************************
* 倾角传感器部分
***************************/
float QJ_X; //倾角X值
float QJ_Y; //倾角Y值
float QJ_Z; //倾角Z值(为界面手动输入值)
/***************************
* 图像角度及东北偏角度部分
***************************/
float HAngle; //图像方位角
float VAngle; //图像俯仰角
float HAngleSpeed; //图像方位角速度
float VAngleSpeed; //图像俯仰角速度
float EastHAngle; //东北偏坐标方位角
float EastVAngle; //东北偏坐标俯仰角
/***************************
* 系统工作模式部分
***************************/
ZCWorkModeEnum SystemWorkMode; //系统工作模式
GuideModeEnum GuideMode; //引导模式
LockModeEnum TargetLockMode; //目标锁定模式
LockModeEnum MissileLockMode; //导弹锁定模式
unsigned char CFCurWorkmodeType; //伺服当前工作状态
TargetSizeModeEnum TargetSizeMode; //目标大小
//TargetModeEnum TargetMode; //目标类型
TargetModeEnum TargetMode; //目标类型
/***************************
* 导弹模拟部分
***************************/
int MissileSimulateWidth; //模拟导弹宽度
int MissileSimulateHeight; //模拟导弹高度
short MissileSimulateGray; //模拟导弹灰度值
/***************************
* 目标模拟部分
***************************/
int TargetSimulateWidth; //模拟目标宽度
int TargetSimulateHeight; //模拟目标高度
short TargetSimulateGray; //模拟目标灰度值
/***************************
* 雷达导弹目标指示信息
***************************/
bool IndicateInfoReceiveTag; //雷达指示接收状态
bool RadarGuideDataValid; //雷达指示数据是否有效
unsigned char ZCWorkMode; //战车工作状态
unsigned short TargetPNum; //指示目标批号
unsigned char TargetInterupt; //指示目标干扰状态,0xAA为干扰,其他为未干扰
float TargetInfoLength; //来自作战计算机的目标指示信息,目标斜距
float TargetInfoHAngle; //来自作战计算机的目标指示信息,目标方位角
float TargetInfoVAngle; //来自作战计算机的目标指示信息,目标高低角
float TargetInfoLengthSpeed; //来自作战计算机的目标指示信息,目标斜距变化率
float TargetInfoHAngleSpeed; //来自作战计算机的目标指示信息,目标方位角变化率
float TargetInfoVAngleSpeed; //来自作战计算机的目标指示信息,目标高低角变化率
unsigned char TargetChargeCompleteTag; //指示目标交接完成标志
unsigned char TargetMissileFallTag; //指示目标对应导弹脱落状态
unsigned char TargetMissileGainTag; //指示目标对应导弹的指导雷达截获状态
float TargetInfoToMissileLength; //来自作战计算机的目标指示信息,目标斜距(相对于导弹)
float TargetInfoToMissileHAngle; //来自作战计算机的目标指示信息,目标方位角(相对于导弹)
float TargetInfoToMissileVAngle; //来自作战计算机的目标指示信息,目标高低角(相对于导弹)
float TargetInfoToMissileLengthSpeed; //来自作战计算机的目标指示信息,目标斜距变化率(相对于导弹)
float TargetInfoToMissileHAngleSpeed; //来自作战计算机的目标指示信息,目标方位角变化率(相对于导弹)
float TargetInfoToMissileVAngleSpeed; //来自作战计算机的目标指示信息,目标高低角变化率(相对于导弹)
/***************************
* 雷达导弹目标指示转换为伺服的信息
***************************/
float TargetInfoCFLength; //目标指引信息转换为伺服坐标的距离
float TargetInfoCFHAngle; //目标指引信息转换为伺服坐标的方位角
float TargetInfoCFVAngle; //目标指引信息转换为伺服坐标的俯仰角
float TargetInfoToMissileCFLength; //导弹指引信息转换为伺服坐标的距离
float TargetInfoToMissileCFHAngle; //导弹指引信息转换为伺服坐标的方位角
float TargetInfoToMissileCFVAngle; //导弹指引信息转换为伺服坐标的俯仰角
/***************************
* 导弹脱落信息
***************************/
unsigned long long MissileFallTime; //导弹脱落时间
bool MissileFallTag; //导弹脱落标志位
unsigned char MissileAddress; //导弹地址码
/***************************
* 装订信息
***************************/
float StateLongitude; //来自作战计算机的战车经度
float StateLatitude; //来自作战计算机的战车纬度
float StateHeight; //来自作战计算机的战车高度
float StateSAngle; //来自作战计算机的战车横滚角
float StateVAngle; //来自作战计算机的战车俯仰角
float StateHAngle; //来自作战计算机的战车航向角
float StateMPValue; //来自作战计算机的主转轴基座方位码盘值
float StateToBeaconLength; //来自作战计算机的战车相对于信标的距离
float StateToBeaconHAngle; //来自作战计算机的战车相对于信标的方位角
float StateToBeaconVAngle; //来自作战计算机的战车相对于信标的高低角
float StateEnvironmentTemper; //来自作战计算机的环境温度
float StateHumidity; //来自作战计算机的空气湿度
float StateVisibility; //来自作战计算机的能见度
/***************************
* 光电目标发送部分
***************************/
bool TargetMissileSendTimerTag; //数据发送计时器启动情况
int TargetMissileSendDelayTime; //数据发送计时器延时时长
unsigned char DeviceState; //光电设备状态(0xAA代表故障,其他为正常)
unsigned char LocalPNum; //光电目标批号
unsigned char TargetIndictPNum; //光电目标对应的指示批号
unsigned char TargetTraceTag; //光电跟踪目标状态,0xAA为跟踪好,其他为未跟踪好
float TargetHAngle_Geo; //光电跟踪目标在平台地理坐标系下的方位角
float TargetHAngleSpeed_Geo; //光电跟踪目标在平台地理坐标系下的方位角变化率
float TargetVAngle_Geo; //光电跟踪目标在平台地理坐标系下的高低角
float TargetVAngleSpeed_Geo; //光电跟踪目标在平台地理坐标系下的高低角变化率
float TargetHAngle_Coor; //光电跟踪目标在平台坐标系下的方位角
float TargetHAngleSpeed_Coor; //光电跟踪目标在平台坐标系下的方位角变化率
float TargetVAngle_Coor; //光电跟踪目标在平台坐标系下的高低角
float TargetVAngleSpeed_Coor; //光电跟踪目标在平台坐标系下的高低角变化率
unsigned long long TargetRelativeMeasureTime; //目标数据相对测量时刻
unsigned long long TargetAbsoluteMeasureTime; //目标数据绝对测量时刻
unsigned char MissileTrackState; //光电跟踪导弹状态
float MissileHAngle_Geo; //光电跟踪导弹在平台地理坐标系下的方位角
float MissileHAngleSpeed_Geo; //光电跟踪导弹在平台地理坐标系下的方位角变化率
float MissileVAngle_Geo; //光电跟踪导弹在平台地理坐标系下的高低角
float MissileVAngleSpeed_Geo; //光电跟踪导弹在平台地理坐标系下的高低角变化率
float MissileHAngle_Coor; //光电跟踪导弹在平台坐标系下的方位角
float MissileHAngleSpeed_Coor; //光电跟踪导弹在平台坐标系下的方位角变化率
float MissileVAngle_Coor; //光电跟踪导弹在平台坐标系下的高低角
float MissileVAngleSpeed_Coor; //光电跟踪导弹在平台坐标系下的高低角变化率
unsigned long long MissileRelativeMeasureTime; //导弹数据相对测量时刻
unsigned long long MissileAbsoluteMeasureTime; //导弹数据绝对测量时刻
bool TCPCommunicationState;
bool UdpCommunicationState;
bool LiftingCom;
bool LaserCom;
bool ThermalCom;
bool ServoCom;
unsigned short CoolProgress;
unsigned short MachineTemp;
unsigned char GunState;//火炮击发状态
unsigned char DisturbState;//低小慢
unsigned char LineType;//联机方式
unsigned char AzCodeState;//方位码盘状态
float TargetDistance; //目标距离
float BD_HAngleReal; //航向角
float BD_VAngleReal; //俯仰角
float BD_SAngleReal; //横滚角
float LaserDistance; //激光测距距离
unsigned char AbsoluteEffectiveFlag;//绝对时效标志
float TargetDistanceSpeed; //目标距离变化率
unsigned char TargetDistanceState;//目标距离更新状态
unsigned char TargetSource;//目标来源
bool LaserDisUpdate;//激光测距距离是否更新
float FilterTargetHAngle_Geo;
float FilterTargetVAngle_Geo;
float FilterMissileHAngle_Geo;
float FilterMissileVAngle_Geo;
}S338_SynthesisInfo;
////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//定义PC到算法控制命令结构体
typedef struct tagS338GlbPCCommand //BYTES: 15*2=30
{
//指令状态
unsigned short ubCmd; //遥控指令
unsigned short ubCmdLast; //上一个遥控指令
//控制命令
unsigned short unEnRadarGuide; //雷达导引:01雷达导引,0人工导引。
unsigned short unSearchMode; //工作模式:01战斗,02模靶,03电靶,04模弹,05检飞,00无模式。
unsigned short unTrack; //跟踪/解锁:01目标锁定/修正攻击点,02目标解锁,00不响应。
unsigned short unUpdateRrObj; //更新雷达指引目标信息:01更新,00不更新。
unsigned short unUpdateRrMis; //更新雷达指引导弹信息:01更新,00不更新
unsigned char unObjPNum; //雷达指引批号:00无指引信息 01-127雷达指引批号
float unRadarObjAz; //雷达指引信息--目标方位角
float unRadarObjPt; //雷达指引信息--目标俯仰角
float unRadarObjAzDT; //雷达指引信息--目标方位角(大地坐标系)
float unRadarObjPtDT; //雷达指引信息--目标俯仰角(大地坐标系)
float unRadarObjDistance;//雷达指引信息--目标距离
float unRadarMisAz; //雷达指引信息--导弹方位角
float unRadarMisPt; //雷达指引信息--导弹俯仰角
float unRadarMisAzDT; //雷达指引信息--导弹方位角(大地坐标系)
float unRadarMisPtDT; //雷达指引信息--导弹仰角角(大地坐标系)
float unRadarMisDistance;//雷达指引信息--导弹距离
unsigned short unSetLockPosX; //实际锁定点X坐标
unsigned short unSetLockPosY; //实际锁定点Y坐标
unsigned short unSetLockBoxW; //锁定波门宽度
unsigned short unSetLockBoxH; //锁定波门高度
//SINT16 nManualSelectX; //手动选择目标的的锁定点X坐标
//SINT16 nManualSelectY; //手动选择目标的的锁定点Y坐标
}GLB_PCCOMMAND_S338;
//上位机到算法的锁定命令
typedef struct tagLockPoint
{
unsigned char ubTrackCmd;//目标锁定发1 导弹锁定发2 解锁发3 目标修正发4 导弹修正发5
unsigned short nManualSelectX;
unsigned short nManualSelectY;
}LOCKPOINT;
//上位机到算法的模拟数据
typedef struct tagSimulateData
{
float TargetHAngle;
float TargetVAngle;
unsigned short TargetW;
unsigned short TargetH;
float MissileHAngle;
float MissileVAngle;
unsigned short MissileW;
unsigned short MissileH;
}SIMULATEDATA;
//上位机到算法的gps及倾角信息
typedef struct tagGPSAndQjData
{
//GPS数据
float fLogitude;//经度
float fLatitude;//纬度
float fHigh; //高度
//定北定向数据
float OmegaX;
float OmegaY;
float OmegaZ;
//目标GPS数据
float fTargetLogitude;//经度
float fTargetLatitude;//纬度
float fTargetHigh; //高度
}GPSANDQJDATA;
typedef struct tagTime16S //BYTES: 1*2+6*1=8
{
unsigned short year; //年
unsigned char month; //月
unsigned char day; //日
unsigned char hour; //时
unsigned char minute; //分
unsigned char second; //秒
unsigned short milsec; //毫秒 //MSSu, 20150602:毫秒范围为0~999
}TAGTIME16S;
//上位机到算法图像采集时间及伺服信息
typedef struct tagServoAngle
{
TAGTIME16S tTime; //热像仪采集图像时间
float fOriAngle; //方位角度
float fOriAngleSpeed; //方位角速度
float fPitAngle; //俯仰角度
float fPitAngleSpeed; //俯仰角速度
float fFOVAngleRes; //视场角分辨率
}TAGSERVOANGLE;
typedef struct tagTrackTarget
{
unsigned short X;
unsigned short Y;
unsigned short Width;
unsigned short Height;
float SNR;// 新增
}TRACKTARGET;
//定义算法输入结构体,包括
typedef struct tagEORADERINPUT
{
//上位机到算法的控制命令
GLB_PCCOMMAND_S338 GLB_PCCommand;
//上位机软件到PC算法引导方式控制命令
unsigned char GuideCmd;
//上位机软件到PC算法工作方式控制命令;1为战斗模式,2为模靶模式,3为电靶模式,4为模弹模式,5为检飞模式
unsigned char WorkCmd;
//上位机软件到PC算法锁定命令
LOCKPOINT LockPoint;
//上位机软件到PC算法模拟角度或导弹命令
SIMULATEDATA SimulateData;
//上位机软件到PC算法的经纬度和姿态信息(预留接口)
GPSANDQJDATA GpsAndQjData;
//上位机到算法图像采集时间及伺服信息
TAGSERVOANGLE ServoAngel;
//跟踪过程中视场调整标志位
unsigned char missileInView;
//目标跟踪算法DLL传输的跟踪结果
TRACKTARGET TrackTarget;
//导弹跟踪算法DLL传输的跟踪结果
TRACKTARGET TrackMissile;
//导弹跟踪解锁标志位
unsigned char MissUnlockTag;
//目标的平台地理系角度
double TargetEastHAngle;
double TargetEastVAngle;
double MissileEastHAngle;
double MissileEastVAngle;
//主转动基座值
double MainHAngle;
//目标及导弹的平台地理下的方位及俯仰角速度
float TargetHAngleSpeed_Geo;
float TargetVAngleSpeed_Geo;
float MissileHAngleSpeed_Geo;
float MissileVAngleSpeed_Geo;
//导弹脱落标志位
unsigned char MissileFallFlag;
// 外部强制记忆跟踪标记// by wcw04046 @ 2020/06/29
unsigned char Force_MemTrack;
// 攻击方向/类型 00-对空 01-对地 11-对地立靶 by wcw04046 @ 2020/06/29
unsigned char AttactDir;
// 锁定位置(上位机会根据导引阶段调整锁定中心,算法依据调整波门防止大调转丢目标)
int Input_LockX;
int Input_LockY;
}EORADERINPUT;