#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 #include using namespace std; #include #include // 像素类型 /* * @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_