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 = "<Code*String>";
|
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地址
|
}
|
|
}
|
}
|