#ifndef DATA_PROCESS_H #define DATA_PROCESS_H #pragma once #include "data_process_class_dll.h" #include "parameters.h" #include "struct.h" #include "dot_coh.h" #include "dot_coh_tas.h" #include "track_init.h" #include "track_asso.h" #include "track_asso_tas.h" #include "track_die.h" #include "track_die_tas.h" #include "tas_ctrl.h" #include #include #include using namespace Eigen; using namespace std; /********************************** 数据处理类 *************************************************/ class Data_Process : public Data_process_class_dll { public: Data_Process(void) { } //数据预处理函数 int data_preprocess(struct DataRev Data_Input[150]); //航迹处理函数 int track_process( struct Track Trust_Track_Output[MAX_TRACK_NUM][10], //数据处理输出的航迹更新信息 主程序创建全局变量 数据处理函数更新其中数据 int *Trust_track_num_Output, //数据处理后输出的航迹数目 主程序创建全局变量 数据处理函数更新其中数据 int Track_die_Index_Output[], //数据处理后要消亡的航迹 主程序创建全局变量 数据处理函数更新其中数据 int *Track_die_num_Output, //数据处理后要消亡的航迹数目 主程序创建全局变量 数据处理函数更新其中数据 int model ); //波束控制 void Beam_Ctrl(struct TrackingBeam *Tracking_beam, struct Track Trust_Track_Output[][10], int *Trust_track_num_Output); //航迹清空函数 int track_clear_all(void); //手动航迹删除函数 int track_delete(int delete_track_num, //手动删除的航迹数目 int delete_track_index[]); //手动删除的航迹号 //手动转TAS跟踪函数 int tracking_start(int track_index); //需要手动转入TAS跟踪的航迹号 //手动取消TAS跟踪函数 int tracking_stop(int track_index); //需要取消TAS跟踪的航迹号 //手动添加重点目标 int primary_target_add(int track_index); //将指定目标转为重点目标 //手动取消重点目标 int primary_target_cancel(int track_index); //将指定重点目标取消 //手动打跟踪波束 int tracking_point(float Azimuth); //方位角 //参数加载函数(从 TOML 配置文件加载全部工作参数到 rdp_parameter) //参数:parameter_file_path - 配置文件路径 //返回:成功返回 0;失败返回 -1(失败时不改变当前参数) int parameters_reload(const char* parameter_file_path) override; private: std::vector Data_buffer; //接收点迹 TWS 输入凝聚 std::vector Data_buffer_tas; //接收点迹 TAS 输入凝聚 std::vector point_recv; //凝聚后输出的点迹 按点迹区存入 输入航迹关联、起始 std::vector point_recv_tas; //凝聚后输出的点迹 TAS std::vector trust_track; //可靠航迹 按航迹区存入 std::vector > temp_track; //临时航迹 按临时航迹区存入 // 工作参数为全局对象 struct.h::rdp_parameter(由 parameters_reload() 加载),不再作为类成员。 int Beam_num; //波位数 int beam_count; //波位计数 int data_num; //波位1点数 int beam_index[3]; //3个波位号(当前帧) int TAS_track_fingerprint; //TAS数据的目标批号 int Track_Mode; //跟踪模式 1TAS 0TWS int last_beam_num = INT_MAX; //上一个波位号,用于判断是否搜索完一圈 long long latest_timestamp = 0; //最新时间戳 long long point_id = 0; //点迹id long long frame_id = 0; //帧id long long circle_id = 0; //圈id Dot_Coh dot_coh; //点迹凝聚 Dot_Coh_TAS dot_coh_tas; Track_Asso track_asso; //航迹关联 Track_Asso_Tas track_asso_tas; Track_Init track_init; //航迹起始 Track_Die track_die; //航迹消亡 Track_Die_Tas track_die_tas; TAS_Ctrl tas_ctrl; //TAS波束控制 }; #endif // DATA_PROCESS_H