using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using static SmartScanner.IDViewerDefines; using System.Dynamic; using System.Net; namespace SmartScanner { 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_ERRORREATE_DEVICE_INFO_NOT_EXSIST = 146000012, //当前创建设备不存在 ID_ERROR_SET_IP_DEVICE_ALREADYREATED = 146000013, //当前设置IP设备已经创建 ID_ERROR_DEVICE_HAVE_OPENED = 146000014, //设备已经打开 ID_ERROR_OPEN_DEVICEONNECT_PARAMS_ERROR = 146000015, //打开设备连接参数错误 ID_ERROR_OPEN_DEVICEONNECT_ISREATE = 146000016, //打开设备连接已经创建 ID_ERROR_OPEN_DEVICEONNECT_SOCKET_FAILED = 146000017, //打开设备连接建立失败 ID_ERROR_OPEN_DEVICEONNECT_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_DEVICEREATE_DATA_RECEIVED_FAILED = 146000023, //打开设备接收数据服务创建失败 ID_ERROR_OPEN_DEVICE_SOLUTION_MANAGERONNECTION_FAILED = 146000024, //打开设备时连接方案管理工具失败 ID_ERROR_SOLUTION_MANAGER_TIMEOUT = 146000025, //方案管理类超时 ID_ERROR_SOLUTION_MANAGERAN_NOT_DELETEURRENT_SOLUTION = 146000026, //不能删除当前方案 ID_ERROR_SOLUTION_MANAGERURRENT_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, //方案名称非法,不能包含<>:\"/\\|?* ID_ERROR_SET_PARAMS_CAN_NOT_WHEN_RUNNING = 146000034, //运行中不能设置该参数 ID_ERROR_SET_PARAMS_ROI_NOT_EXISTED = 146000035, //删除的ROI不存在 ID_ERROR_DEBUG_RESPONSE_TYPE_ERROR = 146000036, //调试反馈信息类型不匹配 ID_ERROR_DEVICE_TYPE_NO_SUCH_FUNCTION = 146000037, //当前设备类型没有该功能 ID_ERROR_DEBUG_GET_FOCUS_FAILED = 146000038, //获取焦距失败 ID_ERROR_DEBUG_AUTO_FOCUS_FAILED = 146000039, //自动对焦失败 ID_ERROR_SOLUTION_LOAD_CONTENT_ERROR = 146000040, //方案内容解析失败 ID_ERROR_SOLUTION_PARAMS_INDEX_ERROR = 146000041, //参数组错误 ID_ERROR_SOLUTION_ILLUMINAN_INDEX_ERROR = 146000042, //光源通道错误 ID_ERROR_SOLUTION_ILLUMINAN_BRIGHTNESS_VALUE_ERROR = 146000043, //光源通道亮度错误 ID_ERROR_SOLUTION_DOWNLOAD_ERROR = 146000044, //当前方案下载失败 ID_ERROR_IMAGE_CAPTURE_TIMEOUT = 146000045, //抓图超时 ID_ERROR_ROI_ADD_LIMIT_REACHED = 146000046, //ROI添加上限已达到 ID_ERROR_SET_PARAMS_CODETYPE_NOT_EXISTED = 146000047, //删除的码制不存在 ID_ERROR_DEVICE_NOT_IN_FREE_ACQUISITION_MODE = 146000048, //相机未处于自由采集模式 ID_ERROR_SET_PARAMS_OCR_NOT_EXISTED = 146000049, //删除的OCR不存在 ID_ERROR_CONFIG_LOAD_CONTENT_ERROR = 146000050, //配置内容解析失败 ID_ERROR_CONFIG_ITEM_NOT_EXISTED = 146000051, //配置项不存在 ID_ERROR_CONFIG_ITEM_SET_FAILED = 146000052, //配置项设置失败 ID_ERROR_CONFIG_ITEM_GET_FAILED = 146000053, //配置项获取失败 ID_ERROR_DO_ADD_LIMIT_RECHED = 146000054, //DO添加上限已达到 ID_ERROR_TRIGGER_SOURCE_NO_EXISTED = 146000055, //触发源不存在 ID_ERROR_PARAM_NO_FOUND = 146000056, //参数不存在 ID_ERROR_PARAM_POSITION_INVALID = 146000057, //参数坐标异常 ID_ERROR_SET_PARAMS_CAN_NOT_WHEN_DEBUGING = 146000058, //调试中不能设置该参数 ID_ERROR_DI_ADD_LIMIT_RECHED = 146000059, //DI添加上限已达到 } public enum IDImageType { ID_IMAGE_8U = 0, // 8位无符号类型 ID_IMAGE_8S, // 8位有符号类型 ID_IMAGE_16U, // 16位无符号类型 ID_IMAGE_16S, // 16位有符号类型 ID_IMAGE_32S, // 32位有符号类型 ID_IMAGE_32F, // 32位浮点类型 ID_IMAGE_64F // 64位浮点类型 } /* *触发模式 */ public enum IDTriggerModel { ID_TRIGGER_HOLD_MODEL_SINGLE_FRAME = 0, //单帧触发 ID_TRIGGER_HOLD_MODEL_MULTI_FRAME = 1, //多帧触发 ID_TRIGGER_HOLD_MODEL_HOLD = 2, //触发保持 ID_TRIGGER_HOLD_MODEL_READ_SUCCESS = 3 //读取成功输出 } /* *信号持续条件 */ public enum IDTriggerSignalHoldCondition { ID_TRIGGER_HOLDONDITION_TIMES = 0, //时间 ID_TRIGGER_HOLDONDITION_FRAMES, //采集帧数 } /* *触发源 */ public enum IDTriggerSource { //ID_TRIGGER_SOURCE_TCP_SERVER = 2, //tcp服务器触发 //ID_TRIGGER_SOURCE_TCPLIENT = 3, //tcp客户端触发 //ID_TRIGGER_SOURCE_UDP = 4, //UDP触发 //ID_TRIGGER_SOURCE_SERIAL_PORT = 5, //串口触发 //ID_TRIGGER_SOURCE_HARDWARE = 13 //硬件触发 ID_TRIGGER_SOURCE_SOFT = 0, //软触发 ID_TRIGGER_SOURCE_AUTO, //自动触发 ID_TRIGGER_SOURCE_TCP_SERVER, //tcp服务器触发 ID_TRIGGER_SOURCE_TCP_CLIENT, //tcp客户端触发 ID_TRIGGER_SOURCE_UDP, //UDP触发 ID_TRIGGER_SOURCE_SERIAL_PORT, //串口触发 ID_TRIGGER_SOURCE_MODBUS, //modbus触发 ID_TRIGGER_SOURCE_EIP, //EIP触发 ID_TRIGGER_SOURCE_PROFINET, //profinet触发 ID_TRIGGER_SOURCE_FINS, //Fins协议触发 ID_TRIGGER_SOURCE_MC, //MC触发 ID_TRIGGER_SOURCE_ETHERCAT, //Ethercat ID_TRIGGER_SOURCE_NETWORKING, //组网触发 ID_TRIGGER_SOURCE_HARDWARE, //硬件触发 ID_TRIGGER_SOURCE_SENSING //感应模式 } /* *触发参数 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDTriggerParams { [MarshalAs(UnmanagedType.I1)] public bool triggerStatus; //触发状态 public uint triggerDelay; //触发延迟ms public IDTriggerModel triggerModel; //触发模式 public IDTriggerSignalHoldCondition conditionMode; //==信号保持条件模式 注:只有触发模式选择“多帧”、“读取成功输出”时有效 public uint triggerFrames; //==触发采集帧数 注:只有在信号保持条件模式选择“采集帧数”时有效 public uint triggerDuration; //触发持续时间 注:只有在信号保持条件为时“时间”有效 public uint triggerCodeNum; //读取条码数 注:只有触发模式选择“读取成功输出”时有效 public IDTriggerSource triggerSource; //触发源 public uint triggerInterval; //软触发间隔ms [MarshalAs(UnmanagedType.I1)] public bool statisticByCodeNum; //码数目统计使能(只有触发模式选择“读取成功输出”时有效) } public class IDTriggerParamsCreate { public IDTriggerParams createIDTriggerParams() { IDTriggerParams idtriParams = new IDTriggerParams(); idtriParams.triggerStatus = false; idtriParams.triggerDelay = 0; idtriParams.triggerModel = IDTriggerModel.ID_TRIGGER_HOLD_MODEL_SINGLE_FRAME; idtriParams.conditionMode = IDTriggerSignalHoldCondition.ID_TRIGGER_HOLDONDITION_TIMES; idtriParams.triggerFrames = 1; idtriParams.triggerDuration = 2000; idtriParams.triggerCodeNum = 1; idtriParams.triggerSource = IDTriggerSource.ID_TRIGGER_SOURCE_TCP_SERVER; idtriParams.triggerInterval = 500; idtriParams.statisticByCodeNum = false; return idtriParams; } } /* *硬件触发极性 */ public enum IDTriggerPolarity { ID_HARDWARE_TRRIGER_LOW_LEVEL = 0, //低电平 ID_HARDWARE_TRRIGER_HIGH_LEVEL = 1, //高电平 ID_HARDWARE_TRRIGER_RISING_EDEG = 2, //上升沿 ID_HARDWARE_TRRIGER_FALLING_EDEG = 3 //下降沿 } /* *硬件触发参数 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDHardwareTrigger { public uint debounceTime; //消抖时间us public IDTriggerPolarity triggerPolarity; //触发极性 [MarshalAs(UnmanagedType.I1)] public bool restrictCodeNum; //启用最大解码数 public uint triggerCodeNum; //码数目 public uint triggerTimeout; //触发超时ms [MarshalAs(UnmanagedType.I1)] public bool elecLevelStatisticByCodeNum; //高低电平码数目统计使能(高低电平启用最大解码数开启才生效) } public class IDHardwareTriggerCreate { public IDHardwareTrigger createIDHardwareTrigger() { IDHardwareTrigger IDhardwareTrigger = new IDHardwareTrigger(); IDhardwareTrigger.debounceTime = 100; IDhardwareTrigger.triggerPolarity = IDTriggerPolarity.ID_HARDWARE_TRRIGER_RISING_EDEG; //默认高电平上升沿触发 IDhardwareTrigger.restrictCodeNum = false; IDhardwareTrigger.triggerCodeNum = 1; IDhardwareTrigger.triggerTimeout = 0; IDhardwareTrigger.elecLevelStatisticByCodeNum = false; return IDhardwareTrigger; } } /* *TCP服务器触发 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDTcpServerTrigger { public uint port; //服务器端口 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string startCommand; //开始指令 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string endCommand; //结束指令 [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 } public class IDTcpServerTriggerCreate { public IDTcpServerTrigger createIDTcpServerTrigger() { IDTcpServerTrigger temTcpServer = new IDTcpServerTrigger(); temTcpServer.port = 1024; temTcpServer.startCommand = "start"; temTcpServer.endCommand = "stop"; temTcpServer.enableHEX = false; return temTcpServer; } } /* *TCP客户端触发 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDTcpClientTrigger { public uint port; //服务器端口 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string ipAddress; //服务器IP地址 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string startCommand; //开始指令 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string endCommand; //结束指令 [MarshalAs(UnmanagedType.I1)] public bool heartBeatEnable; //心跳使能 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string heartBeatCmd; //心跳指令 public uint heartBeatPeriod; //心跳周期(ms)最小值50ms [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 } public class IDTcpClientTriggerCreate { public IDTcpClientTrigger createIDTcpClientTrigger() { IDTcpClientTrigger temIDTcpClient = new IDTcpClientTrigger(); temIDTcpClient.port = 1024; temIDTcpClient.ipAddress = "127.0.0.1"; temIDTcpClient.startCommand = "start"; temIDTcpClient.endCommand = "stop"; temIDTcpClient.heartBeatEnable = false; temIDTcpClient.heartBeatCmd = "heartBeat"; temIDTcpClient.heartBeatPeriod = 500; temIDTcpClient.enableHEX = false; return temIDTcpClient; } } /* *串口触发配置,对应串口参数配置使用串口通讯中数据 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDSerialPortTrigger { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string startCommand; //开始指令 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string endCommand; //结束指令 [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 } public class IDSerialPortTriggerCreate { public IDSerialPortTrigger createIDSerialPortTrigger() { IDSerialPortTrigger temIDSerialPort = new IDSerialPortTrigger(); temIDSerialPort.startCommand = "start"; temIDSerialPort.endCommand = "stop"; temIDSerialPort.enableHEX = false; return temIDSerialPort; } } /* *UDP触发 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDUDPTrigger { public uint port; //端口 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string startCommand; //开始指令 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string endCommand; //结束指令 [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 } public class IDUDPTriggerCreate { public IDUDPTrigger createIDUDPTrigger() { IDUDPTrigger temIDUDP = new IDUDPTrigger(); temIDUDP.port = 1025; temIDUDP.startCommand = "start"; temIDUDP.endCommand = "stop"; temIDUDP.enableHEX = false; return temIDUDP; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDFilterInfo { [MarshalAs(UnmanagedType.I1)] public bool preventDuplicatEnable; //预防重复读取 [MarshalAs(UnmanagedType.I1)] public bool removeDuplicateEnable; //去除重复使能 [MarshalAs(UnmanagedType.I1)] public bool historyTimesEnable; //历史过滤使能 [MarshalAs(UnmanagedType.I1)] public bool readThresholdEnable; //读取阈值使能 [MarshalAs(UnmanagedType.I1)] public bool frameDuplicateEnable; //逐帧去重使能 [MarshalAs(UnmanagedType.I1)] public bool angleEnable; //角度过滤开关 public uint preventDuplicate; //预防重复读取时间 public uint historyTimes; //历史过滤帧数 public uint readCountThreshold; //读取次数阈次数 public uint angleInit; public uint angleOffset; } public class IDFilterInfoCreate { public IDFilterInfo createIDFilterInfo() { IDFilterInfo temIDFilterInfo = new IDFilterInfo { preventDuplicatEnable = false, historyTimesEnable = false, readThresholdEnable = false, angleEnable = false, removeDuplicateEnable = true, frameDuplicateEnable = true, preventDuplicate = 20, historyTimes = 1, readCountThreshold = 1, angleInit = 0, angleOffset = 0, }; return temIDFilterInfo; } } public enum IDFilterMode { ID_FILTER_MODE_REGULAR_C = 0, //普通过滤 ID_FILTER_MODE_REGEX_C //正则表达式 } //每个ROI的codex的规则 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDFilterRules { public int minlength; //最小条码长度 public int maxlength; //最大条码长度 public long minvalue; //最小值 public long maxvalue; //最大值 [MarshalAs(UnmanagedType.I1)] public bool caseSensitive; //匹配大小写 [MarshalAs(UnmanagedType.I1)] public bool onlyDigital; //纯数字 [MarshalAs(UnmanagedType.I1)] public bool onlyAlpha; //纯字母 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string startstring; //以指定字符串开始 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string endstring; //以指定字符串结束 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string constring; //包含指定字符串 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string NotConstring; //不包含指定字符串 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string wildcardstring; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string rule_str; //规则名称 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)] public string regexPattern; public IDFilterMode filterMode; } public class IDFilterRulesCreate { public IDFilterRules createIDFilterRules() { IDFilterRules temIDFilterRules = new IDFilterRules(); temIDFilterRules.minlength = 0; temIDFilterRules.maxlength = 0; temIDFilterRules.minvalue = 0; temIDFilterRules.maxvalue = 0; temIDFilterRules.startstring = ""; temIDFilterRules.endstring = ""; temIDFilterRules.constring = ""; temIDFilterRules.NotConstring = ""; temIDFilterRules.wildcardstring = ""; temIDFilterRules.caseSensitive = true; temIDFilterRules.onlyDigital = false; temIDFilterRules.onlyAlpha = false; return temIDFilterRules; } } public enum IDSortOrder { ID_SORT_ORDER_ROI_ASC_C = 0, // ROI 升序 ID_SORT_ORDER_ROI_DESC_C, // ROI 降序 ID_SORT_ORDER_CENTERX_ASC_C, // 中心坐标 X 升序 ID_SORT_ORDER_CENTERX_DESC_C, // 中心坐标 X 降序 ID_SORT_ORDER_CENTERY_ASC_C, // 中心坐标 Y 升序 ID_SORT_ORDER_CENTERY_DESC_C, // 中心坐标 Y 降序 ID_SORT_ORDER_CODEVALUE_ASC_C, // 码结果数值升序 ID_SORT_ORDER_CODEVALUE_DESC_C // 码结果数值降序 } /* *输出数据格式配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDDataConfig { public IDSortOrder positionRules; [MarshalAs(UnmanagedType.I1)] public bool noreadStatus; //无读补齐使能 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] noreadString; //无读补齐 [MarshalAs(UnmanagedType.I1)] public bool conditionEnable; //输出条件使能 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] conditionInfo; //输出条件 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] formatInfo; //格式化信息 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] headInfo; //头部插入 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] tailInfo; //尾部插入 [MarshalAs(UnmanagedType.I1)] public bool enterEnable; //回车使能 [MarshalAs(UnmanagedType.I1)] public bool lineFeedEnable; //换行使能 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] falseInfo; //条件false时输出 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] busyInfo; //BUSY时输出 [MarshalAs(UnmanagedType.I1)] public bool emptySendEnabel; //发送空结果使能 [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 [MarshalAs(UnmanagedType.I1)] public bool enableInstantOutput; //启用立即输出 [MarshalAs(UnmanagedType.I1)] public bool enableOneByOne; //启用OneByOne public uint oneByOnePeriod; //OneByOne周期(ms),范围:20---10000 } public class IDDataConfigCreate { public IDDataConfig createIDDataConfig() { IDDataConfig temIDDataConfig = new IDDataConfig(); temIDDataConfig.noreadStatus = false; string noreadString = "NG"; temIDDataConfig.noreadString = noreadString.ToCharArray(); temIDDataConfig.conditionEnable = false; string formatInfo = ""; temIDDataConfig.formatInfo = formatInfo.ToCharArray(); string headInfo = ""; temIDDataConfig.headInfo = headInfo.ToCharArray(); string tailInfo = ""; temIDDataConfig.tailInfo = tailInfo.ToCharArray(); temIDDataConfig.enterEnable = false; temIDDataConfig.lineFeedEnable = false; string falseInfo = ""; temIDDataConfig.falseInfo = falseInfo.ToCharArray(); string busyInfo = ""; temIDDataConfig.busyInfo = busyInfo.ToCharArray(); temIDDataConfig.emptySendEnabel = false; temIDDataConfig.enableHEX = false; temIDDataConfig.enableInstantOutput = false; temIDDataConfig.enableOneByOne = false; temIDDataConfig.oneByOnePeriod = 100; return temIDDataConfig; } } /* *tcp服务器通讯配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDTcpServerCommunication { public uint port; [MarshalAs(UnmanagedType.I1)] public bool status; } public class IDTcpServerCommunicationCreate { public IDTcpServerCommunication createIDTcpServerCommunication() { IDTcpServerCommunication temIDTcpServerCommunication = new IDTcpServerCommunication(); temIDTcpServerCommunication.status = false; temIDTcpServerCommunication.port = 1024; return temIDTcpServerCommunication; } } /* *TCP客户端通讯 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDTcpClientCommunication { [MarshalAs(UnmanagedType.I1)] public bool status; public uint port; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string ipAdress; [MarshalAs(UnmanagedType.I1)] public bool heartBeatEnable; //心跳使能 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string heartBeatCmd; //心跳指令 public uint heartBeatPeriod; //心跳周期(ms)最小值50ms [MarshalAs(UnmanagedType.I1)] public bool enableHEX; //启用16进制 } public class IDTcpClientCommunicationCreate { public IDTcpClientCommunication createIDTcpClientCommunication() { IDTcpClientCommunication temIDTcpClientCommunication = new IDTcpClientCommunication(); temIDTcpClientCommunication.status = false; temIDTcpClientCommunication.port = 1024; temIDTcpClientCommunication.ipAdress = "127.0.0.1"; temIDTcpClientCommunication.heartBeatEnable = false; temIDTcpClientCommunication.heartBeatCmd = "heartBeat"; temIDTcpClientCommunication.heartBeatPeriod = 500; temIDTcpClientCommunication.enableHEX = false; return temIDTcpClientCommunication; } } /* *串口波特率 */ public enum IDBaud { ID_BAUDBR_110 = 0, ID_BAUDBR_300 = 1, ID_BAUDBR_600 = 2, ID_BAUDBR_1200 = 3, ID_BAUDBR_2400 = 4, ID_BAUDBR_4800 = 5, ID_BAUDBR_9600 = 6, ID_BAUDBR_14400, ID_BAUDBR_19200 = 8, ID_BAUDBR_38400 = 9, ID_BAUDBR_56000, ID_BAUDBR_57600 = 11, ID_BAUDBR_115200 = 12, ID_BAUDBR_128000, ID_BAUDBR_256000 } /* *串口校验位 */ public enum IDParity { ID_PARITY_NONE = 0, //无 ID_PARITY_ODD, //奇校验 ID_PARITY_EVEN //偶校验 } /* *串口数据位 */ public enum IDDatabits { ID_DATABITS_5BIT = 0, ID_DATABITS_6BIT = 1, ID_DATABITS_7BIT = 2, ID_DATABITS_8BIT = 3 } /* *串口停止位 */ public enum IDStopbits { ID_STOPBITS_ONE = 0, ID_STOPBITS_TWO = 1 } /* *串口通讯配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDSerialPortCommunication { [MarshalAs(UnmanagedType.I1)] public bool status; public IDBaud baudRate; //波特率 public IDParity parity; //校验位 public IDDatabits databits; //数据位 public IDStopbits stopbits; //停止位 } public class IDSerialPortCommunicationCreate { public IDSerialPortCommunication createIDSerialPortCommunication() { IDSerialPortCommunication temIDSerialPortCommunication = new IDSerialPortCommunication(); temIDSerialPortCommunication.status = false; temIDSerialPortCommunication.baudRate = IDBaud.ID_BAUDBR_9600; temIDSerialPortCommunication.parity = IDParity.ID_PARITY_NONE; temIDSerialPortCommunication.databits = IDDatabits.ID_DATABITS_8BIT; temIDSerialPortCommunication.stopbits = IDStopbits.ID_STOPBITS_ONE; return temIDSerialPortCommunication; } } /* *键盘输出 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDKeyboardConfig { [MarshalAs(UnmanagedType.I1)] public bool status; } /* *EIP配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDEipConfig { [MarshalAs(UnmanagedType.I1)] public bool enable; [MarshalAs(UnmanagedType.I1)] public bool resultSwap;//结果交换 public uint inputSize;//输入组件大小 public uint outputSize;//输出组件大小 public uint resultTimeout;//结果超时 } public class IDEipConfigCreate { public IDEipConfig createIDEipConfig() { IDEipConfig temIDEipConfig = new IDEipConfig(); temIDEipConfig.enable = false; temIDEipConfig.resultSwap = false; temIDEipConfig.inputSize = 200; temIDEipConfig.outputSize = 200; temIDEipConfig.resultTimeout = 1000; return temIDEipConfig; } } /* *modbus角色 */ public enum IDModbusRole { ID_MODBUS_ROLE_MASTER = 0, ID_MODBUS_ROLE_SLAVE = 1 } /* *modbus连接类型 */ public enum IDModbusConnectionType { ID_MODBUSONNECTION_TCP = 0, ID_MODBUSONNECTIONOM_RTU } /* *modbus功能模块 */ public enum IDModbusFunction { ID_MODBUS_FUNCTIONOILS = 2, //线圈 ID_MODBUS_FUNCTION_HOLDING_REGISTERS = 4 //保持寄存器 } /* *modbus通讯配置,对应串口参数配置使用串口通讯中数据 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDModbusConfig { [MarshalAs(UnmanagedType.I1)] public bool status; //使能 public IDModbusRole role; //角色,主站/从站 public IDModbusConnectionType connectionType; //连接类型 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string tcpServerIp; //做主站是连接从站IP public uint tcpPort; //tcp端口 public uint timeout; //超时时间 public uint retriesNum; //重试次数 public uint serverAddress; //服务器地址 public IDModbusFunction function; //数据功能模块 public uint startAddress; //开始地址 [MarshalAs(UnmanagedType.I1)] public bool resultSwap; //数据交换 public uint resultTimeout; //结果超时 } public class IDModbusConfigCreate { public IDModbusConfig createIDModbusConfig() { IDModbusConfig temIDModbusConfig = new IDModbusConfig(); temIDModbusConfig.status = false; temIDModbusConfig.role = IDModbusRole.ID_MODBUS_ROLE_MASTER; temIDModbusConfig.connectionType = IDModbusConnectionType.ID_MODBUSONNECTION_TCP; temIDModbusConfig.tcpServerIp = "127.0.0.1"; temIDModbusConfig.tcpPort = 512; temIDModbusConfig.timeout = 3000; temIDModbusConfig.retriesNum = 300; temIDModbusConfig.serverAddress = 0; temIDModbusConfig.function = IDModbusFunction.ID_MODBUS_FUNCTION_HOLDING_REGISTERS; temIDModbusConfig.startAddress = 0; temIDModbusConfig.resultSwap = false; temIDModbusConfig.resultTimeout = 1000; return temIDModbusConfig; } } /* *profinet通讯配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDProfinetConfig { [MarshalAs(UnmanagedType.I1)] public bool enable; //使能 [MarshalAs(UnmanagedType.I1)] public bool serialModule; //串口模块 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string ipAddress; //配置名 [MarshalAs(UnmanagedType.I1)] public bool resultSwap; //数据交换 public uint resultSize; //结果大小(字节Bytes) public uint resultTimeout; //结果超时时间(ms) } public class IDProfinetConfigCreate { public IDProfinetConfig createIDProfinetConfig() { IDProfinetConfig temIDProfinetConfig = new IDProfinetConfig(); temIDProfinetConfig.enable = false; temIDProfinetConfig.serialModule = false; temIDProfinetConfig.ipAddress = "127.0.0.1"; temIDProfinetConfig.resultSwap = false; temIDProfinetConfig.resultSize = 200; temIDProfinetConfig.resultTimeout = 1000; return temIDProfinetConfig; } } /* *图像格式 */ public enum IDImageFormat { ID_IMAGE_FORMAT_JPG = 0, ID_IMAGE_FORMAT_PNG, ID_IMAGE_FORMAT_BMP, ID_IMAGE_FORMAT_RANDERING_JPG, //渲染图JPG ID_IMAGE_FORMAT_RANDERING_PNG, //渲染图PNG ID_IMAGE_FORMAT_RANDERING_BMP //渲染图GMP } public enum IDFtpSendModel { ID_FTP_SEND_MODEL_NOT = 0, //不保存 ID_FTP_SEND_MODEL_NG, //NG保存 ID_FTP_SEND_MODEL_ALL, //全保存 ID_FTP_SEND_MODELONDITION //指定条件 } public enum IDFtpSaveStrategy { ID_FTP_SAVE_STRATEGY_ALL_C = 0, // 全部帧 ID_FTP_SAVE_STRATEGY_LATEST_C, // 最新帧 ID_FTP_SAVE_STRATEGY_SPECIFIC_INDEX_C, // 指定帧 ID_FTP_SAVE_STRATEGY_SPECIFIC_RANGE_C, // 指定范围 } public struct IDFTPSavePolicy { public IDFtpSaveStrategy saveStrategy; // 保存策略 public int frameIndex; // 指定帧号(仅当策略为保存指定帧时使用) public int rangeStartFrame; // 起始帧号(仅当策略为保存指定范围帧时使用) public int rangeEndFrame; // 结束帧号(仅当策略为保存指定范围帧时使用) } /* *FTP配置信息 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDFtpConfig { [MarshalAs(UnmanagedType.I1)] public bool status; //使能 [MarshalAs(UnmanagedType.I1)] public bool isLocal; //本地保存 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string iPAddress; //服务器IP public uint port; //服务器端口 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string username; //用户名 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string password; //密码 public IDImageFormat imageformat; //图像格式 public uint compressionRate; //压缩率 public uint maxImageCount; //最大保存张数 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string filePath; //图像路径 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string defaultFileName; //默认文件名 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string localSavePath; //本地保存路径 [MarshalAs(UnmanagedType.I1)] public bool containsBarcodeDateEnable; //包含时间戳 [MarshalAs(UnmanagedType.I1)] public bool containsNumberEnable; //包含序号 [MarshalAs(UnmanagedType.I1)] public bool containsFrameNumberEnable; [MarshalAs(UnmanagedType.I1)] public bool isDecodingResultNaming; //包含结果 [MarshalAs(UnmanagedType.I1)] public bool containsBarcodeIDEnable; //ID命名 [MarshalAs(UnmanagedType.I1)] public bool containsTriggerSequenceEnable; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string sendCondition; //发送条件 public IDFTPSavePolicy savePolicy; [MarshalAs(UnmanagedType.I1)] public bool resultRenderingEnable; [MarshalAs(UnmanagedType.I1)] public bool boundingBoxRenderingEnable; } public class IDFtpConfigCreate { public IDFtpConfig createIDFtpConfig() { IDFtpConfig temIDFtpConfig = new IDFtpConfig(); temIDFtpConfig.status = false; temIDFtpConfig.isLocal = true; temIDFtpConfig.iPAddress = "127.0.0.1"; temIDFtpConfig.port = 2121; temIDFtpConfig.username = "ftp"; temIDFtpConfig.password = "123456"; temIDFtpConfig.imageformat = IDImageFormat.ID_IMAGE_FORMAT_BMP; temIDFtpConfig.compressionRate = 6; temIDFtpConfig.maxImageCount = 50; temIDFtpConfig.filePath = ""; temIDFtpConfig.localSavePath = "/root/solution/NG_Image"; temIDFtpConfig.defaultFileName = "image"; temIDFtpConfig.containsBarcodeDateEnable = true; temIDFtpConfig.containsNumberEnable = false; temIDFtpConfig.isDecodingResultNaming = false; temIDFtpConfig.containsBarcodeIDEnable = false; temIDFtpConfig.sendCondition = "NG send"; //temIDFtpConfig.sendModel = IDFtpSendModel.ID_FTP_SEND_MODEL_NG; return temIDFtpConfig; } } /* *监控HTTP配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDWebpageConfig { [MarshalAs(UnmanagedType.I1)] public bool status; //使能 public int port; //端口 public int imageQuality; //图像质量 [MarshalAs(UnmanagedType.I1)] public bool resultDispaly; //结果展示 [MarshalAs(UnmanagedType.I1)] public bool imageDisplay; //图像展示 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)] public string displayInfo; //显示信息 } public class IDWebpageConfigCreate { public IDWebpageConfig createIDWebpageConfig() { IDWebpageConfig temIDWebpageConfig = new IDWebpageConfig(); temIDWebpageConfig.status = false; temIDWebpageConfig.port = 8080; temIDWebpageConfig.imageQuality = 60; temIDWebpageConfig.resultDispaly = true; temIDWebpageConfig.imageDisplay = true; temIDWebpageConfig.displayInfo = ""; return temIDWebpageConfig; } } /* * FINS通讯配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDFinsConfig { [MarshalAs(UnmanagedType.I1)] public bool status; //使能 [MarshalAs(UnmanagedType.I1)] public bool isTcp; //TCP/UDP [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string serverIp; //服务器IP public uint port; //服务器端口 public uint startAddress; //开始地址 [MarshalAs(UnmanagedType.I1)] public bool resultSwap; //数据交换 public uint resultSize; //结果大小(字节Bytes) public uint resultTimeout; //结果超时(ms) } public class IDFinsConfigCreate { public IDFinsConfig createIDFinsConfig() { IDFinsConfig temIDFinsConfig = new IDFinsConfig(); temIDFinsConfig.status = false; temIDFinsConfig.isTcp = true; temIDFinsConfig.serverIp = "0.0.0.0"; temIDFinsConfig.port = 9600; temIDFinsConfig.startAddress = 0; temIDFinsConfig.resultSwap = false; temIDFinsConfig.resultSize = 200; temIDFinsConfig.resultTimeout = 1000; return temIDFinsConfig; } } /* *HTTP发送方式 */ public enum IDHttpMethod { ID_HTTP_METHOD_POST = 0, ID_HTTP_METHOD_GET } /* * Http通讯配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDHttpConfig { [MarshalAs(UnmanagedType.I1)] public bool status; public IDHttpMethod method; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)] public string httpURL; } public class IDHttpConfigCreate { public IDHttpConfig createIDHttpConfig() { IDHttpConfig temIDHttpConfig = new IDHttpConfig(); temIDHttpConfig.status = false; temIDHttpConfig.method = IDHttpMethod.ID_HTTP_METHOD_POST; temIDHttpConfig.httpURL = ""; return temIDHttpConfig; } } /* *组网数据配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDNetworkingConfig { [MarshalAs(UnmanagedType.I1)] public bool networkingEnable; //组网启用 [MarshalAs(UnmanagedType.I1)] public bool isMaster; //是否是主机 public uint communitionPort; //连接端口 public uint masterTimeout; //主机超时 public uint masterMaxConnectNumber; //主机最大被连接数 public uint slaveID; //从机ID [MarshalAs(UnmanagedType.I1)] public bool isTriggerSlave; //是否触发从机 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string masterIP; //主机IP [MarshalAs(UnmanagedType.I1)] public bool isReceiveTrigger; //是否接受主机触发 public uint triggerDelayTime; //触发延时 [MarshalAs(UnmanagedType.I1)] public bool ConnectionStatus; //连接状态 [MarshalAs(UnmanagedType.I1)] public bool deviceRoiPlaceholder; //设备ROI补齐占位 } public class IDNetworkingConfigCreate { public IDNetworkingConfig createIDNetworkingConfig() { IDNetworkingConfig temIDNetworkingConfig = new IDNetworkingConfig(); temIDNetworkingConfig.networkingEnable = false; temIDNetworkingConfig.isMaster = true; temIDNetworkingConfig.communitionPort = 5128; temIDNetworkingConfig.masterTimeout = 1500; temIDNetworkingConfig.masterMaxConnectNumber = 8; temIDNetworkingConfig.slaveID = 1; temIDNetworkingConfig.isTriggerSlave = false; temIDNetworkingConfig.masterIP = "127.0.0.1"; temIDNetworkingConfig.isReceiveTrigger = false; temIDNetworkingConfig.triggerDelayTime = 1; temIDNetworkingConfig.ConnectionStatus = false; temIDNetworkingConfig.deviceRoiPlaceholder = false; return temIDNetworkingConfig; } } //条码类型枚举 public enum IDCodeType { IDODETYPE_UNKNOWN = 0x0, IDODETYPEODE39 = 0x1, IDODETYPEODE128 = 0x2, IDODETYPE_EAN8 = 0x4, IDODETYPE_EAN13 = 0x8, IDODETYPE_UPC_A = 0x10, IDODETYPE_UPC_E = 0x20, IDODETYPEODE93 = 0x40, IDODETYPE_ITF = 0x80, IDODETYPE_GS1_128 = 0x100, IDODETYPE_GS1_DATABAR_EXPANDED = 0x200, IDODETYPE_GS1_DATABAR = 0x400, IDODETYPE_GS1_DATABAR_STACKED = 0x600, IDODETYPE_GS1_DATABAR_EXPANDED_STACKED = 0x800, IDODETYPE_GS1_DATABAR_LINITED = 0x1000, IDODETYPE_PHARMACODE = 0x2000, IDODETYPE_MSI = 0x4000, IDODETYPE_PLESSEY = 0x8000, IDODETYPEODEBAR = 0x10000, IDODETYPE_INT2OF5 = 0x20000, IDODETYPE_STD2OF5 = 0x40000, IDODETYPE_MTX2OF5 = 0x80000, IDODETYPE_DATAMATRIX = 0x04000000, IDODETYPE_QRCODE = 0x08000000, IDODETYPE_PDF417 = 0x010000000, IDODETYPE_MICROQR = 0x020000000, IDODETYPE_AZTEC = 0x040000000, ID_CODETYPE_VERICODEC = 0x070000000 } /* *MC通信PLC型号 */ public enum IDMcBrandModel { ID_MC_BRAND_L_C = 0, ID_MC_BRAND_Q_C = 1, ID_MC_BRAND_R_C = 2, ID_MC_BRAND_A_C = 4, ID_MC_BRAND_FX3U_C = 5, ID_MC_BRAND_FX5U_C = 6 } /* *MC通信数据格式 */ public enum IDMcDataFormat { ID_MC_DATA_BIN_C = 0, ID_MC_DATA_ASCII_C } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDDeviceInfo { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string networkIP; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string networkMask; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string networkGateway; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string networkAdapterFriendName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string networkMac; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string cameraIP; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraNetMask; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraGateWay; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraMac; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraSN; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraModel; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraManufucturer; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraSoftwareVersion; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraFirmwareVersion; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraAlias; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string cameraType; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)] public string deviceFullType; //设备完整型号 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)] public string cameraChipType; //相机芯片类型 public uint cameraImageWidth; //相机图像宽度 public uint cameraImageHeight; //相机图像高度 [MarshalAs(UnmanagedType.I1)] public bool isRTDevice; //是否为实时设备 [MarshalAs(UnmanagedType.I1)] public bool globalExposure; //全局曝光 [MarshalAs(UnmanagedType.I1)] public bool autoFocus; //自动对焦 public uint lightChannelNum; //光源通道数 public uint diNum; //DI引脚数 public uint doNum; //DO引脚数 [MarshalAs(UnmanagedType.I1)] public bool blueToothInterface; //蓝牙设备 [MarshalAs(UnmanagedType.I1)] public bool serialPortInterface; //串口接口 [MarshalAs(UnmanagedType.I1)] public bool usbInterface; //USB接口 [MarshalAs(UnmanagedType.I1)] public bool wirelessInterface; //WIFI接口 [MarshalAs(UnmanagedType.I1)] public bool ethernetInterface; //以太网接口 [MarshalAs(UnmanagedType.I1)] public bool busyState; //忙碌状态 } //硬件信息通用节点结构体 public struct IDNodeParam { public float maxValue; public float minValue; public float value; public int type; } public IDNodeParam createIDNodeParam() { 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(); HarewareParams.exposure = createIDNodeParam(); HarewareParams.gamma = createIDNodeParam(); HarewareParams.gain = createIDNodeParam(); HarewareParams.illuminanatInerval = createIDNodeParam(); HarewareParams.focusingLocation = createIDNodeParam(); HarewareParams.DICount = createIDNodeParam(); HarewareParams.DOCount = createIDNodeParam(); HarewareParams.isOpenSightingDevice = createIDNodeParam(); return HarewareParams; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] //点类型结构体 public struct IDPoint { public double x; public double y; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDROIInfo { public IDPoint topLeftPoint; public IDPoint bottomRightPoint; public IDCodeType codeType; public uint roiIndex; public uint codeNum; public uint timeout; } public class IDDeviceROI { // 创建IDROIInfo的方法 public IDROIInfo CreateIDROIInfo() { IDROIInfo temROIInfo = new IDROIInfo { codeNum = 1, timeout = 500, }; return temROIInfo; } } //质量评估输出结果 //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 reflectanceMargin; //反射裕度 public float fixedPatternDamage; //固定模块损坏 public float axialNonuniformity; //轴向不均匀性 public float gridNonuniformity; //网格不均匀性 public float unusedErrCorrection; //未使用纠错码 public float formatInformation; //格式信息 public float versionInformation; //版本信息 public float contrastUniformity; public float meanLight; public float printGrowth; public float aperture; } //PDF417 15415当前算法暂不支持 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; //目前只会有一个码制,结果为1,后续保留可扩展性 } //当前解码类型,只有一个码制有数据 public struct IDDecodeResult { public int conbination; public int dmResultsLength; public int qrResultsLength; public int pdf417ResultsLength; public int barcodeResultsLength; } //DM解码结果 [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; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDQRCodeParam { public int modeType; //模式 public int polarity; //极性 public int version; //版本 public int sampleRate; //降采样 public int edgeThreshod; //阈值 public int mirror; //镜像 public int codeNum; //码数 public int timeOut; //算法超时 [MarshalAs(UnmanagedType.I1)] public bool outCandidate; [MarshalAs(UnmanagedType.I1)] public bool outModuleArray; [MarshalAs(UnmanagedType.I1)] public bool enable15415; //15415码评级 [MarshalAs(UnmanagedType.I1)] public bool enable29158; //29158码评级 } public class IDQRCodeParamCreate { public IDQRCodeParam create() { IDQRCodeParam idQRCodeParam; idQRCodeParam.modeType = 0; //模式, 0,1,2 idQRCodeParam.polarity = 0; //极性 0,1,2 idQRCodeParam.version = 0; //版本 0~40 idQRCodeParam.sampleRate = 0;//降采样倍率 0~6 idQRCodeParam.edgeThreshod = 30; //边缘阈值 1~255 idQRCodeParam.mirror = 0; //镜像, 0,1,2 idQRCodeParam.codeNum = 0; //条码个数 大于等于1 idQRCodeParam.timeOut = 500; //超时 大于等于0 idQRCodeParam.outCandidate = false;//输出候选区 idQRCodeParam.outModuleArray = false; //输出模块信息 idQRCodeParam.enable15415 = false; idQRCodeParam.enable29158 = false; return idQRCodeParam; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDBarCodeParam { public uint Type; public int polarity; public int sampleRate; public int minContrast; public int decodeDirection; public int codeNum; public int timeOut; public int code39Check; public int ITFCheck; public int CodaBarCheck; public int sendStartEnd; [MarshalAs(UnmanagedType.I1)] public bool enable15416; public int decodeThreshod; } public class IDBarCodeParamCreate { public IDBarCodeParam create() { IDBarCodeParam tmpIDBarCodeParam; tmpIDBarCodeParam.Type = 0;//条码类型 按位取值 tmpIDBarCodeParam.polarity = 0;//极性 0,1,2 tmpIDBarCodeParam.sampleRate = 0;//降采样 0~2 tmpIDBarCodeParam.minContrast = 2; //取值范围0到3,0:表示极低对比度,1:低对比度,2:中等对比度,3:高对比度 tmpIDBarCodeParam.decodeDirection = 0;//解码方向 Pharmacode专用,取值:0:从左到右,1:从右到左,2:从上到下, 3:从下到上 tmpIDBarCodeParam.codeNum = 1; //条码个数 大于等于1 tmpIDBarCodeParam.timeOut = 500; //超时 大于等于0 tmpIDBarCodeParam.code39Check = 0; tmpIDBarCodeParam.ITFCheck = 0; tmpIDBarCodeParam.CodaBarCheck = 0;//0:不校验,1:校验不发送,2:校验发送 tmpIDBarCodeParam.sendStartEnd = 0;//是否发送起始终止符,CodaBar专用 tmpIDBarCodeParam.enable15416 = false; tmpIDBarCodeParam.decodeThreshod = 0; return tmpIDBarCodeParam; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDDMCodeParam { public int polarity; //极性 public int style; //开始位置 public int sampleRate; //降采样 public int minContrast; //样式 public int mirror; //镜像 public int codeNum; //码数目 public int timeOut; //算法超时 [MarshalAs(UnmanagedType.I1)] public bool outCandidate; [MarshalAs(UnmanagedType.I1)] public bool outModuleArray; [MarshalAs(UnmanagedType.I1)] public bool enable15415; //15415算法评级 [MarshalAs(UnmanagedType.I1)] public bool enable29158; //29158算法评级 [MarshalAs(UnmanagedType.I1)] public bool enableAS9132; //AS9132算法评级 } public class IDDMCodeParamCreate { public IDDMCodeParam create() { IDDMCodeParam tmpIDDMCodeParam; tmpIDDMCodeParam.polarity = 0;//极性 0,1,2 tmpIDDMCodeParam.style = -1; //样式 -3,-2,-1,0....29 tmpIDDMCodeParam.sampleRate = 0; //降采样 0~5 tmpIDDMCodeParam.minContrast = 30; //最小对比度 1~255 tmpIDDMCodeParam.mirror = 0; //镜像, 0,1,2 tmpIDDMCodeParam.codeNum = 0; //条码个数 大于等于1 tmpIDDMCodeParam.timeOut = 500; //超时 tmpIDDMCodeParam.outCandidate = false;//输出候选区 tmpIDDMCodeParam.outModuleArray = false; //输出模块信息 tmpIDDMCodeParam.enable15415 = false; tmpIDDMCodeParam.enable29158 = false; tmpIDDMCodeParam.enableAS9132 = false; return tmpIDDMCodeParam; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDPDF417CodeParam { public int polarity; //极性 public int pdfRows; // public int pdfCols; // public int mirror; //镜像 public int codeNum; //码数目 public int timeOut; //算法超时 [MarshalAs(UnmanagedType.I1)] public bool outCandidate; [MarshalAs(UnmanagedType.I1)] public bool enable15415; //15415算法评级 } public class IDPDF417CodeParamCreate { public IDPDF417CodeParam create() { IDPDF417CodeParam tmpIDPDF417CodeParam_C; tmpIDPDF417CodeParam_C.polarity = 0;//极性 0,1,2 tmpIDPDF417CodeParam_C.pdfRows = 0; //行数:0、[3, 90], 其中0表示自动 tmpIDPDF417CodeParam_C.pdfCols = 0; //列数:[0, 30], 其中0表示自动 tmpIDPDF417CodeParam_C.mirror = 0; //镜像, 0,1,2,暂不支持 tmpIDPDF417CodeParam_C.codeNum = 0; //条码个数 大于等于1 tmpIDPDF417CodeParam_C.timeOut = 500; //超时 tmpIDPDF417CodeParam_C.outCandidate = false;//输出候选区,暂不支持 tmpIDPDF417CodeParam_C.enable15415 = false;//暂不支持 return tmpIDPDF417CodeParam_C; } } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDMicroQRParam { public int polarity; // 极性 public int version; // 版本 public int mirror; // 镜像 public int codeNum; // 条码个数,必须大于等于1 public int timeOut; // 超时时间,必须大于等于0 public int outCandidate; // 输出候选项 public int outModuleArray; // 输出模块数组 [MarshalAs(UnmanagedType.I1)] public bool enable15415; // 是否启用15415标准 [MarshalAs(UnmanagedType.I1)] public bool enable29158; // 是否启用29158标准 } public class IDMicroQRParamCreate { public IDMicroQRParam create() { IDMicroQRParam tmpIDMicroQRParam_C; tmpIDMicroQRParam_C.polarity = 0; // 初始化为默认极性 tmpIDMicroQRParam_C.version = 0; // 初始化为默认版本 tmpIDMicroQRParam_C.mirror = 0; // 初始化为默认无镜像 tmpIDMicroQRParam_C.codeNum = 1; // 条码个数,默认至少为1 tmpIDMicroQRParam_C.timeOut = 500; // 超时,默认500ms tmpIDMicroQRParam_C.outCandidate = 0; // 默认无候选项 tmpIDMicroQRParam_C.outModuleArray = 0; // 默认无模块数组 tmpIDMicroQRParam_C.enable15415 = false; // 默认不启用15415标准 tmpIDMicroQRParam_C.enable29158 = false; // 默认不启用29158标准 return tmpIDMicroQRParam_C; } } // 条码类别 public enum IDCodeCategory { ID_CATEGORY_UNKNOWN_C = 0x0, // 未知类型 ID_CATEGORY_LINEAR_BARCODE_C = 0x1, // 一维条码 (Linear Barcode) ID_CATEGORY_QR_CODE_C = 0x2, // QR 二维码 (QR Code) ID_CATEGORY_MICROQR_CODE_C = 0x3, // MicroQR 二维码 (MicroQR) ID_CATEGORY_DATAMATRIX_CODE_C = 0x4, // Data Matrix 二维码 (Data Matrix Code) ID_CATEGORY_STACKED_BARCODE_C = 0x8 // 堆叠条码 (Stacked Barcode) } public enum IDGeneralParamsType { GP_UNDEFINED_C = 0, GP_NUM_C, GP_STRING_C, GP_BOOL_C, GP_POINT_C, GP_NUM_ARRAY_C, GP_STRING_ARRAY_C, GP_BOOL_ARRAY_C, GP_POINT_ARRAY_C, GP_UCHAR_C, GP_FLOAT_C, GP_USHORT_C, GP_UINT_C, GP_ULONG_C, GP_SHORT_C, GP_INT_C, GP_FLAGS_C, GP_LONG_C } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDImageROI { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public char[] name; public IDPoint topLeftPoint; public IDPoint bottomRightPoint; public IDCodeType codeType; public uint mode; public uint id; public uint roiIndex; public uint codeNum; public uint timeout; } public class IDImageROICreate { public IDImageROI create() { IDImageROI temIDImageROI_C = new IDImageROI(); temIDImageROI_C.codeNum = 1; temIDImageROI_C.timeout = 500; return temIDImageROI_C; } } //图像参数 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDSolutionImage { [MarshalAs(UnmanagedType.I1)] public bool autoExposureEnabled; // 自动曝光使能 [MarshalAs(UnmanagedType.I1)] public bool autoGainEnabled; // 自动增益使能 public int IDSolutionImageParamsLength; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDSolutionImageParams { public int paramIndex; public double exposure; public int gain; public double gamma; public int focusLocation; public int rowCount; //行数 public int rowFrequence; //行频(hz) public int illuminantsCount; //光源通道参数 } //光源通道参数 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDSolutionImageIlluminant { public int channel; [MarshalAs(UnmanagedType.I1)] public bool enable; public int brightness; } public enum IDDiInputSource { INPUT_SOURCE_TRIGGER_C = 0, // 触发模式 INPUT_SOURCE_PRESET_COMPARE_C = 1, // 对比预设输入模式 INPUT_SOURCE_DISABLE = 2 // 禁用 } /* * IO输入参数 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDDIParams { public IDDiInputSource inputSource; // 触发类型,取值:0:触发,1:对比预设输入 public uint pin; // DI对应的引脚号 } public class IDDIParamsCreate { public IDDIParams createSTRUCT_ID_DI_PARAMS() { IDDIParams tmpIDDIParams_C; tmpIDDIParams_C.inputSource = IDDiInputSource.INPUT_SOURCE_TRIGGER_C; tmpIDDIParams_C.pin = 0; return tmpIDDIParams_C; } } /* *IO事件源 */ public enum IDDoEventSource { EVENT_SOURCE_OFF_C = 0, // 无 EVENT_SOURCE_ACQUISITION_START_C, // 采图开始 EVENT_SOURCE_ACQUISITION_STOP_C, // 采图结束 EVENT_SOURCE_EXPOSURE_START_C, // 曝光开始 EVENT_SOURCE_NOCODE_READ_C, // 解码 NG 时 EVENT_SOURCE_READ_SUCCESS_C, // 解码 OK 时 EVENT_SOURCE_CONDITION_SELECTED_C, // 条件选择 EVENT_SOURCE_DATA_COMPARE_SUCCESS_C, // 数据对比成功 EVENT_SOURCE_DATA_COMPARE_FAIL_C // 数据对比失败 } /* * IO输出参数 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDDOParams { public uint status; // DO状态(启用或禁用) public uint pin; // DO对应的引脚号 public uint doModel; // 输出电平 public uint durationTime; // 持续时间(ms) public IDDoEventSource doSource; // 事件源(来自其他模块) [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string condition; } public class IDDOParamsCreate { public IDDOParams create() { IDDOParams tmpIDDOParams_C; tmpIDDOParams_C.status = 0; tmpIDDOParams_C.pin = 0; tmpIDDOParams_C.doModel = 0; tmpIDDOParams_C.durationTime = 0; tmpIDDOParams_C.doSource = IDDoEventSource.EVENT_SOURCE_OFF_C; tmpIDDOParams_C.condition = ""; return tmpIDDOParams_C; } } /* * mcConfig 配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDMcConfig { [MarshalAs(UnmanagedType.I1)] public bool isEnabled; // 使能 [MarshalAs(UnmanagedType.I1)] public bool isUdpCommunication; // UDP 通信 public int brandModel; // 品牌型号 public int dataFormat; // 数据格式 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string ipAddress; // IP 地址 public int port; // 端口 public int startAddress; // 开始地址 [MarshalAs(UnmanagedType.I1)] public bool isResultSwapped; // 结果交换 public uint resultSizeBytes; // 结果大小(字节) public uint resultTimeoutMs; // 结果超时(毫秒) } public class IDMcConfigCreate { public IDMcConfig create() { IDMcConfig tmpIDMcConfig_C; tmpIDMcConfig_C.isEnabled = false; tmpIDMcConfig_C.isUdpCommunication = false; tmpIDMcConfig_C.brandModel = 0; tmpIDMcConfig_C.dataFormat = 0; tmpIDMcConfig_C.ipAddress = ""; tmpIDMcConfig_C.port = 0; tmpIDMcConfig_C.startAddress = 0; tmpIDMcConfig_C.isResultSwapped = false; tmpIDMcConfig_C.resultSizeBytes = 0; tmpIDMcConfig_C.resultTimeoutMs = 0; return tmpIDMcConfig_C; } } /* * udpConfig 配置 */ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDUdpConfig { [MarshalAs(UnmanagedType.I1)] public bool isEnabled; // 使能 public int port; // 端口 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string ipAddress; // IP 地址 } public class IDUdpConfigCreate { public IDUdpConfig create() { IDUdpConfig tmpIDUdpConfig_C; tmpIDUdpConfig_C.isEnabled = false; tmpIDUdpConfig_C.port = 0; tmpIDUdpConfig_C.ipAddress = ""; return tmpIDUdpConfig_C; } } public enum IDGeneralParamsName { ID_PARAM_FILTER_PREVENT_DUPLICATE = 0, //重复过滤 ID_PARAM_FILTER_PREVENT_DUPLICATE_ENABLE, //重复过滤使能 ID_PARAM_FILTER_HISTORY_TIMES, //历史过滤 ID_PARAM_FILTER_HISTORY_TIMES_ENABLE, //历史过滤使能 ID_PARAM_FILTER_READ_THRESHOLD, //阈值过滤 ID_PARAM_FILTER_READ_THRESHOLD_ENABLE, //阈值过滤使能 ID_PARAM_FILTER_REMOVE_DUPLICATE_ENABLE, //去除重复使能 ID_PARAM_FILTER_FRAME_DUPLICATE_ENABLE, //逐帧过滤使能 ID_PARAM_FILTER_ANGLE_INIT, //角度初始值 ID_PARAM_FILTER_ANGLE_OFFSET, //角度偏移值 ID_PARAM_FILTER_ANGLE_ENABLE, //角度使能 ID_PARAM_COMPARE_CONTROL_ENABLE, //比对使能 ID_PARAM_COMPARE_RULE, //比对规则 ID_PARAM_COMPARE_PRESET_DATA, //预设数据 ID_PARAM_COMPARE_START_POSITION, //起始位置 ID_PARAM_COMPARE_DIGITS, //比对数 ID_PARAM_DATACONFIG_NOREAD, //无读补齐配置 ID_PARAM_DATACONFIG_NOREAD_ENABLE, //无读补齐使能 ID_PARAM_DATACONFIG_CONDITION, //输出条件 ID_PARAM_DATACONFIG_CONDITION_ENABLE, //输出条件使能 ID_PARAM_DATACONFIG_FORMAT_INFO, //数据处理格式化内容 ID_PARAM_DATACONFIG_HEAD_INFO, //起始插入 ID_PARAM_DATACONFIG_TAIL_INFO, //结尾插入 ID_PARAM_DATACONFIG_ENTER_ENABLE, //结束回车符使能 ID_PARAM_DATACONFIG_LINEFEED_ENABLE, //结束换行符使能 ID_PARAM_DATACONFIG_FALSE_INFO, //输出条件不满足时输出 ID_PARAM_DATACONFIG_HEX_ENABLE, //输出16进制使能 ID_PARAM_DATACONFIG_EMPTY_SEND_ENABLE, //发送空结果使能 ID_PARAM_DATACONFIG_INSTANT_OUTPUT_ENABLE, //立即输出使能 ID_PARAM_DATACONFIG_POSITION_RULES, //排序规则 ID_PARAM_DATACONFIG_ONE_BY_ONE_ENABLE, //OneByOne使能 ID_PARAM_DATACONFIG_ONE_BY_ONE_PERIOD, //OneByOne周期 ID_PARAM_QUALITY_BARCODE_15416, //条形码质量 (15416 标准) ID_PARAM_QUALITY_QR_CODE_15415, //二维码质量 (15415 标准) ID_PARAM_QUALITY_QR_CODE_29158, //二维码质量 (29158 标准) ID_PARAM_QUALITY_DATAMATRIX_15415, //数据矩阵质量 (15415 标准) ID_PARAM_QUALITY_DATAMATRIX_29158, //数据矩阵质量 (29158 标准) ID_PARAM_QUALITY_DATAMATRIX_9132, //数据矩阵质量 (9132 标准) ID_PARAM_QUALITY_DATAMATRIX_T100701, //数据矩阵质量 (T100701 标准) ID_PARAM_QUALITY_PDF417_15415, //PDF417 条码质量 (15415 标准) ID_PARAM_QUALITY_MODE, //条码刻印验证模式,取值:0:标准模式,1:OPT模式 ID_PARAM_TRIGGER_STATUS, //触发状态 ID_PARAM_TRIGGER_DELAY, //触发延时 ID_PARAM_TRIGGER_MODLE, //触发模式 ID_PARAM_TRIGGER_DURATION, //触发持续时间 ID_PARAM_TRIGGER_CODE_NUM, //触发解码数 ID_PARAM_TRIGGER_SOURCE, //触发源 ID_PARAM_TRIGGER_STATISTIC_BY_NUM_ENABLE, //码数目统计使能 ID_PARAM_TRIGGER_CONDITION_MODE, //按时间/帧触发 ID_PARAM_TRIGGER_TRIGGER_INTERVAL, //自动触发间隔 ID_PARAM_TRIGGER_CACHE_ENABLE, //触发缓存使能 ID_PARAM_TRIGGER_ENABLE_CODE_NUM_RESTRICT, //码数目限制开启 ID_PARAM_TRIGGER_FRAMES, //帧数 ID_PARAM_HARDWARE_TRIGGER_DEBOUNCETIME, //消抖时间 ID_PARAM_HARDWARE_TRIGGER_POLARITY, //触发极性 ID_PARAM_HARDWARE_TRIGGER_CODE_NUM_ENABLE, //启用最大码数目使能 ID_PARAM_HARDWARE_TRIGGER_CODE_NUM, //解码数 ID_PARAM_HARDWARE_TRIGGER_TIMEOUT, //超时时间 ID_PARAM_HARDWARE_TRIGGER_STATISTIC_BY_NUM_ENABLE, //硬件触发码数目使能 ID_PARAM_TCPSEVER_TRIGGER_PORT, //tcp服务器端口 ID_PARAM_TCPSEVER_TRIGGER_START_CMD, //tcp服务器开始触发指令 ID_PARAM_TCPSEVER_TRIGGER_STOP_CMD, //tcp服务器停止触发指令 ID_PARAM_TCPSEVER_TRIGGER_IS_FUZZY_MATCH_ENABLE_CMD, //tcp服务器启用模糊匹配 ID_PARAM_TCPSEVER_TRIGGER_HEX_ENABLE, //tcp服务器16进制使能 ID_PARAM_TCPCLIENT_TRIGGER_PORT, //tcp客户端端口 ID_PARAM_TCPCLIENT_TRIGGER_IP, //tcp客户端IP ID_PARAM_TCPCLIENT_TRIGGER_START_CMD, //tcp客户端开始触发指令 ID_PARAM_TCPCLIENT_TRIGGER_STOP_CMD, //tcp客户端停止触发指令 ID_PARAM_TCPCLIENT_TRIGGER_HEARTBEAT_ENABLE, //tcp客户端心跳使能 ID_PARAM_TCPCLIENT_TRIGGER_HEARTBEAT_CMD, //tcp客户端心跳指令 ID_PARAM_TCPCLIENT_TRIGGER_HEARTBEAT_PERIOD, //tcp客户端心跳周期 ID_PARAM_TCPCLIENT_TRIGGER_IS_FUZZY_MATCH_ENABLE_CMD, //tcp客户端启用模糊匹配 ID_PARAM_TCPCLIENT_TRIGGER_HEX_ENABLE, //tcp客户端16进制使能 ID_PARAM_UDP_TRIGGER_PORT, //udp触发端口 ID_PARAM_UDP_TRIGGER_START_CMD, //udp触发开始指令 ID_PARAM_UDP_TRIGGER_STOP_CMD, //udp触发停止指令 ID_PARAM_UDP_TRIGGER_IS_FUZZY_MATCH_ENABLE_CMD, //udp触发启用模糊匹配 ID_PARAM_UDP_TRIGGER_HEX_ENABLE, //udp16进制使能 ID_PARAM_SERIAL_TRIGGER_START_CMD, //串口开始触发指令 ID_PARAM_SERIAL_TRIGGER_STOP_CMD, //串口停止触发指令 ID_PARAM_SERIAL_TRIGGER_IS_FUZZY_MATCH_ENABLE_CMD, //串口启用模糊匹配 ID_PARAM_SERIAL_TRIGGER_HEX_ENABLE, //串口16进制使能 ID_PARAM_ENCODER_CTRL_PARAMS_ENABLE, //编码控制器状态(启用或禁用) ID_PARAM_ENCODER_CTRL_PARAMS_DIRECTION, //控制方向 ID_PARAM_BUZZER_STATUS, //蜂鸣器状态(启用或禁用) ID_PARAM_BUZZER_CONDITION, //持续时间(毫秒) ID_PARAM_BUZZER_DURATION_TIME, //条件(指定触发条件) ID_PARAM_SENSING_SENSITIVITY, //感应灵敏度 ID_PARAM_SENSING_WAITTIME, //感应等待时间 ID_PARAM_OUTPUT_TCPSEVER_PORT, //TCP服务器输出端口 ID_PARAM_OUTPUT_TCPSEVER_ENABLE, //TCP服务器输出使能 ID_PARAM_OUTPUT_TCPCLIENT_ENABLE, //TCP客户端输出使能 ID_PARAM_OUTPUT_TCPCLIENT_PORT, //TCP客户端输出端口 ID_PARAM_OUTPUT_TCPCLIENT_IP, //TCP客户端输出地址 ID_PARAM_OUTPUT_TCPCLIENT_HEARTBEAT_ENABLE, //TCP客户端心跳使能 ID_PARAM_OUTPUT_TCPCLIENT_HEARTBEAT_CMD, //TCP客户端心跳指令 ID_PARAM_OUTPUT_TCPCLIENT_HEARTBEAT_PERIOD, //TCP客户端心跳周期 ID_PARAM_OUTPUT_TCPCLIENT_HEX_ENABLE, //TCP客户端16进制使能 ID_PARAM_OUTPUT_SERIALPORT_ENABLE, //串口输出使能 ID_PARAM_OUTPUT_SERIALPORT_BAUDRATE, //串口波特率 ID_PARAM_OUTPUT_SERIALPORT_PARITY, //串口校验位 ID_PARAM_OUTPUT_SERIALPORT_DATABIT, //串口数据位 ID_PARAM_OUTPUT_SERIALPORT_STOPBITS, //串口停止位 ID_PARAM_OUTPUT_SERIALPORT_FLOWCTRL, //串口流控制 ID_PARAM_OUTPUT_KEYBOARD_ENABLE, //键盘输出使能 ID_PARAM_OUTPUT_EIP_ENABLE, //EIP使能 ID_PARAM_OUTPUT_EIP_RESULT_SWAP_ENABLE, //EIP结果交换使能 ID_PARAM_OUTPUT_EIP_INPUT_SIZE, //EIP输入组件大小 ID_PARAM_OUTPUT_EIP_OUTPUT_SIZE, //EIP输出组件大小 ID_PARAM_OUTPUT_EIP_RESULT_TIMEOUT, //EIP结果超时 ID_PARAM_OUTPUT_MODBUS_ENABLE, //MODBUS使能 ID_PARAM_OUTPUT_MODBUS_ROLE, //MODBUS角色主站/从站 ID_PARAM_OUTPUT_MODBUS_CONNECTIONTYPE, //MODBUS连接类型TCP/Serial ID_PARAM_OUTPUT_MODBUS_TCPSEVER_IP, //MODBUS tcp服务器IP ID_PARAM_OUTPUT_MODBUS_TCPSEVER_PORT, //MODBUS tcp端口 ID_PARAM_OUTPUT_MODBUS_TIMEOUT, //MODBUS 超时时间 ID_PARAM_OUTPUT_MODBUS_FUNCATION, //MODBUS function ID_PARAM_OUTPUT_MODBUS_SERVER_ADDRESS, //MODBUS 服务器地址 ID_PARAM_OUTPUT_MODBUS_STARTADDRESS, //MODBUS 寄存器起始地址 ID_PARAM_OUTPUT_MODBUS_RESULT_SWAP_ENABLE, //MODBUS 结果交换使能 ID_PARAM_OUTPUT_MODBUS_RETRIES_NUM, //MODBUS 重试次数 ID_PARAM_OUTPUT_MODBUS_RESULT_TIMEOUT, //MODBUS 结果超时 ID_PARAM_OUTPUT_FTP_ENABLE, //FTP使能 ID_PARAM_OUTPUT_FTP_LOCAL_ENABLE, //FTP 本地存图使能 ID_PARAM_OUTPUT_FTP_IP, //FTP IP地址 ID_PARAM_OUTPUT_FTP_PORT, //FTP 端口 ID_PARAM_OUTPUT_FTP_USERNAME, //FTP账号 ID_PARAM_OUTPUT_FTP_PWD, //FTP密码 ID_PARAM_OUTPUT_FTP_IMAGE_FORMAT, //FTP存图格式 ID_PARAM_OUTPUT_FTP_COMPRESSRATE, //FTP存图压缩率 ID_PARAM_OUTPUT_FTP_FILEPATH, //FTP存图路径 ID_PARAM_OUTPUT_FTP_DEFAULT_FILENAME, //FTP默认文件名 ID_PARAM_OUTPUT_FTP_LOCAL_PATH, //FTP本地保存路径 ID_PARAM_OUTPUT_FTP_LOCAL_MAX_COUNT, //FTP本地保存最大数量 ID_PARAM_OUTPUT_FTP_CONTAINS_DATE, //FTP命名包含时间缀 ID_PARAM_OUTPUT_FTP_CONTAINS_INDEX, //FTP命名包含序号 ID_PARAM_OUTPUT_FTP_CONTAINS_RESULT, //FTP命名包含结果 ID_PARAM_OUTPUT_FTP_CONTAINS_FRAME_NUMBER, //FTP命名包含帧号 ID_PARAM_OUTPUT_FTP_CONTAINS_BARCODE_ID_ENABLE, //FTP生成读码器ID文件夹 ID_PARAM_OUTPUT_FTP_CONTAINS_TRIGGER_SEQUENCE_ENABLE, //FTP生成触发号文件夹 ID_PARAM_OUTPUT_FTP_RESULT_RENDERING, //FTP结果渲染使能 ID_PARAM_OUTPUT_FTP_BOUNDINGBOX_RENDERING, //FTP定位框渲染使能 ID_PARAM_OUTPUT_FTP_SAVE_SRATEGY, //FTP存图策略 ID_PARAM_OUTPUT_FTP_SAVE_POLICY_FRAME_INDEX, //FTP按指定帧号存图 ID_PARAM_OUTPUT_FTP_FTP_SAVE_POLICY_RANGE_START_FRAME, //FTP按范围存图起始帧号 ID_PARAM_OUTPUT_FTP_FTP_SAVE_POLICY_RANGE_END_FRAME, //FTP按范围存图结束帧号 ID_PARAM_OUTPUT_FTP_CONDITION, //FTP保存条件 ID_PARAM_OUTPUT_WEB_ENABLE, //WEB页面使能 ID_PARAM_OUTPUT_WEB_PORT, //WEB页面端口 ID_PARAM_OUTPUT_WEB_IMAGE_QUALITY, //WEB图像质量 ID_PARAM_OUTPUT_WEB_RESULT_ENABLE, //WEB显示结果使能 ID_PARAM_OUTPUT_WEB_IMAGE_ENABLE, //WEB显示图像使能 ID_PARAM_OUTPUT_WEB_DISPLAY_INFO_FORMAT, //WEB显示数据格式化 ID_PARAM_OUTPUT_NETWORKING_ENABLE, //组网使能 ID_PARAM_OUTPUT_NETWORKING_MASTER_ENABLE, //是否是master ID_PARAM_OUTPUT_NETWORKING_PORT, //组网通信端口 ID_PARAM_OUTPUT_NETWORKING_MASTER_IP, //组网主机IP ID_PARAM_OUTPUT_NETWORKING_MASTER_TIMEOUT, //组网主机超时时间 ID_PARAM_OUTPUT_NETWORKING_SLAVE_ID, //组网从机ID ID_PARAM_OUTPUT_NETWORKING_MASTER_MAX_CONNECT_NUM, //组网主机最大连接从机数 ID_PARAM_OUTPUT_NETWORKING_TRIGGER_SLAVE_ENABLE, //组网主机触发从机使能 ID_PARAM_OUTPUT_NETWORKING_SLAVE_RECEIVE_TRIGGER_ENABLE, //组网从机接收主机触发使能 ID_PARAM_OUTPUT_NETWORKING_SLAVE_TRIGGER_DELAY, //组网从机触发延迟 ID_PARAM_OUTPUT_NETWORKING_SLAVE_TRIGGER_CONNECTION_STATUS, //组网连接状态 ID_PARAM_OUTPUT_NETWORKING_DEVICE_ROI_ENABLE, //组网设备ROI补齐使能 ID_PARAM_OUTPUT_PROFINET_ENABLE, //PROFINET使能 ID_PARAM_OUTPUT_PROFINET_RESULT_MODEL_SIZE, //PROFINET结果模块大小 ID_PARAM_OUTPUT_PROFINET_NAME, //PROFINET配置名 ID_PARAM_OUTPUT_PROFINET_RESULT_SWAP_ENABLE, //PROFINET结果字节交换使能 ID_PARAM_OUTPUT_PROFINET_RESULT_SIZE, //PROFINET结果大小 ID_PARAM_OUTPUT_PROFINET_RESULT_TIMEOUT, //PROFINET结果超时 ID_PARAM_OUTPUT_FINS_ENABLE, //FINS使能 ID_PARAM_OUTPUT_FINS_IS_TCP, //FINS是否启用TCP ID_PARAM_OUTPUT_FINS_IP, //FINS上位机IP ID_PARAM_OUTPUT_FINS_PROT, //FINS上位机端口 ID_PARAM_OUTPUT_FINS_STARTADDRESS, //FINS数据起始地址 ID_PARAM_OUTPUT_FINS_RESULT_SWAP_ENABLE, //FINS结果交换使能 ID_PARAM_OUTPUT_FINS_RESULT_SIZE, //FINS结果数据大小 ID_PARAM_OUTPUT_FINS_RESULT_TIMEOUT, //FINS结果超时时间 ID_PARAM_OUTPUT_HTTP_ENABLE, //HTTP使能 ID_PARAM_OUTPUT_HTTP_URL, //HTTP发送地址 ID_PARAM_OUTPUT_MC_CONFIG_ENABLE, //MC使能 ID_PARAM_OUTPUT_MC_CONFIG_UDP_COMMUNICATION, //MC UDP通讯使能 ID_PARAM_OUTPUT_MC_CONFIG_BRAND_MODEL, //MC品牌型号 ID_PARAM_OUTPUT_MC_CONFIG_DATA_FORMAT, //MC数据格式 ID_PARAM_OUTPUT_MC_CONFIG_IP_ADDRESS, //MC IP地址 ID_PARAM_OUTPUT_MC_CONFIG_PORT, //MC端口 ID_PARAM_OUTPUT_MC_CONFIG_START_ADDRESS, //MC起始地址 ID_PARAM_OUTPUT_MC_CONFIG_RESULT_SWAP, //MC结果交换 ID_PARAM_OUTPUT_MC_CONFIG_RESULT_SIZE, //MC结果大小 ID_PARAM_OUTPUT_MC_CONFIG_RESULT_TIMEOUT, //MC结果超时 ID_PARAM_OUTPUT_UDP_CONFIG_ENABLE, //UDP使能 ID_PARAM_OUTPUT_UDP_CONFIG_PORT, //UDP端口 ID_PARAM_OUTPUT_UDP_CONFIG_IP_ADDRESS //UDP IP地址 } } }