fast/3rdparty/hikvision/code_reader/inc/MvCodeReaderParams.h
2025-01-20 10:30:01 +08:00

879 lines
49 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _MV_CODEREADER_PARAMS_H_
#define _MV_CODEREADER_PARAMS_H_
#include "MvCodeReaderPixelType.h"
#ifndef __cplusplus
typedef char bool;
#define true 1
#define false 0
#endif
/********************************宏定义类型************************************************************/
// 设备类型定义
#define MV_CODEREADER_UNKNOW_DEVICE 0x00000000 // 未知设备类型
#define MV_CODEREADER_GIGE_DEVICE 0x00000001 // GigE设备
#define MV_CODEREADER_1394_DEVICE 0x00000002 // 1394-a/b 设备
#define MV_CODEREADER_USB_DEVICE 0x00000004 // USB3.0 设备
#define MV_CODEREADER_CAMERALINK_DEVICE 0x00000008 // CameraLink设备
#define MV_CODEREADER_ID_DEVICE 0x00000010
// 异常消息类型
#define MV_CODEREADER_EXCEPTION_DEV_DISCONNECT 0x00008001 // 设备断开连接
#define MV_CODEREADER_EXCEPTION_VERSION_CHECK 0x00008002 // SDK与驱动版本不匹配
// 设备的访问模式
// 独占权限其他APP只允许读CCP寄存器
#define MV_CODEREADER_ACCESS_Exclusive 1
// 可以从5模式下抢占权限然后以独占权限打开
#define MV_CODEREADER_ACCESS_ExclusiveWithSwitch 2
// 控制权限其他APP允许读所有寄存器
#define MV_CODEREADER_ACCESS_Control 3
// 可以从5的模式下抢占权限然后以控制权限打开
#define MV_CODEREADER_ACCESS_ControlWithSwitch 4
// 以可被抢占的控制权限打开
#define MV_CODEREADER_ACCESS_ControlSwitchEnable 5
// 可以从5的模式下抢占权限然后以可被抢占的控制权限打开
#define MV_CODEREADER_ACCESS_ControlSwitchEnableWithKey 6
// 读模式打开设备,适用于控制权限下
#define MV_CODEREADER_ACCESS_Monitor 7
// 设备信息最大长度
#define INFO_MAX_BUFFER_SIZE 64 // 最大信息长度
// 最大支持的设备个数
#define MV_CODEREADER_MAX_DEVICE_NUM 256
// 最大类型个数(适用于枚举类型)
#define MV_CODEREADER_MAX_XML_SYMBOLIC_NUM 64 // 支持最大枚举类型最大参数
// GigEVision IP配置方式
#define MV_CODEREADER_IP_CFG_STATIC 0x05000000 // 静态IP
#define MV_CODEREADER_IP_CFG_DHCP 0x06000000 // DHCP
#define MV_CODEREADER_IP_CFG_LLA 0x04000000 // LLA
// Event事件回调信息
#define MV_CODEREADER_MAX_EVENT_NAME_SIZE 128 // 相机Event事件名称最大长度
// 最大条码长度
#define MV_CODEREADER_MAX_BCR_CODE_LEN 256
// 最大条码长度扩展
#define MV_CODEREADER_MAX_BCR_CODE_LEN_EX 4096
// 最大OCR长度
#define MV_CODEREADER_MAX_OCR_LEN 128
// 一次最多输出条码个数
#define MAX_CODEREADER_BCR_COUNT 200
// 一次最多输出条码个数
#define MAX_CODEREADER_BCR_COUNT_EX 300
// 最大数据缓存
#define MV_CODEREADER_MAX_RESULT_SIZE (1024*64)
// 一次输出最大抠图个数
#define MAX_CODEREADER_WAYBILL_COUNT 50
// 一次输出最大OCR个数
#define MAX_CODEREADER_OCR_COUNT 100
// 输出协议类型
#define CommuPtlSmartSDK 1 // SamrtSDK协议
#define CommuPtlTcpIP 2 // TCPIP协议
#define CommuPtlSerial 3 // Serial协议
// 升级最大支持的设备个数
#define MV_CODEREADER_MAX_UPGARDEDEVICE_NUM 100
/************************************************************************/
/* 抠图参数,内部有默认值,可以不设置 */
/************************************************************************/
#define KEY_WAYBILL_ABILITY "WAYBILL_Ability" // 算法能力集,含面单提取[0x1],图像增强[0x2],码提取[0x4]Box拷贝模块[0x8],面单提取模块[0x10],模块最大编号[0x3F]
#define KEY_WAYBILL_MAX_WIDTH "WAYBILL_Max_Width" // 算法最大宽度默认5472范围[0,65535]
#define KEY_WAYBILL_MAX_HEIGHT "WAYBILL_Max_Height" // 算法最大高度默认3648范围[0,65535]
#define KEY_WAYBILL_OUTPUTIMAGETYPE "WAYBILL_OutputImageType" // 面单抠图输出的图片格式默认Jpg范围[1,3],1为Mono82为Jpg3为Bmp
#define KEY_WAYBILL_JPGQUALITY "WAYBILL_JpgQuality" // jpg编码质量默认80范围[1,100]
#define KEY_WAYBILL_ENHANCEENABLE "WAYBILL_EnhanceEnable" // 图像增强使能默认0范围[0,1]
#define KEY_WAYBILL_MINWIDTH "WAYBILL_MinWidth" // waybill最小宽, 宽是长边, 高是短边默认100范围[15,2592]
#define KEY_WAYBILL_MINHEIGHT "WAYBILL_MinHeight" // waybill最小高默认100范围[10,2048]
#define KEY_WAYBILL_MAXWIDTH "WAYBILL_MaxWidth" // waybill最大宽, 宽是长边, 高是短边默认3072最小值15
#define KEY_WAYBILL_MAXHEIGHT "WAYBILL_MaxHeight" // waybill最大高默认2048最小值10
#define KEY_WAYBILL_MORPHTIMES "WAYBILL_MorphTimes" // 膨胀次数默认0范围[0,10]
#define KEY_WAYBILL_GRAYLOW "WAYBILL_GrayLow" // 面单上条码和字符灰度最小值默认0范围[0,255]
#define KEY_WAYBILL_GRAYMID "WAYBILL_GrayMid" // 面单上灰度中间值用于区分条码和背景默认70范围[0,255]
#define KEY_WAYBILL_GRAYHIGH "WAYBILL_GrayHigh" // 面单上背景灰度最大值默认130范围[0,255]
#define KEY_WAYBILL_BINARYADAPTIVE "WAYBILL_BinaryAdaptive" // 自适应二值化默认1范围[0,1]
#define KEY_WAYBILL_BOUNDARYROW "WAYBILL_BoundaryRow" // 面单抠图行方向扩边默认0范围[0,2000]
#define KEY_WAYBILL_BOUNDARYCOL "WAYBILL_BoundaryCol" // 面单抠图列方向扩边默认0范围[0,2000]
#define KEY_WAYBILL_MAXBILLBARHEIGTHRATIO "WAYBILL_MaxBillBarHightRatio" // 最大面单和条码高度比例默认20范围[1,100]
#define KEY_WAYBILL_MAXBILLBARWIDTHRATIO "WAYBILL_MaxBillBarWidthRatio" // 最大面单和条码宽度比例默认5范围[1,100]
#define KEY_WAYBILL_MINBILLBARHEIGTHRATIO "WAYBILL_MinBillBarHightRatio" // 最小面单和条码高度比例默认5范围[1,100]
#define KEY_WAYBILL_MINBILLBARWIDTHRATIO "WAYBILL_MinBillBarWidthRatio" // 最小面单和条码宽度比例默认2范围[1,100]
#define KEY_WAYBILL_ENHANCEMETHOD "WAYBILL_EnhanceMethod" // 增强方法,最小值/默认值/不进行增强[0x1],线性拉伸[0x2],直方图拉伸[0x3],直方图均衡化[0x4],亮度校正/最大值[0x5]
#define KEY_WAYBILL_ENHANCECLIPRATIOLOW "WAYBILL_ClipRatioLow" // 增强拉伸低阈值比例默认1范围[0,100]
#define KEY_WAYBILL_ENHANCECLIPRATIOHIGH "WAYBILL_ClipRatioHigh" // 增强拉伸高阈值比例默认99范围[0,100]
#define KEY_WAYBILL_ENHANCECONTRASTFACTOR "WAYBILL_ContrastFactor" // 对比度系数默认100范围[1,10000]
#define KEY_WAYBILL_ENHANCESHARPENFACTOR "WAYBILL_SharpenFactor" // 锐化系数默认0范围[0,10000]
#define KEY_WAYBILL_SHARPENKERNELSIZE "WAYBILL_KernelSize" // 锐化滤波核大小默认3范围[3,15]
#define KEY_WAYBILL_CODEBOUNDARYROW "WAYBILL_CodeBoundaryRow" // 码单抠图行方向扩边默认0范围[0,2000]
#define KEY_WAYBILL_CODEBOUNDARYCOL "WAYBILL_CodeBoundaryCol" // 码单抠图列方向扩边默认0范围[0,2000]
/************************************************结构体类型**************************************************************/
// GigE设备信息
typedef struct _MV_CODEREADER_GIGE_DEVICE_INFO_
{
unsigned int nIpCfgOption; // 设备支持的IP类型
unsigned int nIpCfgCurrent; // 设备当前IP类型
unsigned int nCurrentIp; // 设备当前IP
unsigned int nCurrentSubNetMask; // 设备当前子网掩码
unsigned int nDefultGateWay; // 设备默认网关
unsigned char chManufacturerName[32]; // 设备厂商
unsigned char chModelName[32]; // 设备型号
unsigned char chDeviceVersion[32]; // 设备版本
unsigned char chManufacturerSpecificInfo[48]; // 设备厂商特殊信息
unsigned char chSerialNumber[16]; // 设备序列号
unsigned char chUserDefinedName[16]; // 设备用户自定义名称
unsigned int nNetExport; // 主机网口IP地址
unsigned int nCurUserIP; // 当前占用设备的用户IP
unsigned int nReserved[3]; // 保留字节
}MV_CODEREADER_GIGE_DEVICE_INFO;
// U3V设备信息
typedef struct _MV_CODEREADER_USB3_DEVICE_INFO_
{
unsigned char CrtlInEndPoint; // 控制输入端点
unsigned char CrtlOutEndPoint; // 控制输出端点
unsigned char StreamEndPoint; // 流端点
unsigned char EventEndPoint; // 事件端点
unsigned short idVendor; // 供应商ID号
unsigned short idProduct; // 产品ID号
unsigned int nDeviceNumber; // 设备序列号
unsigned char chDeviceGUID[INFO_MAX_BUFFER_SIZE]; // 设备GUID号
unsigned char chVendorName[INFO_MAX_BUFFER_SIZE]; // 供应商名称
unsigned char chModelName[INFO_MAX_BUFFER_SIZE]; // 设备型号
unsigned char chFamilyName[INFO_MAX_BUFFER_SIZE]; // 设备家族名称
unsigned char chDeviceVersion[INFO_MAX_BUFFER_SIZE]; // 设备版本
unsigned char chManufacturerName[INFO_MAX_BUFFER_SIZE]; // 设备厂商
unsigned char chSerialNumber[INFO_MAX_BUFFER_SIZE]; // 设备序列号
unsigned char chUserDefinedName[INFO_MAX_BUFFER_SIZE]; // 设备用户自定义名称
unsigned int nbcdUSB; // 设备支持的USB协议
unsigned int nReserved[3]; // 保留字节
}MV_CODEREADER_USB3_DEVICE_INFO;
// 设备信息
typedef struct _MV_CODEREADER_DEVICE_INFO_
{
unsigned short nMajorVer; // 设备主版本号
unsigned short nMinorVer; // 设备次版本号
unsigned int nMacAddrHigh; // 设备MAC地址高位
unsigned int nMacAddrLow; // 设备MAC地址低位
unsigned int nTLayerType; // 设备传输层协议类型
// 是否为指定系列型号相机
// true -指定系列型号相机 false- 非指定系列型号相机
bool bSelectDevice; // ch:选择设备 |en:Choose device
unsigned int nReserved[3]; // 保留字节
union
{
MV_CODEREADER_GIGE_DEVICE_INFO stGigEInfo; // GigE设备信息
MV_CODEREADER_USB3_DEVICE_INFO stUsb3VInfo; // U3V设备信息
// more ...
}SpecialInfo;
}MV_CODEREADER_DEVICE_INFO;
// 设备信息列表
typedef struct _MV_CODEREADER_DEVICE_INFO_LIST_
{
unsigned int nDeviceNum; // 在线设备数量
MV_CODEREADER_DEVICE_INFO* pDeviceInfo[MV_CODEREADER_MAX_DEVICE_NUM]; // 设备信息(支持最多256个设备)
}MV_CODEREADER_DEVICE_INFO_LIST;
// 输出帧信息
typedef struct _MV_CODEREADER_FRAME_OUT_INFO_
{
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
enum MvCodeReaderGvspPixelType enPixelType; // 像素格式
unsigned int nFrameNum; // 帧号
unsigned int nDevTimeStampHigh; // 时间戳高32位
unsigned int nDevTimeStampLow; // 时间戳低32位
unsigned int nReserved0; // 保留8字节对齐
int64_t nHostTimeStamp; // 主机生成的时间戳
unsigned int nFrameLen; // 图像长度
unsigned int nLostPacket; // 本帧丢包数
unsigned int nReserved[2]; // 保留字节
}MV_CODEREADER_FRAME_OUT_INFO;
// ch:Chunk内容 | en:The content of ChunkData
typedef struct _MV_CODEREADER_CHUNK_DATA_CONTENT_
{
unsigned char* pChunkData;
unsigned int nChunkID;
unsigned int nChunkLen;
unsigned int nReserved[8]; // 保留
}MV_CODEREADER_CHUNK_DATA_CONTENT;
// 输出帧信息
typedef struct _MV_CODEREADER_FRAME_OUT_INFO_EX_
{
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
enum MvCodeReaderGvspPixelType enPixelType; // 像素格式
unsigned int nFrameNum; // 帧号
unsigned int nDevTimeStampHigh; // 时间戳高32位
unsigned int nDevTimeStampLow; // 时间戳低32位
unsigned int nReserved0; // 保留8字节对齐
int64_t nHostTimeStamp; // 主机生成的时间戳
unsigned int nFrameLen; // 图像长度
// chunk新增水印信息
// 设备水印时标
unsigned int nSecondCount; // 秒数
unsigned int nCycleCount; // 循环计数
unsigned int nCycleOffset; // 循环计数偏移量
float fGain; // 增益
float fExposureTime; // 曝光时间
unsigned int nAverageBrightness; // 平均亮度
// 白平衡相关
unsigned int nRed; // 红色数据
unsigned int nGreen; // 绿色数据
unsigned int nBlue; // 蓝色数据
unsigned int nFrameCounter; // 图像数量计数
unsigned int nTriggerIndex; // 触发计数
// Line 输入/输出
unsigned int nInput; // 输入
unsigned int nOutput; // 输出
// ROI区域
unsigned short nOffsetX; // ROI X轴偏移
unsigned short nOffsetY; // ROI Y轴偏移
unsigned short nChunkWidth; // Chunk宽度
unsigned short nChunkHeight; // Chunk高度
unsigned int nLostPacket; // 本帧丢包数
unsigned int nUnparsedChunkNum; //未解析的Chunkdata个数
union
{
MV_CODEREADER_CHUNK_DATA_CONTENT* pUnparsedChunkContent;
int64_t nAligning;
}UnparsedChunkList;
unsigned int nReserved[36]; // 保留字节
}MV_CODEREADER_FRAME_OUT_INFO_EX;
// 图像显示信息
typedef struct _MV_CODEREADER_DISPLAY_FRAME_INFO_
{
void* hWnd; // 显示窗口句柄
unsigned char* pData; // 源图像数据
unsigned int nDataLen; // 源图像数据长度
unsigned short nWidth; // 源图像宽
unsigned short nHeight; // 源图像高
enum MvCodeReaderGvspPixelType enPixelType; // 源图像像素格式
unsigned int nRes[4]; // 保留字节
}MV_CODEREADER_DISPLAY_FRAME_INFO;
// 保存图片格式
enum MV_CODEREADER_IAMGE_TYPE
{
MV_CODEREADER_Image_Undefined = 0,
MV_CODEREADER_Image_Mono8 = 1,
MV_CODEREADER_Image_Jpeg = 2,
MV_CODEREADER_Image_Bmp = 3,
MV_CODEREADER_Image_RGB24 = 4,
MV_CODEREADER_Image_Png = 5, // Png图像(暂不支持)
MV_CODEREADER_Image_Tif = 6, // Tif图像(暂不支持)
};
// 保存图片参数
typedef struct _MV_CODEREADER_SAVE_IMAGE_PARAM_T_
{
unsigned char* pData; // 输入数据缓存
unsigned int nDataLen; // 输入数据大小
enum MvCodeReaderGvspPixelType enPixelType; // 输入数据的像素格式
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
unsigned char* pImageBuffer; // 输出图片缓存
unsigned int nImageLen; // 输出图片大小
unsigned int nBufferSize; // 提供的输出缓冲区大小
enum MV_CODEREADER_IAMGE_TYPE enImageType; // 输出图片格式
}MV_CODEREADER_SAVE_IMAGE_PARAM;
// 图片保存参数
typedef struct _MV_CODEREADER_SAVE_IMAGE_PARAM_T_EX_
{
unsigned char* pData; // 输入数据缓存
unsigned int nDataLen; // 输入数据大小
enum MvCodeReaderGvspPixelType enPixelType; // 输入数据的像素格式
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
unsigned char* pImageBuffer; // 输出图片缓存
unsigned int nImageLen; // 输出图片大小
unsigned int nBufferSize; // 提供的输出缓冲区大小
enum MV_CODEREADER_IAMGE_TYPE enImageType; // 输出图片格式
unsigned int nJpgQuality; // 编码质量, (50-99]
// 格式转为RGB24的插值方法 0-最近邻 1-双线性 2-Hamilton (如果传入其它值则默认为最近邻)
unsigned int iMethodValue; // 插值方式
unsigned int nReserved[3]; // 保留字节
}MV_CODEREADER_SAVE_IMAGE_PARAM_EX;
// 事件回调信息
typedef struct _MV_CODEREADER_EVENT_OUT_INFO_
{
char EventName[MV_CODEREADER_MAX_EVENT_NAME_SIZE]; // Event名称
unsigned short nEventID; // Event号
unsigned short nStreamChannel; // 流通道序号
unsigned int nBlockIdHigh; // 帧号高位
unsigned int nBlockIdLow; // 帧号低位
unsigned int nTimestampHigh; // 时间戳高位
unsigned int nTimestampLow; // 时间戳低位
void * pEventData; // Event数据
unsigned int nEventDataSize; // Event数据长度
unsigned int nReserved[16]; // 预留
}MV_CODEREADER_EVENT_OUT_INFO;
// 文件存取
typedef struct _MV_CODEREADER_FILE_ACCESS_T
{
const char * pUserFileName; // 用户文件名
const char * pDevFileName; // 设备文件名
unsigned int nReserved[32]; // 预留字节
}MV_CODEREADER_FILE_ACCESS;
// 文件存取进度
typedef struct _MV_CODEREADER_FILE_ACCESS_PROGRESS_T
{
int64_t nCompleted; // 已完成的长度
int64_t nTotal; // 总长度
unsigned int nReserved[8]; // 预留字节
}MV_CODEREADER_FILE_ACCESS_PROGRESS;
// Enum类型值
typedef struct _MV_CODEREADER_ENUMVALUE_T
{
unsigned int nCurValue; // 当前值
unsigned int nSupportedNum; // 有效数据个数
unsigned int nSupportValue[MV_CODEREADER_MAX_XML_SYMBOLIC_NUM]; // 支持的枚举类型
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_ENUMVALUE;
// Int类型值
typedef struct _MV_CODEREADER_INTVALUE_T
{
unsigned int nCurValue; // 当前值
unsigned int nMax; // 最大值
unsigned int nMin; // 最小值
unsigned int nInc; // 增量值
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_INTVALUE;
// Int类型值
typedef struct _MV_CODEREADER_INTVALUE_EX_T
{
int64_t nCurValue; // 当前值
int64_t nMax; // 最大值
int64_t nMin; // 最小值
int64_t nInc; // 增量值
unsigned int nReserved[16]; // 保留字节
}MV_CODEREADER_INTVALUE_EX;
// Float类型值
typedef struct _MV_CODEREADER_FLOATVALUE_T
{
float fCurValue; // 当前值
float fMax; // 最大值
float fMin; // 最小值
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_FLOATVALUE;
// String类型值
typedef struct _MV_CODEREADER_STRINGVALUE_T
{
char chCurValue[256]; // 当前值
int64_t nMaxLength; // 最大长度
unsigned int nReserved[2]; // 保留字节
}MV_CODEREADER_STRINGVALUE;
// Int型坐标
typedef struct _MV_CODEREADER_POINT_I_
{
int x; // x坐标
int y; // y坐标
}MV_CODEREADER_POINT_I;
// Float型坐标
typedef struct _MV_CODEREADER_POINT_F_
{
float x; // x坐标
float y; // y坐标
}MV_CODEREADER_POINT_F;
// 输出帧信息
typedef struct _MV_CODEREADER_IMAGE_OUT_INFO_
{
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
enum MvCodeReaderGvspPixelType enPixelType; // 像素或图片格式
unsigned int nTriggerIndex; // 触发序号
unsigned int nFrameNum; // 帧号
unsigned int nFrameLen; // 当前帧数据大小
unsigned int nTimeStampHigh; // 时间戳高32位
unsigned int nTimeStampLow; // 时间戳低32位
unsigned int nResultType; // 输出消息类型
unsigned char chResult[MV_CODEREADER_MAX_RESULT_SIZE]; // 根据消息类型对应不同结构体
bool bIsGetCode; // 是否读到条码
unsigned char* pImageWaybill; // 面单图像
unsigned int nImageWaybillLen; // 面单数据大小
enum MV_CODEREADER_IAMGE_TYPE enWaybillImageType; // 面单图像类型
unsigned int bFlaseTrigger; // 是否误触发
unsigned int nFocusScore; // 聚焦得分
unsigned int nChannelID; // 对应Stream通道序号
unsigned int nImageCost; // 帧图像在相机内部的处理耗时
unsigned int nReserved[6]; // 保留字节
}MV_CODEREADER_IMAGE_OUT_INFO;
// 条码信息
typedef struct _MV_CODEREADER_BCR_INFO_
{
unsigned int nID; // 条码ID
char chCode[MV_CODEREADER_MAX_BCR_CODE_LEN]; // 字符
unsigned int nLen; // 字符长度
unsigned int nBarType; // 条码类型
MV_CODEREADER_POINT_I pt[4]; // 条码位置
// 一维码以图像x正轴为基准顺时针0-3600度二维码以图像x正轴为基准逆时针0-3600度
int nAngle; // 条码角度(10倍)0~3600
unsigned int nMainPackageId; // 主包ID
unsigned int nSubPackageId; // 次包ID
unsigned short sAppearCount; // 条码被识别的次数
unsigned short sPPM; // PPM(10倍)
unsigned short sAlgoCost; // 算法耗时
unsigned short sSharpness; // 图像清晰度(10倍)
} MV_CODEREADER_BCR_INFO;
// 条码信息列表
typedef struct _MV_CODEREADER_RESULT_BCR_
{
unsigned int nCodeNum; // 条码数量
MV_CODEREADER_BCR_INFO stBcrInfo[MAX_CODEREADER_BCR_COUNT]; // 条码信息
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_RESULT_BCR;
// 条码质量质量分5等[0,4], 越高等质量越好; 1D指一维码2D指二维码
typedef struct _MV_CODEREADER_CODE_INFO_
{
// 等级
int nOverQuality; // 总体质量评分1D/2D共用
int nDeCode; // 译码评分1D/2D共用
int nSCGrade; // Symbol Contrast对比度质量评分1D/2D共用
int nModGrade; // modulation模块均匀性评分1D/2D共用
// 2D等级
int nFPDGrade; // fixed_pattern_damage评分
int nANGrade; // axial_nonuniformity码轴规整性评分
int nGNGrade; // grid_nonuniformity基础grid均匀性质量评分
int nUECGrade; // unused_error_correction未使用纠错功能评分
int nPGHGrade; // Print Growth Horizontal 打印伸缩(水平)评分
int nPGVGrade; // Print Growth Veritical 打印伸缩(垂直)评分
// 分数
float fSCScore; // Symbol Contrast对比度质量分数1D/2D共用
float fModScore; // modulation模块均匀性分数1D/2D共用
// 2D分数
float fFPDScore; // fixed_pattern_damage分数
float fAnScore; // axial_nonuniformity码轴规整性分数
float fGNScore; // grid_nonuniformity基础grid均匀性质量分数
float fUECScore; // unused_error_correction未使用纠错功能分数
float fPGHScore; // Print Growth Horizontal 打印伸缩(水平)分数
float fPGVScore; // Print Growth Veritical 打印伸缩(垂直)分数
int nRMGrade; // reflectance margin反射率余量评分
float fRMScore; // reflectance margin反射率余量分数
// 1D等级
int n1DEdgeGrade; // edge determination 边缘确定度质量等级
int n1DMinRGrade; // minimum reflectance 最小反射率质量等级
int n1DMinEGrade; // minimum edge contrast 最小边缘对比度质量等级
int n1DDcdGrade; // decodability 可译码性质量等级
int n1DDefGrade; // defects 缺陷质量等级
int n1DQZGrade; // quiet zone 静区质量等级
// 1D分数
float f1DEdgeScore; // edge determination 边缘确定度分数
float f1DMinRScore; // minimum reflectance 最小反射率分数
float f1DMinEScore; // minimum edge contrast 最小边缘对比度分数
float f1DDcdScore; // decodability 可译码性分数
float f1DDefScore; // defects 缺陷分数
float f1DQZScore; // quiet zone 静区分数
int nReserved[18]; //预留
} MV_CODEREADER_CODE_INFO;
// 带质量信息的BCR信息
typedef struct _MV_CODEREADER_BCR_INFO_EX_
{
unsigned int nID; // 条码ID
char chCode[MV_CODEREADER_MAX_BCR_CODE_LEN]; // 字符识别长度为256
unsigned int nLen; // 字符长度
unsigned int nBarType; // 条码类型
MV_CODEREADER_POINT_I pt[4]; // 条码位置
MV_CODEREADER_CODE_INFO stCodeQuality; // 条码质量评价
// 一维码以图像x正轴为基准顺时针0-3600度二维码以图像x正轴为基准逆时针0-3600度
int nAngle; // 条码角度(10倍)0~3600
unsigned int nMainPackageId; // 主包ID
unsigned int nSubPackageId; // 次包ID
unsigned short sAppearCount; // 条码被识别的次数
unsigned short sPPM; // PPM(10倍)
unsigned short sAlgoCost; // 算法耗时(ms)
unsigned short sSharpness; // 清晰度
bool bIsGetQuality; // 是否支持二维码质量评级
unsigned int nIDRScore; // 读码评分
unsigned int n1DIsGetQuality; // 是否支持一维码质量评级(0-不支持 1-支持)
unsigned int nTotalProcCost; // 从触发开始到APP输出时间统计(ms)
unsigned int nTriggerTimeTvHigh; // 触发开始时间高32位(s)
unsigned int nTriggerTimeTvLow; // 触发开始时间低32位(s)
unsigned int nTriggerTimeUtvHigh; // 触发开始时间低32位(us)
unsigned int nTriggerTimeUtvLow; // 触发开始时间低32位(us)
unsigned int nReserved[24]; // 预留
} MV_CODEREADER_BCR_INFO_EX;
// 条码信息加条码质量列表
typedef struct _MV_CODEREADER_RESULT_BCR_EX_
{
unsigned int nCodeNum; // 条码数量
MV_CODEREADER_BCR_INFO_EX stBcrInfoEx[MAX_CODEREADER_BCR_COUNT]; // 条码信息
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_RESULT_BCR_EX;
// 带质量信息且条码字符扩展的BCR信息
typedef struct _MV_CODEREADER_BCR_INFO_EX_2_
{
unsigned int nID; // 条码ID
char chCode[MV_CODEREADER_MAX_BCR_CODE_LEN_EX]; // 字符可识别长度扩展至4096
unsigned int nLen; // 字符实际真实长度
unsigned int nBarType; // 条码类型
MV_CODEREADER_POINT_I pt[4]; // 条码位置
MV_CODEREADER_CODE_INFO stCodeQuality; // 条码质量评价
// 一维码以图像x正轴为基准顺时针0-3600度二维码以图像x正轴为基准逆时针0-3600度
int nAngle; // 条码角度(10倍)0~3600
unsigned int nMainPackageId; // 主包ID
unsigned int nSubPackageId; // 次包ID
unsigned short sAppearCount; // 条码被识别的次数
unsigned short sPPM; // PPM(10倍)
unsigned short sAlgoCost; // 算法耗时(ms)
unsigned short sSharpness; // 清晰度
bool bIsGetQuality; // 是否支持二维码质量评级
unsigned int nIDRScore; // 读码评分
unsigned int n1DIsGetQuality; // 是否支持一维码质量评级(0-不支持 1-支持)
unsigned int nTotalProcCost; // 从触发开始到APP输出时间统计(ms)
unsigned int nTriggerTimeTvHigh; // 触发开始时间高32位(s)
unsigned int nTriggerTimeTvLow; // 触发开始时间低32位(s)
unsigned int nTriggerTimeUtvHigh; // 触发开始时间低32位(us)
unsigned int nTriggerTimeUtvLow; // 触发开始时间低32位(us)
int nReserved[59]; // 预留
} MV_CODEREADER_BCR_INFO_EX2;
// 条码信息字符扩展加条码质量列表
typedef struct _MV_CODEREADER_RESULT_BCR_EX_2_
{
unsigned int nCodeNum; // 条码数量(扩展)
MV_CODEREADER_BCR_INFO_EX2 stBcrInfoEx2[MAX_CODEREADER_BCR_COUNT_EX]; // 条码信息(条码字符扩展)
unsigned int nReserved[8]; // 保留字节
}MV_CODEREADER_RESULT_BCR_EX2;
// 抠图面单信息
typedef struct _MV_CODEREADER_WAYBILL_INFO_
{
// 面单坐标信息
float fCenterX; // 中心点列坐标
float fCenterY; // 中心点行坐标
float fWidth; // 矩形宽度,宽度为长半轴
float fHeight; // 矩形高度,高度为短半轴
float fAngle; // 矩形角度
float fConfidence; // 置信度
// 面单图片
unsigned char* pImageWaybill;
unsigned int nImageLen;
unsigned int nOcrRowNum; // 当前面单内的ocr行数
unsigned int nReserved[11];
}MV_CODEREADER_WAYBILL_INFO;
// 面单信息列表
typedef struct _MV_CODEREADER_WAYBILL_LIST_
{
unsigned int nWaybillNum; // 面单数量
enum MV_CODEREADER_IAMGE_TYPE enWaybillImageType; // 面单图像类型可选择bmp、raw、jpg输出
MV_CODEREADER_WAYBILL_INFO stWaybillInfo[MAX_CODEREADER_WAYBILL_COUNT]; // 面单信息
unsigned int nOcrAllNum; // 所有面单内的OCR总行数 面单1(ocr)+面单2(ocr)+...
unsigned int nReserved[3]; // 保留字节
}MV_CODEREADER_WAYBILL_LIST;
// OCR基础信息
typedef struct _MV_CODEREADER_OCR_ROW_INFO_
{
unsigned int nID; // OCR ID
unsigned int nOcrLen; // OCR字符实际真实长度
char chOcr[MV_CODEREADER_MAX_OCR_LEN]; // 识别到的OCR字符
float fCharConfidence; // 字符行整体置信度
unsigned int nOcrRowCenterX; // 单行OCR中心点列坐标
unsigned int nOcrRowCenterY; // 单行OCR中心点行坐标
unsigned int nOcrRowWidth; // 单行OCR矩形宽度宽度为长半轴
unsigned int nOcrRowHeight; // 单行OCR矩形高度高度为短半轴
float fOcrRowAngle; // 单行OCR矩形角度
float fDeteConfidence; // 单行OCR定位置信度
unsigned short sOcrAlgoCost; // OCR算法耗时 单位ms
unsigned short sReserved; // 预留
int nReserved[31];
}MV_CODEREADER_OCR_ROW_INFO;
// OCR信息列表
typedef struct _MV_CODEREADER_OCR_INFO_LIST_
{
unsigned int nOCRAllNum; // 所有面单内的OCR总行数
MV_CODEREADER_OCR_ROW_INFO stOcrRowInfo[MAX_CODEREADER_OCR_COUNT]; // OCR行基础信息
int nReserved[8]; // 保留字节
}MV_CODEREADER_OCR_INFO_LIST;
// 图像输出信息扩展(OCR信息)
typedef struct _MV_CODEREADER_IMAGE_OUT_INFO_EX_
{
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
enum MvCodeReaderGvspPixelType enPixelType; // 像素或图片格式
unsigned int nTriggerIndex; // 触发序号
unsigned int nFrameNum; // 帧号
unsigned int nFrameLen; // 当前帧数据大小
unsigned int nTimeStampHigh; // 时间戳高32位
unsigned int nTimeStampLow; // 时间戳低32位
unsigned int bFlaseTrigger; // 是否误触发
unsigned int nFocusScore; // 聚焦得分
bool bIsGetCode; // 是否读到条码
MV_CODEREADER_RESULT_BCR* pstCodeList; // 条码信息列表
MV_CODEREADER_WAYBILL_LIST* pstWaybillList; // 面单信息
unsigned int nEventID; // 事件ID
unsigned int nChannelID; // 对应Stream通道序号
unsigned int nImageCost; // 帧图像在相机内部的处理耗时
union
{
MV_CODEREADER_OCR_INFO_LIST* pstOcrList; // OCR信息
int64_t nAligning;
}UnparsedOcrList;
unsigned int nReserved[4]; // 保留字节
}MV_CODEREADER_IMAGE_OUT_INFO_EX;
// 图像输出信息扩展(条码信息扩展条码最大个数条码字符长度扩展为4096)
typedef struct _MV_CODEREADER_IMAGE_OUT_INFO_EX_2_
{
unsigned short nWidth; // 图像宽
unsigned short nHeight; // 图像高
enum MvCodeReaderGvspPixelType enPixelType; // 像素或图片格式
unsigned int nTriggerIndex; // 触发序号
unsigned int nFrameNum; // 帧号
unsigned int nFrameLen; // 当前帧数据大小
unsigned int nTimeStampHigh; // 时间戳高32位
unsigned int nTimeStampLow; // 时间戳低32位
unsigned int bFlaseTrigger; // 是否误触发
unsigned int nFocusScore; // 聚焦得分
bool bIsGetCode; // 是否读到条码
MV_CODEREADER_RESULT_BCR_EX* pstCodeListEx; // 条码信息列表
MV_CODEREADER_WAYBILL_LIST* pstWaybillList; // 面单信息
unsigned int nEventID; // 事件ID
unsigned int nChannelID; // 对应Stream通道序号
unsigned int nImageCost; // 帧图像在相机内部的处理耗时
union
{
MV_CODEREADER_RESULT_BCR_EX2* pstCodeListEx2; // 条码信息(条码字符长度扩展)建议以该扩展条码字符的条码信息解析条码
int64_t nAligning;
}UnparsedBcrList;
union
{
MV_CODEREADER_OCR_INFO_LIST* pstOcrList; // OCR信息
int64_t nAligning;
}UnparsedOcrList;
unsigned int nReserved[26]; // 保留字节
}MV_CODEREADER_IMAGE_OUT_INFO_EX2;
// 触发信息
typedef struct _MV_CODEREADER_TRIGGER_INFO_DATA_
{
unsigned int nTriggerIndex; // 触发序号 即同步触发号
unsigned int nTriggerFlag; //触发状态 1开始 0结束
// 当前的触发状态对应的时间戳分高、低位传输各4个字节
unsigned int nTriggerTimeHigh; // 触发时间高4位
unsigned int nTriggerTimeLow; // 触发时间低4位
unsigned int nOriginalTrigger; // 原生触发号(相机自带的触发号)
unsigned short nIsForceOver; // 是否强制结束0--正常结束 1--强制结束 属于相机内部机制主动传输 上层无法设置生效)
unsigned short nIsMainCam; // 主从标记 1--主相机 0--从相机
int64_t nHostTimeStamp; // 主机生成的时间戳
unsigned int reserved[30]; // 预留
}MV_CODEREADER_TRIGGER_INFO_DATA;
// 触发模式
typedef enum _MV_CODEREADER_TRIGGER_MODE_
{
MV_CODEREADER_TRIGGER_MODE_OFF = 0, // 触发关闭
MV_CODEREADER_TRIGGER_MODE_ON = 1, // 触发打开
}MV_CODEREADER_TRIGGER_MODE;
// 触发源
typedef enum _MV_CODEREADER_TRIGGER_SOURCE_
{
MV_CODEREADER_TRIGGER_SOURCE_LINE0 = 0, // Line0
MV_CODEREADER_TRIGGER_SOURCE_LINE1 = 1, // Line1
MV_CODEREADER_TRIGGER_SOURCE_LINE2 = 2, // Line2
MV_CODEREADER_TRIGGER_SOURCE_LINE3 = 3, // Line3
MV_CODEREADER_TRIGGER_SOURCE_COUNTER0 = 4, // 计数器0触发
MV_CODEREADER_TRIGGER_SOURCE_TCPSERVERSTART = 5, // Tcp服务器触发
MV_CODEREADER_TRIGGER_SOURCE_UDPSTART = 6, // Udp触发
MV_CODEREADER_TRIGGER_SOURCE_SOFTWARE = 7, // 软触发
MV_CODEREADER_TRIGGER_SOURCE_SERIALSTART = 8, // 串口触发
MV_CODEREADER_TRIGGER_SOURCE_SELFTRIGGER = 9, // 自触发
MV_CODEREADER_TRIGGER_SOURCE_MAINSUB = 10, // 主从触发
MV_CODEREADER_TRIGGER_SOURCE_TCPCLIENTSTART = 12, // Tcp客户端触发
}MV_CODEREADER_TRIGGER_SOURCE;
// 条码类型
typedef enum _MV_CODEREADER_CODE_TYPE_
{
MV_CODEREADER_CODE_NONE = 0, // 无可识别条码
// 二维码
MV_CODEREADER_TDCR_DM = 1, // DM码
MV_CODEREADER_TDCR_QR = 2, // QR码
MV_CODEREADER_TDCR_MICROQR = 140, // MicroQR码
// 一维码
MV_CODEREADER_BCR_EAN8 = 8, // EAN8码
MV_CODEREADER_BCR_UPCE = 9, // UPCE码
MV_CODEREADER_BCR_UPCA = 12, // UPCA码
MV_CODEREADER_BCR_EAN13 = 13, // EAN13码
MV_CODEREADER_BCR_ISBN13 = 14, // ISBN13码
MV_CODEREADER_BCR_CODABAR = 20, // 库德巴码
MV_CODEREADER_BCR_ITF25 = 25, // 交叉25码
MV_CODEREADER_BCR_CODE39 = 39, // Code 39
MV_CODEREADER_BCR_CODE93 = 93, // Code 93
MV_CODEREADER_BCR_CODE128 = 128, // Code 128
MV_CODEREADER_TDCR_PDF417 = 131, // PDF417码
MV_CODEREADER_BCR_MATRIX25 = 26, // MATRIX25码
MV_CODEREADER_BCR_MSI = 30, // MSI码
MV_CODEREADER_BCR_CODE11 = 31, // code11
MV_CODEREADER_BCR_INDUSTRIAL25 = 32, // industrial25
MV_CODEREADER_BCR_CHINAPOST = 33, // 中国邮政码
MV_CODEREADER_BCR_ITF14 = 27, // 交叉14码
MV_CODEREADER_BCR_PHARMACODE = 36, // Pharmacode码
MV_CODEREADER_BCR_PHARMACODE2D = 37, // Pharmacode Two Track码
MV_CODEREADER_TDCR_ECC140 = 133, // ECC140码制
MV_CODEREADER_TDCR_AZTEC = 132, // AZTEC码
}MV_CODEREADER_CODE_TYPE;
// 节点访问模式
enum MV_CODEREADER_XML_AccessMode
{
MV_CODEREADER_AM_NI, // 节点未实现
MV_CODEREADER_AM_NA, // 节点不可达
MV_CODEREADER_AM_WO, // 节点只写
MV_CODEREADER_AM_RO, // 节点只读
MV_CODEREADER_AM_RW, // 节点可读可写
MV_CODEREADER_AM_Undefined, // 节点未定义
MV_CODEREADER_AM_CycleDetect, // 节点需周期检测
};
// 每个节点对应的接口类型
enum MV_CODEREADER_XML_InterfaceType
{
MV_CODEREADER_IFT_IValue, // Value类型值
MV_CODEREADER_IFT_IBase, // Base类型值
MV_CODEREADER_IFT_IInteger, // Integer类型值
MV_CODEREADER_IFT_IBoolean, // Boolean类型值
MV_CODEREADER_IFT_ICommand, // Command类型值
MV_CODEREADER_IFT_IFloat, // Float类型值
MV_CODEREADER_IFT_IString, // String类型值
MV_CODEREADER_IFT_IRegister, // Register类型值
MV_CODEREADER_IFT_ICategory, // Category类型值
MV_CODEREADER_IFT_IEnumeration, // Enumeration类型值
MV_CODEREADER_IFT_IEnumEntry, // EnumEntry类型值
MV_CODEREADER_IFT_IPort, // Port类型值
};
// 输出信息类型
enum MvCodeReaderType
{
CodeReader_ResType_NULL = 0, // 没有结果输出
CodeReader_ResType_BCR = 1, // 输出信息为BCR(对应结构体 MV_CODEREADER_RESULT_BCR)
};
/************************************************************************/
/* 升级相关高级参数 */
/************************************************************************/
// 设备运行状态
enum MV_CODEREADER_PROGRAM_STATE
{
MV_CODEREADER_PROGRAM_UNKNOWN, // 未知状态
MV_CODEREADER_PROGRAM_RUNNING, // 设备正在运行
MV_CODEREADER_PROGRAM_STOP // 设备停止运行
};
// 设备当前连接状态
typedef enum _MV_CODEREADER_DEVICE_CONNECT_STATUS_
{
MV_CODEREADER_DEVICE_STATUS_FREE = 1, // 空闲状态
MV_CODEREADER_DEVICE_STATUS_BASE = 2, // 第三方连接状态
}MV_CODEREADER_DEVICE_CONNECT_STATUS;
//明场/暗场矫正模式
typedef enum _MV_CODEREADER_FIELD_CORRECT_MODE_
{
MV_CODEREADER_DARK_FILED_CORRECT = 0, // 暗场校验
MV_CODEREADER_BRIGHT_FILED_CORRECT = 1, // 明场校验
MV_CODEREADER_INVAILED_FILED_CORRECT = 2, // 无效校验
}MV_CODEREADER_FIELD_CORRECT_MODE;
#endif /* _MV_CODEREADER_PARAMS_H_ */