You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

486 lines
19 KiB

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
/// <summary>
/// 战车工作模式
/// </summary>
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 //人工引导
};
/// <summary>
/// 锁定模式
/// </summary>
enum LockModeEnum
{
LockAuto, //自动
LockManu //手动
};
/// <summary>
/// 目标大小
/// </summary>
enum TargetSizeModeEnum
{
TargetSmall, //小目标
TargetMiddle, //中目标
TargetBig //大目标
};
/// <summary>
/// 目标类型
/// </summary>
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;