#pragma once #ifndef DATA_PROCESS_CLASS_DLL_H #define DATA_PROCESS_CLASS_DLL_H #include "data_process_class_dll_global.h" /***************************************************** 结构体 ********************************************************/ // 输入点迹的数据结构 用户可见 struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT DataRev { float Range; //径向距离 (米) float Azimuth; //方位 (度) float Elevation; //俯仰 (度) float Velocity; //速度 (m/s) float Amplitude; //幅度 float Threshold; //目标门限 float Snr; //目标信噪比 float RCS; //目标RCS float Encoder_value; //码盘值 int CPI_time; //CPI时间 该波位无点迹输入时也需要给出当前时间 int Beam_index_azi_0; //上一个cpi波位 int Beam_index_aiz; //方位波位号(0-24) 该波位无输入点迹时 也需要给出当前波位 int Beam_index_elev; //俯仰波位号(0-13) int PRI; //PRI(us) 给0 int Freq_index; //频点号 给0 int Point_Sum; //输入点迹总数 若该波位无点迹输入 置为0 int Point_Num; //点迹号(1,2,3,4...) int UseFlag; //点迹使用标记 使用1/未使用0 主程序存入数据时置为0 int TAS_track_index; //TAS的航迹号 int point_type; //点迹类型 TAS 1/TWS 0 int pitch_num; // 俯仰波位号 float speed_dim[129]; // 目标的十字星数据,目标点速度维129个点 float range_dim[8]; // 目标的十字星数据,目标点距离维8个点 }; //输出航迹的数据结构 用户可见 struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT Track { float x; //x坐标 float y; //y坐标 float z; //z坐标 float v_x; //x速度 float v_y; //y速度 float v_z; //z速度 float Range; //径向距离 float Azimuth; //方位 float Elevation; //俯仰 float Range_V; //速度 float Amplitude; //幅度 int Track_Index; //航迹号 int Point_Sum; //本条航迹更新点的数目 int Flag_Direction; //方向标志1靠近/0远离 int Flag_Point; //点迹类型1实点/0补点 float x_Predict; //x坐标的一步预测 float y_Predict; //y坐标的一步预测 float z_Predict; //z坐标的一步预测 float Range_Predict; //径向距离的一步预测 float Azimuth_Predict; //方位的一步预测 float Elevation_Predict; //俯仰的一步预测 int Track_Mode; //跟踪模式,TAS 1/TWS 0 float Direction_Angle; //目标航向角 int Target_Type; //目标类型 int point_type; //点迹类型 TAS 1/TWS 0 float range_point; //关联上的点迹信息(距离、方位、俯仰、径向速度) float azi_point; float elev_point; float vr_point; float prf_point; float track_time; //航迹时间 (单位 s) float track_snr; //信噪比 float track_rcs; //rcs int pitch_num; // 俯仰波位号 float speed_dim[129]; // 目标的十字星数据,目标点速度维129个点 float range_dim[8]; // 目标的十字星数据,目标点距离维8个点 }; // 跟踪波束信息的结构体 struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT TrackingBeam { int open_flag; //是否开启 1开启 0不开启 int type; //类型 float Range; //跟踪目标距离 float Azi; //跟踪目标方位 float Elev; //跟踪目标俯仰 int TAS_track_index; //目标批号 }; //引导跟踪信息的结构体 struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT Target_direct_tracking { int Track_ID; //引导目标批号 float Range; //引导目标距离 float Azi; //引导目标方位 float Elev; //引导目标俯仰 int open_flag; // 1 引导跟踪 0 结束引导跟踪 }; // 雷达参数结构体 struct DATA_PROCESS_CLASS_DLLSHARED_EXPORT RadarPara { int Beam_num; //波位数 float Height; //雷达平台高度 (m) float Sys_delay; //系统延迟 (s) float R_TAS_max; //TAS最大距离 (m) float R_TAS_min; //TAS最小距离 (m) float V_TAS_max; //TAS最大速度 (m/s) float V_TAS_min; //TAS最小速度 (m/s) float TAS_Height_1; //TAS跟踪高度1 (m) float TAS_Height_2; //TAS跟踪高度2 (m) float TAS_Height_3; //TAS跟踪高度3 (m) float TAS_Height_4; //TAS跟踪高度4 (m) float TAS_Height_5; //TAS跟踪高度5 (m) int track_prohibite_area_num; //禁止航迹起始的区域数目 float R_max_track_prohibited[30]; //最大距离 (m) float R_min_track_prohibited[30]; //最小距离 (m) float Azimuth_max_track_prohibited[30]; //最大方位角 (度) float Azimuth_min_track_prohibited[30]; //最小方位角 (度) int TAS_prohibite_area_num; //禁止TAS的区域数目 float R_max_TAS_prohibited[30]; //最大距离 (m) float R_min_TAS_prohibited[30]; //最小距离 (m) float Azimuth_max_TAS_prohibited[30]; //最大方位角 (度) float Azimuth_min_TAS_prohibited[30]; //最小方位角 (度) int cfar_th; //cfar门限 int work_mode; //工作模式 0进程 1中程 3远程 int north_angle; //北偏角 float V_MAX; //最大速度 float V_MIN; //最小速度 float DATA_RATE_SHORT; //三种不同模式下的 数据率 float DATA_RATE_MIDDLE; float DATA_RATE_FAR; //数据关联参数 int track_start_point_num; //起批点数(典型值 3或4) float track_start_threshold; //起航波门大小(典型值 3) float track_asso_threshold; //关联波门大小(典型值 3) float track_asso_threshold_tas; //关联波门大小tas (典型值 3) //singer模型机动参数 float Model1_Q_fast; //0.00001 float Model1_Q_slow; //0.00001 float Model2_Q_fast; //0.1 float Model2_Q_slow; //0.001 float Model3_Q_fast; //0.8 float Model3_Q_slow; //0.4 }; class DATA_PROCESS_CLASS_DLLSHARED_EXPORT Data_process_class_dll { public: // Data_process_class_dll(); //数据预处理函数 virtual int data_preprocess(struct DataRev Data_Input[150]) //雷达的输入点迹 主程序创建全局变量 输入数据 { return 0; } //数据处理函数 virtual int track_process(struct Track Trust_Track_Output[][10], //数据处理输出的航迹更新信息 主程序创建全局变量 数据处理函数更新其中数据 int *Trust_track_num_Output, //数据处理后输出的航迹数目 主程序创建全局变量 数据处理函数更新其中数据 int Track_die_Index_Output[], //数据处理后要消亡的航迹 主程序创建全局变量 数据处理函数更新其中数据 int *Track_die_num_Output, //数据处理后要消亡的航迹数目 int model //模式 输入data_preprocess的返回值 ) { return 0; } //波束控制 virtual void Beam_Ctrl(struct TrackingBeam *Tracking_beam, struct Track Trust_Track_Output[][10], int *Trust_track_num_Output) { } //引导跟踪处理函数 virtual int direct_tracking_process(struct Target_direct_tracking Target_direct_info, //引导信息 struct DataRev Data_Input[150], //雷达的输入点迹 struct Track Trust_Track_Output[][10], //数据处理输出的航迹更新信息 主程序创建全局变量 数据处理函数更新其中数据 int *Trust_track_num_Output, //数据处理后输出的航迹数目 主程序创建全局变量 数据处理函数更新其中数据 int Track_die_Index_Output[], //数据处理后要消亡的航迹 主程序创建全局变量 数据处理函数更新其中数据 int *Track_die_num_Output, //数据处理后要消亡的航迹数目 struct TrackingBeam *Tracking_beam //波束控制信息 ) { return 0; } //航迹清空函数 virtual int track_clear_all(void) { return 0; } //手动航迹删除函数 virtual int track_delete(int delete_track_num, //手动删除的航迹数目 int delete_track_index[]) //手动删除的航迹号 { return 0; } //手动转TAS跟踪函数 virtual int tracking_start(int track_index) //需要手动转入TAS跟踪的航迹号 { return 0; } //手动打跟踪波束 virtual int tracking_point(float Azimuth) //方位角 { return 0; } //参数设置初始化函数 virtual int track_process_parameters_initial(struct RadarPara Radar_Parameter) { return 0; } //参数设置修改函数 virtual int track_process_parameters_modify(struct RadarPara Radar_Parameter) { return 0; } }; //工厂类 用户可见 class DATA_PROCESS_CLASS_DLLSHARED_EXPORT Data_Process_Factory { public: static Data_process_class_dll *GetB(); //创建 static void Destroy(); //销毁 private: static Data_process_class_dll *p; }; #endif // DATA_PROCESS_CLASS_DLL_H