using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace IDViewer_2D { class IDViewerDefines { // 使用枚举表示回调消息ID public enum CallbackMessageID { DeviceConnectionEstablished = 1, DeviceConnectionClosed = 2 } public enum ErrorCodes { ID_OK = 0, //成功 ID_ERROR_ALREADY_INIT = 146000010, //已经初始化 ID_ERROR_NOT_INIT = 146000011, //未初始化 ID_ERROR_CREATE_DEVICE_INFO_NOT_EXSIST = 146000012, //当前创建设备不存在 ID_ERROR_SET_IP_DEVICE_ALREADY_CREATED = 146000013, //当前设置IP设备已经创建 ID_ERROR_DEVICE_HAVE_OPENED = 146000014, //设备已经打开 ID_ERROR_OPEN_DEVICE_CONNECT_PARAMS_ERROR = 146000015, //打开设备连接参数错误 ID_ERROR_OPEN_DEVICE_CONNECT_IS_CREATE = 146000016, //打开设备连接已经创建 ID_ERROR_OPEN_DEVICE_CONNECT_SOCKET_FAILED = 146000017, //打开设备连接建立失败 ID_ERROR_OPEN_DEVICE_CONNECT_FAILED = 146000018, //打开设备连接失败 ID_ERROR_DEVICE_NOT_OPEN = 146000019, //设备未打开 ID_ERROR_DEVICE_IS_RUNNING = 146000020, //设备已经在运行模式 ID_ERROR_DEVICE_IS_DEBUGGING = 146000021, //设备已经在调试模式 ID_ERROR_DEVICE_QUERY_HARDWARE_INFO_FAILED = 146000022, //获取设备硬件信息失败 ID_ERROR_OPEN_DEVICE_CREATE_DATA_RECEIVED_FAILED = 146000023, //打开设备接收数据服务创建失败 ID_ERROR_OPEN_DEVICE_SOLUTION_MANAGER_CONNECTION_FAILED = 146000024, //打开设备时连接方案管理工具失败 ID_ERROR_SOLUTION_MANAGER_TIMEOUT = 146000025, //方案管理类超时 ID_ERROR_SOLUTION_MANAGER_CAN_NOT_DELETE_CURRENT_SOLUTION = 146000026, //不能删除当前方案 ID_ERROR_SOLUTION_MANAGER_CURRENT_SOLUTION_NOT_EXISTED = 146000027, //当前方案不存在 ID_ERROR_SET_IP_ADDRESS_INVALID = 146000028, //设置IP地址不合法 ID_ERROR_SET_IP_MASK_INVALID = 146000029, //设置子网掩码地址不合法 ID_ERROR_SET_IP_GATEWAY_INVALID = 146000030, //设置网关地址不合法 ID_ERROR_SET_IP_ADDRESS_GATEWAY_NOT_IN_SAME_SUBNET = 146000031, //设置的IP地址和网关不在同一网段 ID_ERROR_SET_IP_ADDRESS_ALREADY_EXISTED = 146000032, //设置的IP已经存在 ID_ERROR_SOLUTION_MANAGER_SOLUTION_NAME_INVALID = 46000033 //方案名称非法,不能包含<>:\"/\\|?* } public enum IDImageType { ID_IMAGE_8U_C = 0, // 8位无符号类型 ID_IMAGE_8S_C, // 8位有符号类型 ID_IMAGE_16U_C, // 16位无符号类型 ID_IMAGE_16S_C, // 16位有符号类型 ID_IMAGE_32S_C, // 32位有符号类型 ID_IMAGE_32F_C, // 32位浮点类型 ID_IMAGE_64F_C // 64位浮点类型 } //条码类型枚举 public enum IDCodeType { ID_CODETYPE_UNKNOWN_C = 0x0, ID_CODETYPE_CODE39_C = 0x1, ID_CODETYPE_CODE128_C = 0x2, ID_CODETYPE_EAN8_C = 0x4, ID_CODETYPE_EAN13_C = 0x8, ID_CODETYPE_UPC_A_C = 0x10, ID_CODETYPE_UPC_E_C = 0x20, ID_CODETYPE_CODE93_C = 0x40, ID_CODETYPE_ITF_C = 0x80, ID_CODETYPE_GS1_128_C = 0x100, ID_CODETYPE_GS1_DATABAR_EXPANDED_C = 0x200, ID_CODETYPE_GS1_DATABAR_C = 0x400, ID_CODETYPE_GS1_DATABAR_STACKED_C = 0x600, ID_CODETYPE_GS1_DATABAR_EXPANDED_STACKED_C = 0x800, ID_CODETYPE_GS1_DATABAR_LINITED_C = 0x1000, ID_CODETYPE_PHARMACODE_C = 0x2000, ID_CODETYPE_MSI_C = 0x4000, ID_CODETYPE_PLESSEY_C = 0x8000, ID_CODETYPE_CODEBAR_C = 0x10000, ID_CODETYPE_INT2OF5_C = 0x20000, ID_CODETYPE_STD2OF5_C = 0x40000, ID_CODETYPE_MTX2OF5_C = 0x80000, ID_CODETYPE_DATAMATRIX_C = 0x04000000, ID_CODETYPE_QRCODE_C = 0x08000000, ID_CODETYPE_PDF417_C = 0x010000000, ID_CODETYPE_MICROQR_C = 0x020000000, ID_CODETYPE_AZTEC_C = 0x040000000, //ID_CODETYPE_VERICODE_C = 0x080000000 } public struct IDDeviceInfo { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public char[] networkIP; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] networkMask; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] networkGateway; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string networkAdapterFriendName; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] networkMac; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public char[] cameraIP; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraNetMask; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraGateWay; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraMac; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraSN; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraModel; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraManufucturer; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraSoftwareVersion; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraFirmwareVersion; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraAlias; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] cameraType; } //硬件信息通用节点结构体 public struct IDNodeParam { public float maxValue; public float minValue; public float value; public int type; } public IDNodeParam createIDNodeParam_C() { IDNodeParam param; param.maxValue = 0; param.minValue = 0; param.value = 0; param.type = 0; return param; } //硬件信息结构体 public struct IDDeviceHarewareParams { public int imageWidth; public int imageHight; public IDNodeParam exposureStep; public IDNodeParam exposure; public IDNodeParam gamma; public IDNodeParam gain; public IDNodeParam illuminanatInerval; public IDNodeParam focusingLocation; public IDNodeParam DICount; public IDNodeParam DOCount; public IDNodeParam isOpenSightingDevice; } public IDDeviceHarewareParams createID_DEVICE_HARDWARE_PARAMS() { IDDeviceHarewareParams HarewareParams; HarewareParams.imageWidth = 0; HarewareParams.imageHight = 0; HarewareParams.exposureStep = createIDNodeParam_C(); HarewareParams.exposure = createIDNodeParam_C(); HarewareParams.gamma = createIDNodeParam_C(); HarewareParams.gain = createIDNodeParam_C(); HarewareParams.illuminanatInerval = createIDNodeParam_C(); HarewareParams.focusingLocation = createIDNodeParam_C(); HarewareParams.DICount = createIDNodeParam_C(); HarewareParams.DOCount = createIDNodeParam_C(); HarewareParams.isOpenSightingDevice = createIDNodeParam_C(); return HarewareParams; } //点类型结构体 public struct IDPoint { public double x; public double y; } //质量评估输出结果 //ISO IEC 15416-2016 public struct IDQuality15416 { public float overallQuality; public float decode; public float edgeDetermination; public float symbolContrast; public float minReflectance; public float minEdgeContrast; public float modulation; public float quietZone; public float decodability; public float defects; } //ISO_IEC15415-2011 QR public struct IDQualityQR15415 { public float overallQuality; public float decode; public float symbolContrast; public float fixedPatternDamage; public float modulation; public float reflectanceMargin; public float unusedErrCorrection; public float axialNonuniformity; public float gridNonuniformity; public float formatInformation; public float versionInformation; public float contrastUniformity; public float printGrowth; public float aperture; } //DM 15415码质量 public struct IDQualityDM15415 { public float overallQuality; public float decode; public float symbolContrast; public float fixedPatternDamage; public float modulation; public float reflectanceMargin; public float unusedErrCorrection; public float axialNonuniformity; public float gridNonuniformity; public float contrastUniformity; public float printGrowth; public float aperture; } //ISO IEC TR 29158-2011(AIM-DPM-1-2006) public struct IDQualityDM29518 { public float overallQuality; public float decode; public float cellContrast; public float cellModulation; public float reflectanceMargin; public float fixedPatternDamage; public float axialNonuniformity; public float gridNonuniformity; public float unusedErrCorrection; public float contrastUniformity; public float meanLight; public float printGrowth; public float aperture; } //QR 29158结构体 public struct IDQualityQR29518 { public float overallQuality; public float decode; public float cellContrast; public float cellModulation; public float fixedPatternDamage; public float reflectanceMargin; public float unusedErrCorrection; public float axialNonuniformity; public float gridNonuniformity; public float formatInformation; public float versionInformation; public float contrastUniformity; public float meanLight; public float printGrowth; public float aperture; } public struct IDQualityPDF417_15415 { public float overallQuality; public float decode; public float symbolContrast; public float fixPattern; public float modulation; public float unusedErrCorrection; public float axialNonuniformity; public float gridNonuniformity; public float startStopPattern; public float codewordYield; public float defects; public float aperture; } [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 36)] public struct IDDecodeInfo { [MarshalAs(UnmanagedType.I1)] public bool decodeStatus; //解码结果状态OK/NG public float runtime; //解码耗时 public uint hardParamIndex; public uint successCount; //解码成功数 public uint failedCount; //解码失败数 public uint decodeCount; //总解码数 public double decodeRate; //解码率 public uint IDDecodeROIInfoLength; //ROI解码信息数组的长度 } //当前ROI解码结果 public struct IDDecodeROIInfo { public int roiIndex; //ROI编号 public int decodeReusltLength; } //当前解码结果,当前版本每个解码结果中的集合,只有一个码制有结果,里面的长度代表的是当前码类型的解码个数 public struct IDDecodeResult { public int conbination; public int dmResultsLength; public int qrResultsLength; public int pdf417ResultsLength; public int barcodeResultsLength; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi,Pack = 1)] public struct IDDMCodeResult { [MarshalAs(UnmanagedType.I1)] public bool state; // 当前结果解码状态 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256 )] public char[] subType; // 子类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] codeString; // 解码结果 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] polarity; // 极性 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] shape; // 样式 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] mirror; // 镜像 public int contrast; // 对比度 public float moduleSize; public float orientation; } //QR解码结果 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDQRCodeResult { [MarshalAs(UnmanagedType.I1)] public bool state; //当前结果解码状态 //IDCodeType codeType; //条码类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] codeString; //解码结果 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] subType; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] polarity; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] errorLevel; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] mirror; //镜像 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] version; //版本信息 public int contrast; public float moduleSize; public float orientation; //角度 } //PDF417解码结果 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDPDF417CodeResult { [MarshalAs(UnmanagedType.I1)] public bool state; //当前结果解码状态 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] codeString; //解码结果 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] subType; //子类型 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] polarity; //极性 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] mirror; //镜像 public int symbolRows; public int symbolCols; public int errorLevel; public int contrast; public float moduleHeight; public float pixelPerModule; //moduleWidth public float moduleRatio; public float orientation; //角度 //IDQualityPDF417_15415 quality15415; } //barcode解码结果 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDBarCodeResult { [MarshalAs(UnmanagedType.I1)] public bool state; //当前结果解码状态 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] codeString; //解码结果 public float orientation; //角度 public float pixelPerModule; } public unsafe struct StringList { public char** items; public int size; public int capacity; } } }