2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
621 lines
35 KiB
C++
621 lines
35 KiB
C++
#ifndef _CommDef_H_
|
||
#define _CommDef_H_
|
||
|
||
#define TEST_OFFSET_RAM 0x00000000 //(1024*1024*1024-TEST_BUFF_LEN)
|
||
#define MAX_UP_SIZE 20*1024*1024
|
||
#define MAX_FRAME_LENGTH 32768 // 每包最大128字节有效数据
|
||
#define BUFF_SIZE 1040
|
||
|
||
#ifndef _byte_def_
|
||
#define _byte_def_
|
||
typedef unsigned char BYTE, Byte, byte;
|
||
#endif
|
||
|
||
#include <thread>
|
||
#include <chrono>
|
||
using namespace std;
|
||
|
||
#include <QString>
|
||
#include <QSerialPort>
|
||
|
||
|
||
// 像素类型
|
||
|
||
/*
|
||
* @class Settings
|
||
* @brief 串口参数设置
|
||
*
|
||
* @param name 串口名称
|
||
* @param baudRate 波特率
|
||
* @param stringBaudRate 波特率字符串
|
||
*/
|
||
struct ComSettings
|
||
{
|
||
QString name;
|
||
qint32 baudRate;
|
||
QString stringBaudRate;
|
||
QSerialPort::DataBits dataBits;
|
||
QString stringDataBits;
|
||
QSerialPort::Parity parity;
|
||
QString stringParity;
|
||
QSerialPort::StopBits stopBits;
|
||
QString stringStopBits;
|
||
};
|
||
|
||
|
||
|
||
typedef enum tagSTREAM_TYPE
|
||
{
|
||
ST_FILE = 1, //文件流
|
||
ST_DEV = 2 //设备流
|
||
} STREAM_TYPE;
|
||
|
||
typedef struct tagGuideInfo
|
||
{
|
||
double m_hgj; //横滚角
|
||
double m_fyj; //俯仰角
|
||
double m_ds; //地速
|
||
double m_lng; //飞机经度
|
||
double m_lat; //飞机纬度
|
||
double m_zhx; //真航向
|
||
double m_dxsd; //东向速度
|
||
double m_bxsd; //北向速度
|
||
double m_txsd; //天向速度
|
||
double m_qygd; //惯性气压高度
|
||
double m_hzjsl; //横轴角速率
|
||
double m_zzjsl; //纵轴角速率
|
||
double m_fxzjsl; //法向轴角速率
|
||
int m_hig1; //无线电高度1
|
||
char m_high1Flag;//无线电高度1有效无效标示
|
||
int m_hig2; //无线电高度2
|
||
char m_high2Flag;//无线电高度1有效无效标示
|
||
int m_testMode;
|
||
} GuideInfo;
|
||
|
||
|
||
typedef struct tagBejTime
|
||
{
|
||
short m_year;
|
||
short m_month;
|
||
short m_day;
|
||
short m_hour;
|
||
short m_min;
|
||
short m_second;
|
||
short m_mis;
|
||
} BejTime;
|
||
|
||
|
||
typedef struct tagSourceSel
|
||
{
|
||
short m_lzState;
|
||
short m_zc;
|
||
|
||
int m_hig1; // 左驾状态 1,无线电高度1; 2,无线电高度2; 0,其他高度
|
||
int m_hig2; // 右驾状态 1,无线电高度1; 2,无线电高度2; 0,其他高度
|
||
|
||
} SourceSel;
|
||
|
||
// pcie驱动类型
|
||
typedef enum tagPCIE_DRIVER
|
||
{
|
||
DR_JunGo = 0, // 旧驱动
|
||
DR_XDMA = 1, // 新驱动
|
||
|
||
} DRIVER_TYPE ;
|
||
|
||
#ifndef _ConstVariant_
|
||
#define _ConstVariant_
|
||
const int c_nRMemSize = 16 * 1024;//16 * 1024;
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
/************************************************
|
||
**调光算法设置信息
|
||
************************************************/
|
||
typedef struct tagTG
|
||
{
|
||
int Y8MapIdx;
|
||
//去锅盖
|
||
bool DeGuoGaiArith;
|
||
bool GuoGaiModel;
|
||
|
||
//时域滤波
|
||
bool IsTimeFilter;
|
||
int TFSigma;
|
||
|
||
//竖纹
|
||
int DestripArithIdx;
|
||
int StripWeight;
|
||
int StripStd;
|
||
|
||
//去噪
|
||
int DenoiseArith;
|
||
int DenoiseStd;
|
||
|
||
//增强
|
||
int DDEArith;
|
||
int DDEParam;
|
||
int IDEArith;
|
||
//bool CalcNUC = false;
|
||
int FlagT;
|
||
//bool CalcSNR = false;
|
||
|
||
bool DeBadPixel;
|
||
bool Clahe;
|
||
unsigned short* GuogaiB;
|
||
|
||
tagTG()
|
||
{
|
||
Y8MapIdx = 0;
|
||
DeGuoGaiArith = false;
|
||
GuoGaiModel = false;
|
||
IsTimeFilter = false;
|
||
TFSigma = 10;
|
||
DestripArithIdx = 0;
|
||
StripWeight = 3700;
|
||
StripStd = 50;
|
||
DenoiseArith = 0;
|
||
DenoiseStd = 50;
|
||
DDEArith = 0;
|
||
DDEParam = 1;
|
||
IDEArith = 0;
|
||
FlagT = 0;
|
||
DeBadPixel = false;
|
||
Clahe = false;
|
||
GuogaiB = NULL;
|
||
}
|
||
} TG;
|
||
|
||
// 解析数据类型
|
||
enum enumParamsParser
|
||
{
|
||
eParamsParser_FPGA = 1, // FPGA数据
|
||
eParamsParser_Algorithm_NaviInfo = 2, // 算法参数:惯导信息
|
||
eParamsParser_Algorithm_CtrlParams = 3, // 算法参数:算法控制参数
|
||
eParamsParser_Algorithm_SensorParams = 4, // 算法参数:传感器标定参数
|
||
eParamsParser_Algorithm_WarningInfos = 5, // 算法参数:告警信息
|
||
eParamsParser_Algorithm_LaserWarningInfo_01 = 6, // 算法参数:激光告警信息1
|
||
eParamsParser_Algorithm_LaserWarningInfo_02 = 7, // 算法参数:激光告警信息2
|
||
eParamsParser_DSP = 8 // DSP数据
|
||
};
|
||
|
||
// 注入数据类型
|
||
enum enumParamsEncapsulater
|
||
{
|
||
eParamsEncapsulater_Algorithm_NaviInfo = 1, // 算法参数:位置姿态
|
||
eParamsEncapsulater_Algorithm_SourceSlect = 2, // 算法参数:源数据选择
|
||
eParamsEncapsulater_Algorithm_BeiJingTime = 3, // 算法参数:北京时间
|
||
eParamsEncapsulater_Algorithm_AirData = 4, // 算法参数:大气机数据
|
||
eParamsEncapsulater_Algorithm_CtrlParams = 5, // 算法参数:算法控制参数
|
||
eParamsEncapsulater_Algorithm_SensorParams = 6, // 算法参数:传感器标定参数
|
||
};
|
||
|
||
/*
|
||
* 参数解析相关结构体定义
|
||
*/
|
||
//1.2惯导参数结构体,包括时间日期信息 90字节
|
||
#pragma pack(push,1)
|
||
typedef struct tagDateTime
|
||
{
|
||
unsigned char ucYear; // 年
|
||
unsigned char ucMonth; // 月
|
||
unsigned char ucDay; // 日
|
||
unsigned char ucHour; // 时
|
||
unsigned char ucMinute; // 分
|
||
unsigned char ucSecond; // 秒
|
||
} DATE_TIME;
|
||
#pragma pack(pop)
|
||
|
||
#pragma pack(push,1)
|
||
typedef struct tagNavigateGesturePara
|
||
{
|
||
//10+4+60+16=90;96
|
||
double dLatitude; //纬度,单位°
|
||
double dLogitude; //经度,单位°
|
||
float fAltitudeHeight; //(绝对气压高度)海高,单位m
|
||
float fRelativeHeight; //相对气压高度,单位m
|
||
float fInerAtmoHeight; //惯性气压高度,单位m
|
||
float fRadioHeight1; //无线电高度1,单位ft
|
||
float fRadioHeight2; //无线电高度2,单位ft
|
||
float fPitchingAngle; //俯仰角,单位°
|
||
float fCircumrotateAngle; //横滚角,单位°
|
||
float fDeflexionAngle; //真航向角,单位°
|
||
float fSpeed; //地速,单位km/h
|
||
float fNorthDirecSpeed; //北向速度,单位km/h
|
||
float fWestDirecSpeed; //东向速度,单位km/h
|
||
float fVertialDirecSpeed; //天向速度,单位m/s
|
||
float fCircumrotateAngleVelocity; //横滚角速率(机体系纵轴速率),单位°/s
|
||
float fPitchingAngleVelocity; //俯仰角速率(机体系横纵速率),单位°/s
|
||
float fDeflexionAngleVelocity; //真航向角速率(机体系法向轴速率),单位°/s
|
||
char cTestModeFlag; //工作模式
|
||
char cSundercarriage; //起落架信号 2地面 1空中 其他无效
|
||
char cMasterOrSlave; //主从模式
|
||
char cRadioHeightFlag; //无线电高度有效标识
|
||
unsigned char ucYear;
|
||
unsigned char ucMonth;
|
||
unsigned char ucDate;
|
||
unsigned char ucHour;
|
||
unsigned char ucMinute;
|
||
unsigned char ucSecond;
|
||
unsigned int uiInsFrmCnt; //惯导帧计数
|
||
} NAVIGATE_GESTURE_PARA;
|
||
#pragma pack(pop)
|
||
|
||
//1.3定义算法控制参数结构体
|
||
#pragma pack(push,1)
|
||
typedef struct tagArithCtrlPara
|
||
{
|
||
//319;344
|
||
//阈值设置1 8
|
||
short sDisInMidNum; //中间消失的帧数
|
||
short sYMinPixelNum; //目标Y轴运动的大小
|
||
short sContinuePreTargetNum; //连续最大预测目标个数
|
||
short sDisPearAlarmFrmNum; //消失告警的帧数
|
||
|
||
//阈值设置2 6
|
||
short bNucArithSwitch; //自适应本底校正开关
|
||
short sExistFrmThres; //判据的目标最长存在的帧数阈值
|
||
short sSudIntensityChgT; //两帧之间灰度变化大于300认为有灰度的忽然变化
|
||
|
||
//阈值设置3 10
|
||
short sJudgeMovFrmThres; //判断目标运动的最小帧数= 11
|
||
short sPipeTargetAlarmLen; //进行决策的最少帧数,0.1秒的反应时间对应的帧数= 35;复用能量明显变化下限阈值35
|
||
short sSpeedForConcentrative; //m/S,速度阈值,大于等于该阈值进入作战模式
|
||
short sSpeedForTest; //m/s,速度阈值,小于该阈值进入地面测试模式
|
||
short sSNRChangeT; //管道中每隔2帧信噪比变化大于15认为有变化
|
||
|
||
//阈值设置4 8
|
||
short sGDK1; //高度区间端点4 的g_fGDK值
|
||
short sGDK2; //高度区间端点3 的g_fGDK值
|
||
short sGDK3; //高度区间端点2 的g_fGDK值
|
||
short sGDK4; //高度区间端点1 的g_fGDK值
|
||
|
||
//阈值设置5 8
|
||
short sChangeGDKHigh1; //高度区间端点
|
||
short sChangeGDKHigh2; //自适应gdk高度下限
|
||
short sChangeGDKHigh3; //高度告警范围下限
|
||
short sChangeGDKHigh4; //高度告警范围上限
|
||
|
||
//阈值设置6 4
|
||
short sTestGDK; //地面测试模式下和空闲模式的g_fGDK值
|
||
short sHighSkyGDK; //高度大于5000时的g_fGDK取值
|
||
|
||
//阈值设置7 12
|
||
unsigned int uiNUCStep; //自适应本底校正学习步长
|
||
unsigned int uiNUCStudyAngle; //进行自适应本底学习的航姿变化角度阈值
|
||
unsigned int uiNUCHigh; //采集本底的高度阈值
|
||
|
||
//阈值设置8 14
|
||
float fDefAngleChgThresh; //影响坐标变化的航向角变化量
|
||
float fPitAngleChgThresh; //影响坐标变化的俯仰角变化量
|
||
float fCirAngleChgThresh; //影响坐标变化的横滚角变化量
|
||
short sGndDispAbsPixel; //地面状态下判断运动应当移动的像素个数
|
||
|
||
//阈值设置9 16
|
||
short sMoveDevThres; //运动判断时的帧间参考块方差之差的阈值//不使用= 500
|
||
short sMoveAverThres; //运动判断时的帧间参考块均值之差的阈值//不使用= 30
|
||
float fAverWeight; //判断邻域中心点最大变化量大于总次数的百分比//不使用= (float)0.5
|
||
float fDevWeight; //判断邻域方差最大变化量大于总次数的百分比//不使用= (float)0.3
|
||
float fResearchWeightforGDK; //二次搜索的权重= (float)0.6
|
||
|
||
//阈值设置10 14
|
||
short sJudgeIntensityFrmThres; //判断目标强度变化的最小帧数= 11
|
||
short sMarginsNum; //边缘像素个数 g_sMarginsNum= 3
|
||
int lBgkDevSmooth; //背景方差对大值小于该阈值认为平坦g_lBgkDevSmooth//不使用= 5000
|
||
short sTargetMaxPixel; //目标最大面积数g_sTargetMaxPixel= 15
|
||
float fRectRatio; //矩形度阈值g_fRectRatio= 3.5
|
||
|
||
//阈值设置11 10
|
||
short sContinuePreTargetNumGnd; //地面测试模式下的最大连续预测帧数= 15
|
||
short sYMinPixelNumGnd; //地面测试模式下判断目标沿垂直方向运动的像素个数阈值= 3
|
||
unsigned short usDelayChangeNum; //地面测试模式下的判断静止不动点的考察帧数= 50;//150
|
||
unsigned short usIsBpContinueNoMoveFrm; //判断坏点时连续没运动的帧数阈值= 100
|
||
unsigned short usClrPipeContinueReSearchFrm; //连续二次搜索清零的帧数阈值= 40
|
||
|
||
//阈值设置12 10
|
||
unsigned short usIsSameTargetThreshold; //在拼接重叠区域判断是否为同一目标的距离阈值= 2//4
|
||
unsigned short usSearchRadius; //搜索半径//不使用= 7//5
|
||
short sGndMaxDispAbsPixel; //地面状态下判断运动应当移动的最大像素个数//不使用= 1
|
||
unsigned short usGndLabelSize; //地面状态下小目标周围标记区域大小= 5
|
||
unsigned short usFightLabelSize; //作战状态下小目标周围标记区域大小= 9
|
||
|
||
//阈值设置13 16
|
||
float fJugMovMinDispAbs; //判断运动的最小绝对位移 = 1
|
||
float fJugMovMinDispAbsJs; //判断运动的最小经过惯导解算后的绝对位移 = 2.5//3.38//3;
|
||
short sContinueMoveFrmThr; //判断运动的连续运动帧数阈值 = 4//3;
|
||
short sPipePreMinTotFrm; //进行管道预测的管道最小总帧数//不使用 = 10//5
|
||
short sPipePreMinUnpreFrm; //进行管道预测的管道最小非预测帧数//不使用 = 4//5//2
|
||
short sPipePreMinUnpreDis; //进行管道预测的管道最小非预测帧间隔//不使用 = 3
|
||
|
||
//阈值设置14 14
|
||
short sPipePreMaxUnpreDis; //进行管道预测的管道最大非预测帧间隔//不使用 = 12//15//10
|
||
short sPipePreMaxContiuPreFrm; //进行管道位置预测时的最大连续预测帧数//不使用 = 2
|
||
short sEdgeContinuePreFrm; //边缘越测帧数 = 3
|
||
short sContinueUnFstFindNum; //连续非一次检测到目标的帧数阈值//不使用 = 40
|
||
short sMaxNgErrFrm; //惯导连续异常帧数阈值 = 10
|
||
float fHypoGDKWeight; //次大值gdk权重= 5/10.0
|
||
|
||
//阈值设置15 18
|
||
short sContinueUnFstFindNumGnd; //地面模式下连续非一次检测到目标的帧数阈值//不使用 = 15
|
||
float fPitAngVelocityThresh; //俯仰角速率阈值 = 3.0
|
||
float fCirAngVelocityThresh; //横滚角速率阈值 = 3.0
|
||
float fDefAngVelocityThresh; //真航向角速率阈值 = 3.0
|
||
unsigned short usContinueUnStableFlyFrmThresh; //判断飞机是否大机动飞行的帧数阈值 = 3
|
||
unsigned short usJudgePipeJumpThres; //判断管道是否跳变的位移量阈值 = 3
|
||
|
||
//阈值设置16 10
|
||
float fSpeedMin; //速度最小值 = 100/100
|
||
short sHistTotalNumMin; //进入判断的历史帧数最小值 = 20
|
||
short sHistPreNum; //进入判断的历史预测帧数最大值 = 10
|
||
short sHistTotalNumMax; //超过时间不进行判断//不使用 = 200
|
||
|
||
//阈值设置17 11
|
||
short sMinDisp; //目标解算前解算后的位移阈值 = 20
|
||
float fSpeedChg; //前后半段平均速度变化阈值 = 6/10
|
||
float fSizeChg; //前后半段平均大小变化阈值 = 10/10
|
||
char cUseGndApproach; //是否使用地面逼近状态0或1//不使用 = 0
|
||
|
||
//阈值设置18 14
|
||
float fSASNRThes; //突然出现信噪比阈值 = 80/10
|
||
unsigned char ucGndPitchChgThes; //地面测试模式1下判断垂直方向运动量的俯仰角变化阈值(单位为度) = 3
|
||
unsigned char ucGndDisMoreTimesThes; //地面测试模式下绝对位移量变大的次数阈值 = 5
|
||
short sContinueBpFrm; //判断坏点时的连续符合条件帧数阈值 = 100
|
||
short sCleanAdvPipeFrm; //清空大管道的帧数阈值 = 250
|
||
char cSetTestModeSta; //设置作战模式状态,2(地面观测KKDD),3(逼近环境试验模拟目标),4(地面观测HJD),其他表示地面作战模式1,默认为1
|
||
char cSetConcentrativeModeSta;
|
||
char cAlarmFlag;
|
||
char cNgDelayFrm; //惯导延迟帧数 = 10
|
||
|
||
//阈值设置19 12
|
||
short sBlockMeanFastChgNumThres; //块均值快速变化的分块个数阈值 = 60
|
||
short sBlockMeanChgThres; //判断分块均值变化很大的阈值 = 1000
|
||
short sBlockMeanHugeThres; //判断分块灰度值很大的阈值 = 2500
|
||
short sJudgeDecoyIntensityThres; //判断干扰弹管道的灰度阈值 = 1000
|
||
short sNewSubPipeNumThres; //判断干扰弹需要的最近新出现的管道个数阈值 = 5
|
||
short sLocalNewSubPipeNumThres; //判断干扰弹需要的局部小范围最近新出现的管道个数阈值 = 5
|
||
|
||
//阈值设置20 12
|
||
char cJudgeDecoyWideAngleThres; //较宽范围统计新出现的集中管道的俯仰、方位角度阈值 = 30
|
||
char cJudgeDecoyNarrowAngleThres; //较小范围统计新出现的集中管道的俯仰、方位角度阈值 = 20
|
||
short sContinuJudgeFrmThres; //连续判断为干扰弹的帧数阈值 = 3
|
||
short sContinuDisJudgeFrmThres; //退出判断为干扰弹的帧数阈值 = 500
|
||
short sConfirmFlareFrmThres; //判断是否为太阳耀斑的连续帧数阈值 = 3
|
||
float fFlareDisThres; //耀斑距离太阳-图像中心连线距离阈值设定为4个像素 = 40/10
|
||
|
||
//阈值设置21 12
|
||
char cKkddThreatPitchThresUp; //空空导弹威胁区域俯仰角上边界(单位度) = 25
|
||
char cKkddThreatPitchThresDown; //空空导弹威胁区域俯仰角下边界(单位度) = -25
|
||
char cKkddLowThreatAzimuthRangeThres; //空空导弹方位低威胁区域范围(单位度) = 30
|
||
char cGrndKkddThreatPitchThres; //地面观测空空导弹威胁区域俯仰角边界(单位度) = 15
|
||
char cGrndKkddLowThreatPitchThresUp; //地面观测空空导弹低威胁区域俯仰角上边界(单位度) = 15
|
||
char cGrndKkddLowThreatPitchThresDown; //地面观测空空导弹低威胁区域俯仰角下边界(单位度) = 5
|
||
unsigned char ucNearHorizonAxisYThres; //判断是否属于天地线附近的三维y方向距离阈值(单位像素) = 50
|
||
char cAlarmFlagFireKKDD; //KKDD决策开关 = 1
|
||
char cAlarmFlagFireDKDD; //DKDD决策开关 = 0
|
||
char cAlarmFlagFireHJD; //HJD决策开关 = 0
|
||
unsigned char ucBgCleanStdThres; //判断背景是否干净的标准差阈值 = 20
|
||
unsigned char ucPointTgtSizeThres; //工作状态21下判断是否为点目标的大小阈值 = 4
|
||
|
||
//阈值设置22 14
|
||
unsigned char ucPosFluctCntThres; //统计位置波动的次数阈值 = 6
|
||
unsigned char ucPosFluctFrmThres; //统计位置波动的帧数阈值 = 100
|
||
unsigned char ucSizeFluctCntThres; //统计尺寸波动的次数阈值 = 5
|
||
unsigned char ucSizeFluctFrmThres; //统计尺寸波动的帧数阈值 = 100
|
||
unsigned short usAddOilEmDelayTime; //判断是否开加力的帧数,默认150帧,3s钟判断//V2.08暂时关闭加力判断,改为30000
|
||
unsigned char ucStdMutiple; //判断是否开加力时计算灰度与信噪比突变阈值的标准差倍数阈值,默认4倍的标准差
|
||
unsigned char ucSlopeThres; //判断能量快速增加的斜率阈值 = 100
|
||
short sDiffMaxMin; //判断能量快速增加的灰度范围阈值 = 800
|
||
float fPPGuideThres; //疑似比例导引阈值 = 25/10
|
||
|
||
//阈值设置23 14
|
||
short sJudgeReflectObjFrmStep; //判断是否为太阳反光造成的管道目标的统计步长 = 5
|
||
float fReflectStdThres; //反光目标灰度波动标准差阈值 = 600/10
|
||
short sContinueSaturateFrmThres; //连续饱和帧数阈值,超过视为反光目标 = 3
|
||
short sReflectRadius; //与理论计算反光点相差3个像素以内的点确定为反光 = 3
|
||
short sReflectIntensityRiseThres; //同一目标灰度上升阈值 = 3000.0
|
||
short sReflectObjMinusBkThres; //同一目标同一帧内目标与背景灰度差阈值 = 7000.0
|
||
|
||
//阈值设置24 16
|
||
float fTgtTooFastSpeedSquareThres; //判断目标运动太快的速度平方阈值 = 36/100
|
||
float fHjdMaxDispAbsThres; //判断火箭弹的最大位移阈值 = 35/10
|
||
short sHjdExistFrmThres; //判断火箭弹时的存在帧数阈值 = 75
|
||
unsigned char ucDkdDistanceThres; //地空导弹告警距离阈值(km) = 21
|
||
unsigned char ucHy6DistanceThres; //Hy6告警距离阈值(km) = 6
|
||
unsigned char ucHy6HighThres; //Hy6告警高度阈值(km) = 8
|
||
unsigned char ucMoveXYDiffThres; //地面看空空弹时判断Y方向为主要运动方向的阈值 = 1
|
||
unsigned char ucAzimuthChgLittleThres; //地面看空空弹时判断方位角变化很小的像素阈值 = 3
|
||
char cPitchChgBiggerThres; //地面看空空弹时判断俯仰角变大的像素阈值 = 1
|
||
|
||
//阈值设置25 15
|
||
char cAlarmFlagGrndDD; //GrndDD决策开关 = 1
|
||
char cAlarmFlagApproach; //Approach决策开关 = 0
|
||
unsigned short usBeginAlarmSecond; //最早开始ALarm的时间(s),包括制冷时间 = 1
|
||
unsigned short usBeginAlarmSecondFire; //21模式下最早开始ALarm的时间(s),包括制冷时间 = 1
|
||
unsigned short usBeginAlarmSecondGrndDD; //22模式下最早开始ALarm的时间(s),包括制冷时间 = 1200
|
||
unsigned char ucGrndKkddThreatXRangeThres; //地面观测空空导弹方位威胁区域范围(单幅图像x方向上的像素个数) = 64
|
||
char cKkdPtHighThreatPitchRange; //22模式下高威胁区俯仰方向上范围(距离俯仰的中心位置的角度) = 5
|
||
unsigned char ucPipeBkgStdHighThres; //判断管道背景是否太大的阈值 = 25
|
||
float fDiffMulti; //判断能量快速增加的与初始目标背景灰度差的倍数 = 25/10
|
||
|
||
//阈值设置26 13
|
||
unsigned short usKkddDecisFlag; //KKDD决策开关
|
||
unsigned short usKkddPartLimitFlag; //KKDD限制开关
|
||
short sEarly3GrayDiffMaxThres; //管道前三帧目标灰度差最大值阈值 = 3500
|
||
short sEarly3GrayDiffMinThres; //管道前三帧目标灰度差最小值阈值 = 2000
|
||
unsigned char ucAlarmFrmMinThres; //告警响应帧数下限 = 45
|
||
char cJudgeDecoySwitch; //干扰弹判断开关 = 1
|
||
unsigned short ucG26TestThres2; //备用 外场模式设置高威胁区域(分块)816 分块上边界 816%100 = 8 ;分块下边界 616/100 = 16 20200730 lxm
|
||
char cPeakEngryFrmThres; //峰值能量判断帧数阈值 = 11
|
||
|
||
//阈值设置27 14
|
||
unsigned short usSkyLineDetectUp; //天地线检测上边界
|
||
unsigned short usSkyLineDetectThres; //天地线检测阈值
|
||
short sPipeAlarmMinFrm; //地面观测火箭弹输出告警的最少帧数
|
||
float sBlockThreMultiple; //分块设置小目标检测阈值 25/10
|
||
unsigned char ucModeSwitchFlag; //地面观测HJD模式和实验室模式手动切换标志,1:24模式 0:实验室模式
|
||
unsigned char ucOpenSkyLineDetcFlag; //是否开启天地线检测矫正
|
||
char cBackGroundFliterFlag; //是否进行滤波背景抑制的标识位
|
||
char cGrndHJDMaxMoveDispThres; //地面观测火箭弹最大位移量 15
|
||
|
||
} ARITH_CTRL_PARA;
|
||
#pragma pack(pop)
|
||
|
||
//定义传感器参数结构体(几路传感器对应几组!!!!)
|
||
#pragma pack(push,1)
|
||
typedef struct tagSensorCalibrtPara
|
||
{
|
||
//20;40
|
||
float fAngFY; //安装俯仰角,弧度制
|
||
float fAngPZ; //安装偏转角,弧度制
|
||
float fAngXZ; //安装旋转角,弧度制
|
||
float fFisheyePara; //鱼眼映射参数
|
||
short sCamCenOfsetX; //成像中心水平偏移像素
|
||
short sCamCenOfsetY; //成像中心垂直偏移像素
|
||
} SENSOR_CALIBRT_PARA;
|
||
#pragma pack(pop)
|
||
|
||
//1.4定义输出告警目标个数结构体
|
||
#define CAMERALINK_NUM 2 //传感器数量
|
||
#pragma pack(push,1)
|
||
typedef struct tagTargeTPipeAlarmNum
|
||
{
|
||
//26;26
|
||
unsigned short usTotalNumInSingleFrame; //四幅图像单帧目标总个数
|
||
unsigned short usTargetNumInSingleFrame[CAMERALINK_NUM]; //单路图像单帧目标个数
|
||
unsigned short usOccupyPipeNum; //大管道占用总数
|
||
unsigned short usOccupySubPipeNum; //小管道占用总数
|
||
unsigned short usTotalAlarmNum; //当前帧告警目标总个数
|
||
unsigned short usAlarmSum; //告警目标个数
|
||
unsigned short usAlarmCount; //告警次数统计
|
||
unsigned short usOutputAlarmSum; //当前帧上报告警目标总个数
|
||
unsigned short usMissleCounter; //导弹目标索引的计数
|
||
unsigned short usAlarmSynFrmCnt; //上报同步标记
|
||
unsigned short usContiueNoAlarmOutput; //连续没有上报告警次数
|
||
short sAlarmType; //告警目标类型
|
||
} TARGET_PIPE_ALARM_NUM_PARA;
|
||
#pragma pack(pop)
|
||
|
||
//1.6定义解析DSP版本信息结构体
|
||
#define MAX_ALARM_NUM 32 // 最大告警目标数
|
||
|
||
#pragma pack(push,1)
|
||
typedef struct tagPoint2S
|
||
{
|
||
short x; // 二维图像x坐标
|
||
short y; // 二维图像y坐标
|
||
} POINT_2S;
|
||
|
||
typedef struct tagAlarmFrame
|
||
{
|
||
unsigned int uiAlarmNum; // 告警目标数
|
||
POINT_2S stPos[MAX_ALARM_NUM]; // 告警目标坐标数组
|
||
unsigned char ucReserved[18]; // 预留
|
||
} ALARM_FRAME;
|
||
#pragma pack(pop)
|
||
|
||
#pragma pack(push,1)
|
||
typedef struct tagArithDSPVersionPara
|
||
{
|
||
//12+48+32=92;94
|
||
unsigned int uiParaHeader; //参数头:0x5566CCDD
|
||
unsigned int uiFpgaFrameIdx; //FPGA帧编号
|
||
unsigned int uiDspFrameIdx[8]; //DSP帧编号
|
||
float fDspRunTime[8]; //DSP运行时间
|
||
unsigned short usDspVersionHigh; //DSP版本号高位
|
||
unsigned short usDspVersionLow; //DSP版本号低位
|
||
unsigned int uiDspVersionDataYear; //DSP版本日期-年
|
||
unsigned short usDspVersionDataMonth; //DSP版本日期-月
|
||
unsigned short usDspVersionDataDay; //DSP版本日期-日
|
||
unsigned int uiDspInsideVersionDataYear; //DSP内部版本日期-年
|
||
unsigned short usDspInsideVersionDataMonth; //DSP内部版本日期-月
|
||
unsigned short usDspInsideVersionDataDay; //DSP内部版本日期-日
|
||
unsigned char ucCheck[4]; //校验
|
||
unsigned char ucReserved[104];
|
||
ALARM_FRAME stAlarm_Frame0;
|
||
ALARM_FRAME stAlarm_Frame1;
|
||
// unsigned char dataReserve[2460];
|
||
|
||
|
||
// unsigned char uiParaHeader[8]; //参数头
|
||
// unsigned int usDSPFrameNum; //DSP帧编号
|
||
// unsigned int usDSPVersion; //DSP版本
|
||
// unsigned short ucVersionYear; //DSP版本日期
|
||
// unsigned short ucVersionMonth;
|
||
// unsigned short ucVersionDay;
|
||
// unsigned short ucDSPMinorVersion; //DSP小版本号
|
||
// unsigned short dataReserve[80];
|
||
} ARITH_DSP_VERSION_PARA;
|
||
#pragma pack(pop)
|
||
|
||
#pragma pack(push,1)
|
||
typedef struct tagArithFPGAVersionPara
|
||
{
|
||
//8+14+8+370=400;400
|
||
unsigned char uiParaHeader[8]; //参数头
|
||
unsigned short ucImageBoardTemp; //图像处理板温度
|
||
unsigned short ucImageBoardBuffFlag; //图像处理板缓存标志
|
||
unsigned int usFPGAFrameNum; //FPGA帧编号
|
||
unsigned int usFPGAVersion; //FPGA版本
|
||
unsigned short ucVersionYear; //FPGA版本日期
|
||
unsigned short ucVersionMonth;
|
||
unsigned short ucVersionDay;
|
||
unsigned short ucImageBoardCheckFlag; //图像处理板自检状态
|
||
unsigned short ucFPGAMinorVersion; //FPGA小版本号
|
||
unsigned int nLogicFrameNum;
|
||
unsigned short nSwitch;
|
||
unsigned short dataReserve[182];
|
||
} ARITH_FPGA_VERSION_PARA;
|
||
#pragma pack(pop)
|
||
|
||
#define DEVICE_NUM 5
|
||
#pragma pack(push,1)
|
||
typedef struct tagLaserPos
|
||
{
|
||
unsigned char ucAziAngle[2]; //方位角
|
||
unsigned char ucPitAngle[2];
|
||
} LaserPos;
|
||
typedef struct tagLaserAlarmInfo
|
||
{
|
||
//136
|
||
unsigned int uiParaHeader; //参数头 4
|
||
unsigned char ucPIN; //PIN 1
|
||
unsigned char ucTotalCount[2]; //总上报次数 2
|
||
unsigned char ucTargetNum; //目标个数 1
|
||
LaserPos varLaserPos[DEVICE_NUM]; //方位角 20
|
||
unsigned char dataReserve1[20]; // 20
|
||
unsigned char ucLaserFreq; //激光束频率 1 49
|
||
unsigned char ucLaserTotalCnt[2]; //测距或照射总上报次数 2
|
||
unsigned char ucDeviceNum; //检测目标的组件号 1
|
||
unsigned char ucLaserPulseNum[4]; //测距激光脉冲号 4
|
||
unsigned char ucLaserCycle[3]; //测距或照射的周期 3
|
||
unsigned char ucLaserType; //激光类型 1 60
|
||
unsigned char dataReserve2[8]; // 8
|
||
unsigned int uiCheckData; //自检数据 4
|
||
unsigned char ucCheckData1[4]; //自检数据1 4
|
||
unsigned char dataReserve3[12]; // 12
|
||
unsigned char ucFPGASoftVersion[4]; //FPGA软件版本号 4 89
|
||
unsigned char dataReserve4[16]; // 16
|
||
unsigned char ucSerialDataFrameNum[4]; //串口数据帧编号 * 4 109
|
||
unsigned char uiDSPVersion[4]; //DSP软件版本号 4
|
||
unsigned char dataReserve5[12]; // 12
|
||
unsigned char ucContData[3]; //固定值 3 129
|
||
unsigned char ucChecked; //校验和5~128的和 1 132
|
||
unsigned char ucFrameEnd[4]; //帧尾 4
|
||
} LASER_ALARM_INFO;
|
||
#pragma pack(pop)
|
||
|
||
|
||
|
||
typedef unsigned int uint32;
|
||
typedef unsigned short uint16;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#endif // _CommDef_H_
|