Files
CodeRepository/Apps/App_GeneralDataInjectionApp/Common/CommDef.h

621 lines
35 KiB
C
Raw Normal View History

#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地面观测KKDD3逼近环境试验模拟目标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_