#include "data_process.h" #include "memory.h" #include #include using namespace std; /*******************************************************************************/ /*******************************************************************************/ /************************************用户接口函数*******************************/ /*******************************************************************************/ /*******************************************************************************/ //数据预处理 int Data_Process::data_preprocess(struct DataRev Data_Input[150]) { beam_count=beam_count+1; //3波束计数 //取波束1数据 存入缓存 暂不处理 if(beam_count%3==1) { beam_index[0]=Data_Input[0].Beam_index; data_num_1=Data_Input[0].Point_Sum; TAS_track_idx = Data_Input[0].TAS_track_index; for (int i=0; i().swap(Data_buffer);//凝聚完毕 清除Data_buffer if (beam_index[0] == DOT_SECTION_1+2 ) { //波束1 // 点迹区1、9 关联航迹区9 , 消亡航迹区9, 起始点迹区8 track_asso.track_asso_process(&point_recv[1-1], &point_recv[9-1], &trust_track[9-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[9-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[8-1], &trust_track, &temp_track[8-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束2 // 点迹区3、4 关联航迹区3 , 消亡航迹区3, 起始点迹区2 track_asso.track_asso_process(&point_recv[3-1], &point_recv[4-1], &trust_track[3-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter );//航迹关联 track_die.track_die_process( &trust_track[3-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[2-1], &trust_track, &temp_track[2-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束3 // 点迹区6、7 关联航迹区6 , 消亡航迹区6, 起始点迹区5 track_asso.track_asso_process(&point_recv[6-1], &point_recv[7-1], &trust_track[6-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter );//航迹关联 track_die.track_die_process( &trust_track[6-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[5-1], &trust_track, &temp_track[5-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); Track_section_sort(); } if (beam_index[0] == DOT_SECTION_2+2 ) { //波束1 // 点迹区1、2 关联航迹区1 , 消亡航迹区1, 起始点迹区9 track_asso.track_asso_process(&point_recv[1-1], &point_recv[2-1], &trust_track[1-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[1-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[9-1], &trust_track, &temp_track[9-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束2 // 点迹区4、5 关联航迹区4 , 消亡航迹区4, 起始点迹区3 track_asso.track_asso_process(&point_recv[4-1], &point_recv[5-1], &trust_track[4-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[4-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[3-1], &trust_track, &temp_track[3-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束3 // 点迹区7、8 关联航迹区7 , 消亡航迹区7, 起始点迹区6 track_asso.track_asso_process(&point_recv[7-1], &point_recv[8-1], &trust_track[7-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[7-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[6-1], &trust_track, &temp_track[6-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); Track_section_sort(); } if (beam_index[0] == 1 ) { //波束1 // 点迹区2、3 关联航迹区2 , 消亡航迹区2, 起始点迹区1 track_asso.track_asso_process(&point_recv[2-1], &point_recv[3-1], &trust_track[2-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[2-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[1-1], &trust_track, &temp_track[1-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束2 // 点迹区5、6 关联航迹区5, 消亡航迹区5, 起始点迹区4 track_asso.track_asso_process(&point_recv[5-1], &point_recv[6-1], &trust_track[5-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[5-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[4-1], &trust_track, &temp_track[4-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); //波束3 // 点迹区8、9 关联航迹区8 , 消亡航迹区8, 起始点迹区7 track_asso.track_asso_process(&point_recv[8-1], &point_recv[9-1], &trust_track[8-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter ); track_die.track_die_process( &trust_track[8-1], Track_die_Index_Output, Track_die_num_Output); track_init.track_init_process_logic( &point_recv[7-1], &trust_track, &temp_track[7-1], Trust_Track_Output, Trust_track_num_Output, Work_Parameter); Track_section_sort(); } } //TAS处理 else if (model==2) { *Trust_track_num_Output=0; //航迹更新数 *Track_die_num_Output=0; //航迹消亡数目 dot_coh_tas.dot_coh_tas_process(&Data_buffer,&point_recv_tas); //凝聚 QVector().swap(Data_buffer);//凝聚完毕 清除Data_buffer track_asso_tas.track_asso_process_tas(&point_recv_tas, //航迹关联 &trust_track, Trust_Track_Output, Trust_track_num_Output, Work_Parameter, TAS_track_idx); QVector().swap(point_recv_tas);//关联完毕 清空point_recv_tas Track_section_sort(); } return 0; } //波束控制 void Data_Process::Beam_Ctrl(struct TrackingBeam *Tracking_beam, struct Track Trust_Track_Output[][10], int *Trust_track_num_Output) { if(beam_count%3==0) { tas_ctrl.tas_ctrl_process(&trust_track,Tracking_beam, Trust_Track_Output, Trust_track_num_Output,Work_Parameter); } else { Tracking_beam->open_flag=0; } } //数据处理参数初始化 int Data_Process::track_process_parameters_initial(struct RadarPara Radar_Parameter) { //变量初始化 Beam_num=Radar_Parameter.Beam_num; //雷达波位数 beam_count=0; //波位计数 memset(beam_index,0,3*sizeof(int)); //三个波位号 //工作参数设置 memcpy(&Work_Parameter, &Radar_Parameter, sizeof(RadarPara)); //初始化容器 for (int i=0;i ()); for (int i=0;i ()); for (int i=0;i> () ); return 0; } //数据处理参数修改 int Data_Process::track_process_parameters_modify(struct RadarPara Radar_Parameter) { memcpy(&Work_Parameter, &Radar_Parameter, sizeof(RadarPara)); return 0; } //手动航迹删除函数 int Data_Process:: track_delete(int delete_track_num, //手动删除的航迹数目 int delete_track_index[]) //手动删除的航迹号 { for (int i=0;i