Files
CodeRepository/Common/CommSerialDef.h

581 lines
15 KiB
C
Raw Normal View History

#ifndef _CommSerialDef_H_
#define _CommSerialDef_H_
#ifndef _byte_def_
#define _byte_def_
typedef unsigned char BYTE, Byte, byte;
#endif
#include <thread>
#include <chrono>
using namespace std;
#define DefaultImageWidth 1280
#define DefaultImageHeight 1024
#define DefaultMaxImageSize (1920*1080*4)
#define BUFF_SIZE 1040
#define MAX_UP_SIZE 20*1024*1024
#define MAX_FRAME_LENGTH 32768 // 每包最大128字节有效数据
#define MAX_QUALITY_PARAMS 100 //质量评估计算指标个数
typedef unsigned short UINT16;
////////////////////////////////////////////////////
#include <QString>
#include <QSerialPort>
enum EUFormatType
{
ETYPE_BIT = 0, //二进制
ETYPE_OX = 1, //带0x
ETYPE_UX = 2, //不带0x
};
enum EUConvertType
{
ECONVERT_OX = 0, //不带0x开头转换为0x开头的
ECONVERT_BIT = 1, //不带0x开头的转换成二进制前面加12个字节
};
//机芯版本
enum EUSetSystemType
{
SYSTEM_FPGA_ISP2 = 0, //老版本ISP2.0
SYSTEM_FPGA_ISP3 = 1, //新版本ISP3.0
SYSTEM_FPGA_ISP4 = 2, //新版本ISP3.0
SYSTEM_ASIC = 3, //ASIC机芯
SYSTEM_NULL = 4, //
};
// 像素类型
/*
* @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;
};
struct MqttSettings
{
QString strServerIP;
int32_t nServerPort;
QString strSubscribeTopic;
QString strSubscribeTopic2;
QString strPublishTopic;
};
/************************************************
**
************************************************/
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;
/************************************************
**
************************************************/
typedef struct tagEngInfo
{
ushort Fps; //帧频
ushort Width; //分辨率宽
ushort Height; //分辨率高
ushort SoftVerA; //软核版本号
ushort SoftVerX; //软核版本号
ushort SoftVerY; //软核版本号
ushort SoftYear; //软核版本年
ushort SoftMon; //软核版本月
ushort SoftDay; //软核版本日
ushort LogicVerA; //逻辑版本号
ushort LogicVerX; //逻辑版本号
ushort LogicVerY; //逻辑版本号
uint SENIdNum; //机器识别码
tagEngInfo()
{
Fps = 50;
Width = 640;
Height = 512;
SoftVerA = 1;
SoftVerX = 0;
SoftVerY = 0;
SoftYear = 2024;
SoftMon = 12;
SoftDay = 25;
LogicVerA = 1;
LogicVerX = 0;
LogicVerY = 0;
SENIdNum = 0;
}
} EngInfo;
typedef struct tagSenInfo
{
ushort AccWkTime; //设置工作时间
ushort SENIntMode; //积分模式
ushort SENUPCOL; //UPCOL
ushort SENUPROW; //UPROW
ushort OpenWindowSW; //开窗开关
ushort ADSHIFT; //AD延迟
ushort MultSampSw; //多倍采样开关
ushort AspectSw; //采样相位开关
ushort MultSampStPix; //输出起始点
ushort AspectValue; //相位值
ushort MultSampNum; //参与平均点数
ushort AdSeqType; //排列顺序
ushort AdValidSrc; //数据有效选择
ushort ADAssess; //AD评估通道
tagSenInfo()
{
AccWkTime = 100;
SENIntMode = 0;
SENUPCOL = 1;
SENUPROW = 1;
OpenWindowSW = 0;
ADSHIFT = 12;
MultSampSw = 0;
AspectSw = 0;
MultSampStPix = 3;
AspectValue = 0;
MultSampNum = 1;
AdSeqType = 1;
AdValidSrc = 0;
ADAssess = 0;
}
} SenInfo;
typedef struct tagVCoreInfo
{
ushort SyncMode; //同步模式
ushort IntTime[16]; //各档位积分时间
QString strInitTime; //积分时间字符串
ushort ImgMode; //视频源模式
ushort LvdsVMode; //LVDS视频模式
ushort TestVMode; //测试画面
ushort TestVScope; //测试图像作用域
ushort Freeze; //图像冻结开关
ushort CharSw; //字符开关
ushort VideoSw; //模拟视频开关
tagVCoreInfo()
{
SyncMode = 0;
ImgMode = 0;
LvdsVMode = 1;
TestVMode = 1;
TestVScope = 2;
Freeze = 0;
CharSw = 1;
VideoSw = 1;
strInitTime = "3000#9000#19000#0#0#0#0#0#0#0#0#0#0#0#0#0";
}
} VCoreInfo;
typedef struct tagXFilterInfo
{
ushort XFilterMode; //时域滤波开关
ushort XFilterPar; //时域滤波强度
// ushort Y8NoiseMode; //Y8去噪开关
// ushort Y8NoiseThres; //Y8去噪参数
tagXFilterInfo()
{
XFilterMode = 1;
XFilterPar = 3;
// Y8NoiseMode = 1;
// Y8NoiseThres = 1;
}
} XFilterInfo;
typedef struct tagBpInfo
{
ushort BPThres; //坏点阈值
ushort ReplaceMode; //坏点替换方式
ushort ReplaceSw; //坏点替换开关
ushort ReplaceType; //坏点类型
ushort AESw; //AE开关
ushort AE_ADMax; //AE ADMax
ushort AE_ADMin; //AE ADMin
ushort AE_TimeMax; //AE 积分时间最大值
ushort AE_TimeMin; //AE 积分时间最小值
ushort AE_OptimalAD; //理想AD
tagBpInfo()
{
BPThres = 25;
ReplaceMode = 0;
ReplaceSw = 1;
ReplaceType = 0;
AESw = 1;
AE_ADMax = 8000;
AE_ADMin = 4000;
AE_TimeMax = 9000;
AE_TimeMin = 3000;
AE_OptimalAD = 6000;
}
} BpInfo;
typedef struct tagAutoBpInfo
{
ushort AutoBPSw; //动态坏点开关
ushort NoiseH; //判断坏点阈值
tagAutoBpInfo()
{
AutoBPSw = 0;
NoiseH = 200;
}
} AutoBpInfo;
typedef struct tagGGInfo
{
ushort GGSw; //锅盖开关
tagGGInfo()
{
GGSw = 0;
}
} GGInfo;
typedef struct tagReStripeInfo
{
ushort ReStripeSw; //去竖条开关
ushort ReStripeHoriSw; //去横纹开关
ushort RestripeWinSize; //窗口大小
ushort MoveThres; //运动检测阈值
//ushort ReStripeSigmaIndex; //sigma值
ushort ReStripeThres; //去竖纹阈值值
//ushort ReStripeWeight; //权重
ushort ReStripeHoriThres; //横纹阈值
tagReStripeInfo()
{
ReStripeSw = 1;
ReStripeHoriSw = 1;
RestripeWinSize = 9;
MoveThres = 1;
// ReStripeSigmaIndex = 70;
ReStripeThres = 15;
//ReStripeWeight = 3700;
ReStripeHoriThres = 15;
}
} ReStripeInfo;
typedef struct tagNlMeansInfo
{
ushort NlMeansSw; //空域开关
ushort NlMeansThres; //空域强度
ushort MoveCompensateSw; //运动补偿开关
ushort Y8NoiseMode; //Y8去噪开关
ushort Y8NoiseThres; //Y8去噪参数
tagNlMeansInfo()
{
NlMeansSw = 1;
NlMeansThres = 2;
MoveCompensateSw = 1;
Y8NoiseMode = 1; //Y8去噪开关
Y8NoiseThres = 1; //Y8去噪参数
}
} NlMeansInfo;
typedef struct tagDDEInfo
{
ushort DDEDegree; //DDE强度Y16
ushort DDESw; //DDE开关
ushort DDEY8Degree; //DDE强度Y8
tagDDEInfo()
{
DDEDegree = 1;
DDESw = 1;
DDEY8Degree = 1;
}
} DDEInfo;
typedef struct tagIDEInfo
{
ushort IDESw; //IDE开关
ushort IDESigmaIndex; //纹理系数
ushort IDEPar; //边缘系数
tagIDEInfo()
{
IDESw = 0;
IDESigmaIndex = 25;
IDEPar = 0;
}
} IDEInfo;
typedef struct tagBBHEInfo
{
ushort LightMode; //调光模式 00线性、01直方图、02混合
ushort LineBright; //Y8Range
ushort LineContrast; //Y8Mean
ushort Y8Range; //Y8Range
ushort Y8Mean; //Y8Mean
ushort LinePer; //LinePer
ushort HistPer; //HistPer
ushort TL; //TL
ushort TR; //TR
ushort Contrast; //Contrast
ushort Bright; //Bright
ushort Y8ABCSw; //Y8_adjust开关
ushort Y16OutStream; //Y16数据流输出
ushort Y8OutStream; //Y8数据流输出
ushort FrameDelaySw; //帧延时开关
tagBBHEInfo()
{
LightMode = 2;
Y8Range = 230;
Y8Mean = 40;
LinePer = 1;
HistPer = 1;
TL = 300;
TR = 100;
Contrast = 50;
Bright = 50;
Y8ABCSw = 1;
LineBright = 50;
LineContrast = 50;
Y16OutStream = 1;
Y8OutStream = 1;
FrameDelaySw = 1;
}
} BBHEInfo;
typedef struct tagCLAHEInfo
{
ushort CLAHESw; //分块调光开关
ushort CLAHELimit; //分块调光参数
ushort CLAHEUseSw; //使用计算开关
tagCLAHEInfo()
{
CLAHESw = 0;
CLAHELimit = 410;
CLAHEUseSw = 0;
}
} CLAHEInfo;
typedef struct tagDehazeInfo
{
ushort DehazeSw; //去雾开关
ushort DehazeSelect; //去雾表号
tagDehazeInfo()
{
DehazeSw = 0;
DehazeSelect = 1;
}
} DehazeInfo;
typedef struct tagPaletteInfo
{
ushort HotSelect; //极性
ushort Psec; //伪彩
tagPaletteInfo()
{
HotSelect = 0;
Psec = 0;
}
} PaletteInfo;
typedef struct tagGeomTransInfo
{
ushort MirrorMode; //镜像
ushort ZoomRatio; //无极放大
ushort Zoom; //电子放大
tagGeomTransInfo()
{
MirrorMode = 0;
ZoomRatio = 1000;
Zoom = 0;
}
} GeomTransInfo;
typedef struct tagCursorInfo
{
ushort CursorType; //光标类型
ushort CursorX; //光标X坐标
ushort CursorY; //光标Y坐标
ushort CursorXCenter; //中心放大X坐标
ushort CursorYCenter; //中心放大Y坐标
tagCursorInfo()
{
CursorType = 0;
CursorX = 320;
CursorY = 256;
CursorXCenter = 320;
CursorYCenter = 256;
}
} CursorInfo;
typedef struct tagAutoFocusInfo
{
ushort WinX; //自动聚焦窗X坐标
ushort WinY; //自动聚焦窗Y坐标
ushort WinLen; //自动聚焦窗宽
tagAutoFocusInfo()
{
WinX = 320;
WinY = 256;
WinLen = 256;
}
} AutoFocusInfo;
typedef struct tagSoftStateInfo
{
ushort AutoBaseMode; //本底档位模式
ushort AutoIntMode; //积分档位模式
ushort AutoBCMode; //亮度/对比度模式
ushort ADMax; //ADMax
ushort ADMin; //ADMin
// ushort FovFlag1; //FovFlag1
//ushort FovFlag2; //FovFlag1
ushort SceneType; //场景类型
tagSoftStateInfo()
{
AutoBaseMode = 0;
AutoIntMode = 1;
AutoBCMode = 0;
ADMax = 8000;
ADMin = 4000;
//FovFlag1 = 1500;
//FovFlag2 = 2500;
SceneType = 0;
}
} SoftStateInfo;
typedef struct tagAutoSetInfo
{
EngInfo Eng;
SenInfo Sen;
VCoreInfo VCore;
XFilterInfo XFilter;
BpInfo Bp;
AutoBpInfo AutoBp;
GGInfo GG;
ReStripeInfo ReStripe;
NlMeansInfo NlMeans;
DDEInfo DDE;
IDEInfo IDE;
BBHEInfo BBHE;
CLAHEInfo CLAHE;
DehazeInfo Dehaze;
PaletteInfo Palette;
GeomTransInfo GeomTrans;
CursorInfo Cursor;
AutoFocusInfo AutoFocus;
SoftStateInfo SoftState;
} AutoSetInfo;
typedef struct tag_ImageAssessRect
{
UINT16 xpos; //像素起始X坐标
UINT16 ypos; //像素起始y坐标
UINT16 width; //像素宽度
UINT16 height; //像素高度
} ImageAssessRect;
typedef struct tag_ImageX16Mix
{
UINT16 nImageWidth; //图像宽度
UINT16 nImageHeight; //图像高度
int nHighTempre; //高温本底温度
int nLowTempre; //低温本底温度
} ImageX16Mix;
typedef struct tag_ImageY8BadPoint
{
UINT16 nImageWidth; //图像宽度
UINT16 nImageHeight; //图像高度
int nWinHalf; //检测半径
int nThresh; //检测阈值
int nPos; //无效区域位置
} ImageY8BadPoint;
typedef struct tagUpdataHead
{
int devid; //文件类型
int softNum; //文件编号
int majVer; //大版本
int subVer; //小版本
int year;
int month;
int day;
} UpdataHead;
enum ECheckType
{
ECHECK_PLUS, //累加和
ECHECK_XOR //异或
};
#endif // _CommDef_H