更新:修改扫描一周完成的判断逻辑,改成用波位号变小来判断。

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-07-07 14:48:56 +08:00
parent e9b8a3245a
commit ae3ef84441
13 changed files with 6556 additions and 8 deletions
Binary file not shown.
+285
View File
@@ -0,0 +1,285 @@
#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
Binary file not shown.
@@ -0,0 +1,26 @@
#ifndef DATA_PROCESS_CLASS_DLL_GLOBAL_H
#define DATA_PROCESS_CLASS_DLL_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(DATA_PROCESS_CLASS_DLL_LIBRARY)
# define DATA_PROCESS_CLASS_DLLSHARED_EXPORT Q_DECL_EXPORT
#else
# define DATA_PROCESS_CLASS_DLLSHARED_EXPORT Q_DECL_IMPORT
#endif
//#if defined(DATA_PROCESS_CLASS_DLL_LIBRARY)
//# define DATA_PROCESS_CLASS_DLLSHARED_EXPORT __declspec(dllexport)
//#else
//# define DATA_PROCESS_CLASS_DLLSHARED_EXPORT __declspec(dllexport)
//#endif
//#if defined(DATA_PROCESS_CLASS_DLL_LIBRARY)
//#define DATA_PROCESS_CLASS_DLLSHARED_EXPORT __declspec(dllexport)
//#else
//#define DATA_PROCESS_CLASS_DLLSHARED_EXPORT __declspec(dllimport)
//#endif
#endif // DATA_PROCESS_CLASS_DLL_GLOBAL_H
Binary file not shown.