using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using static SmartScanner.IDViewerDefines; using System.Reflection; namespace SmartScanner { class IDViewerSDK { public class Node { public IDViewerDefines.IDDeviceInfo data; public Node next; } public struct LinkedList { public Node head; [MarshalAs(UnmanagedType.SysInt)] public int size; } /**************************************** IDImage *****************************************/ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Init", CharSet = CharSet.Ansi)] public static extern long IDImage_Init(ref IntPtr imagePtr); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Destroy", CharSet = CharSet.Ansi)] public static extern void IDImage_Destroy(ref IntPtr imagePtr); // [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Width", CharSet = CharSet.Ansi)] public static extern long IDImage_Width(IntPtr imageHandle); //图片宽度 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Height", CharSet = CharSet.Ansi)] public static extern long IDImage_Height(IntPtr imageHandle); //图片高度 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Step", CharSet = CharSet.Ansi)] public static extern long IDImage_Step(IntPtr imageHandle); //步长 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_BitDepth", CharSet = CharSet.Auto)] public static extern long IDImage_BitDepth(IntPtr imageHandle, ref IntPtr imageType); //位深 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_Channels", CharSet = CharSet.Ansi)] public static extern long IDImage_Channels(IntPtr imageHandle); //通道数 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_ImageData", CharSet = CharSet.Ansi)] public static extern IntPtr IDImage_ImageData(IntPtr imageHandle); //浅拷贝 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_SaveImage", CharSet = CharSet.Ansi)] public static extern long IDImage_SaveImage(IntPtr imageHandle, string filePath, int compression); //保存 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDImage_SaveImageW", CharSet = CharSet.Unicode)] public static extern long IDImage_SaveImageW(IntPtr imageHandle, string filePath, int compression); //宽字节保存 /* * VarPoint */ // 构造函数声明 [DllImport("IDViewerCSDK.dll", EntryPoint = "VarPoint_Create", CharSet = CharSet.Ansi)] public static extern long VarPoint_Create(ref IntPtr handle); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarPoint_CreateWithValues", CharSet = CharSet.Ansi)] public static extern long VarPoint_CreateWithValues(ref IntPtr handle, double xPoint, double yPoint); // 析构函数声明 [DllImport("IDViewerCSDK.dll", EntryPoint = "VarPoint_Destroy", CharSet = CharSet.Ansi)] public static extern void VarPoint_Destroy(ref IntPtr handle); /* * VarFlags */ // 构造函数 [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Create", CharSet = CharSet.Ansi)] public static extern long VarFlags_Create(ref IntPtr handle); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_CreateWithFlags", CharSet = CharSet.Ansi)] public static extern long VarFlags_CreateWithFlags(ref IntPtr handle, uint flags); // 成员函数 [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Set", CharSet = CharSet.Ansi)] public static extern void VarFlags_Set(ref IntPtr handle, uint flag); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Unset", CharSet = CharSet.Ansi)] public static extern void VarFlags_Unset(ref IntPtr handle, uint flag); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Reset", CharSet = CharSet.Ansi)] public static extern void VarFlags_Reset(ref IntPtr handle); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Check", CharSet = CharSet.Ansi)] public static extern bool VarFlags_Check(ref IntPtr handle, uint flag); [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Get", CharSet = CharSet.Ansi)] public static extern uint VarFlags_Get(ref IntPtr handle); // 析构函数 [DllImport("IDViewerCSDK.dll", EntryPoint = "VarFlags_Destroy", CharSet = CharSet.Ansi)] public static extern void VarFlags_Destroy(ref IntPtr handle); /* * IDVariable */ // 创建 IDVariable 实例 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_CreateIDVariable", CharSet = CharSet.Ansi)] public static extern IntPtr IDVariab_CreateIDVariable(); // 释放 IDVariable 实例 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_DestroyIDVariable", CharSet = CharSet.Ansi)] public static extern void IDVariab_DestroyIDVariable(IntPtr IDVariableHandle); // 设置 double 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataDouble", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataDouble(IntPtr IDVariableHandle, double data, bool setInit); // 设置 string 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataChar", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataChar(IntPtr IDVariableHandle, string data, bool setInit); // 设置 string 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataString", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataString(IntPtr IDVariableHandle, string data, bool setInit); // 设置 bool 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataBool", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataBool(IntPtr IDVariableHandle, bool data, bool setInit); // 设置 uint 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataUnsignedInt", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataUnsignedInt(IntPtr IDVariableHandle, uint data, bool setInit = false); // 设置 VarPoint 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataVarPoint", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataVarPoint(IntPtr IDVariableHandle, ref double data, bool setInit = false); // 设置vector data数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataVectorDouble", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataVectorDouble(IntPtr IDVariableHandle, IntPtr data, int size, bool setInit = false); // 设置vector data 数据 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataStringArray", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataStringArray(IntPtr IDVariableHandle, string[] data, int size, bool setInit = false); // 将vector转换 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataBoolVector", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataBoolVector(IntPtr IDVariableHandle, ref bool data, int size, bool setInit = false); // 将vector转换为C风格的接口 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariab_SetDataVarFlags", CharSet = CharSet.Ansi)] public static extern void IDVariab_SetDataVarFlags(IntPtr IDVariableHandle, ref IntPtr handle, bool setInit = false); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariable_ToNumber", CharSet = CharSet.Ansi)] public static extern double IDVariable_ToNumber(IntPtr IDVariableHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariable_ToBool", CharSet = CharSet.Ansi)] public static extern bool IDVariable_ToBool(IntPtr IDVariableHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariable_ToFlags", CharSet = CharSet.Ansi)] public static extern IntPtr IDVariable_ToFlags(IntPtr IDVariableHandle); /* * class IDCodeParam */ // 构造函数的封装 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_Create", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_Create(); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateCopy", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateCopy(IntPtr IDCodeParamHandle); // 使用不同参数构造函数的封装 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateFromQRCodeParam", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateFromQRCodeParam(ref IDQRCodeParam qrCodeParam); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateFromDMCodeParam", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateFromDMCodeParam(ref IDDMCodeParam dmCodeParam); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateFromPDF417CodeParam", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateFromPDF417CodeParam(ref IDPDF417CodeParam pdf417CodeParam); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateFromBarCodeParam", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateFromBarCodeParam(ref IDBarCodeParam barCodeParam); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_CreateFromMicroQRParam", CharSet = CharSet.Ansi)] public static extern IntPtr IDCodeParam_CreateFromMicroQRParam(ref IDMicroQRParam microQRParam); // 赋值操作符的封装 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_Assign", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_Assign(IntPtr self, IntPtr IDCodeParamHandle); // 设置和获取参数的函数封装 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_SetQRCodeParam", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_SetQRCodeParam(IntPtr self, ref IDQRCodeParam param); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetQRCodeParam", CharSet = CharSet.Ansi)] public static extern ref IDQRCodeParam IDCodeParam_GetQRCodeParam(IntPtr self); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_SetDMCodeParam", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_SetDMCodeParam(IntPtr self, ref IDDMCodeParam param); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetDMCodeParam", CharSet = CharSet.Ansi)] public static extern ref IDDMCodeParam IDCodeParam_GetDMCodeParam(IntPtr self); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_SetStackedCodeParam", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_SetStackedCodeParam(IntPtr self, ref IDQRCodeParam param); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetStackedCodeParam", CharSet = CharSet.Ansi)] public static extern ref IDPDF417CodeParam IDCodeParam_GetStackedCodeParam(IntPtr self); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_SetBarCodeParam", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_SetBarCodeParam(IntPtr self, ref IDBarCodeParam param); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetBarCodeParam", CharSet = CharSet.Ansi)] public static extern ref IDBarCodeParam IDCodeParam_GetBarCodeParam(IntPtr self); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_SetMicroQRParam", CharSet = CharSet.Ansi)] public static extern void IDCodeParam_SetMicroQRParam(IntPtr self, ref IDMicroQRParam param); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetMicroQRParam", CharSet = CharSet.Ansi)] public static extern ref IDMicroQRParam IDCodeParam_GetMicroQRParam(IntPtr self); // 获取类型的封装 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCodeParam_GetType", CharSet = CharSet.Ansi)] public static extern IDCodeCategory IDCodeParam_GetType(IntPtr self); /** * @brief setFilterRules 设置过滤规则 * @param filterRules 过滤规则 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetFilterRules", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetFilterRules(IntPtr deviceHandle, IDFilterRules filterRules); /** * @brief setFilterRules 删除过滤规则 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_RemoveFilterRules", CharSet = CharSet.Ansi)] public static extern long IDDevice_RemoveFilterRules(IntPtr deviceHandle); /** * @brief addEnvironmentVariable 添加一个环境变量 * @param varName 环境变量名称 * @param varValue 环境变量对应的值 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AddEnvironmentVariable", CharSet = CharSet.Ansi)] public static extern long IDDevice_AddEnvironmentVariable(IntPtr deviceHandle, string varName, IntPtr varValue); /** * @brief deleteEnvironmentVariable 删除指定环境变量 * @param varName 要删除的环境变量名称 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteEnvironmentVariable", CharSet = CharSet.Ansi)] public static extern long IDDevice_DeleteEnvironmentVariable(IntPtr deviceHandle, string varName); /** * @brief getEnvironmentVariableNames 获取所有环境变量名 * @param varNames 环境变量名列表 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetEnvironmentVariableNamesEX", CharSet = CharSet.Ansi)] //使用后需要调用IDDevice_FreeSolutionList 释放StringList public static extern ref StringList IDDevice_GetEnvironmentVariableNamesEX(IntPtr deviceHandle); /** * @brief getEnvironmentVariable 根据变量名获取环境变量的值 * @param varName 环境变量名称 * @param varValue 环境变量对应的值 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetEnvironmentVariable", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetEnvironmentVariable(IntPtr deviceHandle, ref string varName, IntPtr varValue); /** * @brief getParamValue 获取方案参数 * @param paramName 参数名枚举值 * @param generalParam 参数取值 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetParamValue", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetParamValue(IntPtr deviceHandle, IDGeneralParamsName paramName, IntPtr generalParam); /** * @brief getParamValue 设置方案参数 * @param paramName 参数名枚举值 * @param generalParam 参数取值 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetParamValue", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetParamValue(IntPtr deviceHandle, IDGeneralParamsName paramName, IntPtr generalParam); //class IDGeneralParam // 创建空对象 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create(); // 基础类型 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Bool", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Bool(bool data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Char", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Char(string data); // 数值类型 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UnsignedChar", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UnsignedChar(char data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Float", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Float(float data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UnsignedShort", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UnsignedShort(ushort data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UnsignedInt", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UnsignedInt(uint data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UnsignedLong", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UnsignedLong(ulong data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Long", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Long(long data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Int", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Int(int data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_Short", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_Short(short data); // 特殊类型 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_VarPoint", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_VarPoint(IntPtr data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_VarFlags", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_VarFlags(IntPtr data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_VectorDouble", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_VectorDouble(ref double data, int size); /* string[] data = new string[] { "data1", "data2", "data3" }; */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_VectorString", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_VectorString(string[] data, int size); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_VectorBool", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_VectorBool(ref bool data, int size); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UChar", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UChar(char data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UShort", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UShort(ushort data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_UInt", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_UInt(uint data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_Create_ULong", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_Create_ULong(ulong data); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_SetName", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_SetName(IntPtr generalParamHandle, string name); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_GetName", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_GetName(IntPtr generalParamHandle, string name); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_GetType", CharSet = CharSet.Ansi)] public static extern IDGeneralParamsType IDGeneralParam_GetType(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_SetComment", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_SetComment(IntPtr generalParamHandle, string comment); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_GetComment", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_GetComment(IntPtr generalParamHandle, string comment); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_GetID", CharSet = CharSet.Ansi)] public static extern int IDGeneralParam_GetID(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_SetID", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_SetID(IntPtr generalParamHandle, int id); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToInt", CharSet = CharSet.Ansi)] public static extern int IDGeneralParam_ToInt(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToNumber", CharSet = CharSet.Ansi)] //PLC变量类型是Num public static extern double IDGeneralParam_ToNumber(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToBool", CharSet = CharSet.Ansi)] public static extern bool IDGeneralParam_ToBool(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToChar", CharSet = CharSet.Ansi)] public static extern char IDGeneralParam_ToChar(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToFloat", CharSet = CharSet.Ansi)] public static extern float IDGeneralParam_ToFloat(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToCharItr", CharSet = CharSet.Ansi)] public static extern IntPtr IDGeneralParam_ToCharItr(IntPtr generalParamHandle); //字符串类型获取后必须使用IDGeneralParam_FreeCharItr 对指针进行释放; [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_FreeCharItr", CharSet = CharSet.Ansi)] public static extern void IDGeneralParam_FreeCharItr(IntPtr ptr); //和上面IDGeneralParam_ToCharItr配套使用完后进行释放; [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToUShort", CharSet = CharSet.Ansi)] public static extern ushort IDGeneralParam_ToUShort(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToUInt", CharSet = CharSet.Ansi)] public static extern uint IDGeneralParam_ToUInt(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToULong", CharSet = CharSet.Ansi)] public static extern ulong IDGeneralParam_ToULong(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDGeneralParam_ToShort", CharSet = CharSet.Ansi)] public static extern short IDGeneralParam_ToShort(IntPtr generalParamHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVariable_ToFlags", CharSet = CharSet.Ansi)] public static extern long IDGeneralParam_ToLong(IntPtr generalParamHandle); /**************************************** IDDevice *****************************************/ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_Open", CharSet = CharSet.Ansi)] public static extern long IDDevice_Open(IntPtr deviceHandle); //打开设备 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_IsOpen", CharSet = CharSet.Ansi)] public static extern long IDDevice_IsOpen(IntPtr deviceHandle); //打开状态 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_StartRunning", CharSet = CharSet.Ansi)] public static extern long IDDevice_StartRunning(IntPtr deviceHandle); //默认 注册回调 运行设备 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_StartDebugging", CharSet = CharSet.Ansi)] public static extern long IDDevice_StartDebugging(IntPtr deviceHandle); //启动调试 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_IsDebugging", CharSet = CharSet.Ansi)] public static extern long IDDevice_IsDebugging(IntPtr deviceHandle); //调试状态 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_IsRunning", CharSet = CharSet.Ansi)] public static extern long IDDevice_IsRunning(IntPtr deviceHandle); //运行状态 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_IsConnected", CharSet = CharSet.Ansi)] public static extern long IDDevice_IsConnected(IntPtr deviceHandle); //连接状态 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_Stop", CharSet = CharSet.Ansi)] public static extern long IDDevice_Stop(IntPtr deviceHandle); //停止 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_Close", CharSet = CharSet.Ansi)] public static extern long IDDevice_Close(IntPtr deviceHandle); //关闭 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_CaptureImage", CharSet = CharSet.Ansi)] public static extern long IDDevice_CaptureImage(IntPtr deviceHandle, IntPtr imageHandle); //采集一次 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetLasersightEnable", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetLasersightEnable(IntPtr deviceHandle, bool enable); //设置使能瞄准器 /**************************************** DeviceInfo *****************************************/ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetDeviceInfo", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetDeviceInfo(IntPtr deviceHandle, ref IDDeviceInfo DeviceInfoHandel); //获取设备信息(SN/MAC/IP/MODEL) [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetHardWareParams", CharSet = CharSet.Ansi)] public static extern IDViewerDefines.IDDeviceHarewareParams IDDevice_GetHardWareParams(IntPtr deviceHandle); //此接口需要VS2019以上的版本,C#7.0新增引入了新的语法ref return和ref locals,允许函数的返回值也可以被声明为引用 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetSolutionList", CharSet = CharSet.Ansi)] public static extern ref StringList IDDevice_GetSolutionList(IntPtr deviceHandle, int timeout = 2000); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetRunningSolution", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetRunningSolution(IntPtr deviceHandle, string solutionName, int timeout = 2000); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetRunningSolution", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetRunningSolution(IntPtr deviceHandle, byte[] solutionName, int timeout = 2000); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteSolution", CharSet = CharSet.Ansi)] public static extern long IDDevice_DeleteSolution(IntPtr deviceHandle, string solutionName, int timeout = 2000); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_Release", CharSet = CharSet.Ansi)] public static extern void IDDevice_Release(IntPtr deviceHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_FreeSolutionList", CharSet = CharSet.Ansi)] public static extern void IDDevice_FreeSolutionList(StringList solutionList); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_getROIInfoLength", CharSet = CharSet.Ansi)] public static extern long IDDevice_getROIInfoLength(IntPtr deviceHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_getROIInfo", CharSet = CharSet.Ansi)] //获取ROI public static extern IDViewerDefines.IDROIInfo IDDevice_getROIInfo(IntPtr deviceHandle, int roiIndex); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteROI", CharSet = CharSet.Ansi)] //删除ROI public static extern long IDDevice_DeleteROI(IntPtr deviceHandle, int roiIndex); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AddROI", CharSet = CharSet.Ansi)] //添加ROI public static extern long IDDevice_AddROI(IntPtr deviceHandle, IDViewerDefines.IDROIInfo roiInfo); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_ModifyROI", CharSet = CharSet.Ansi)] //修改ROI public static extern long IDDevice_ModifyROI(IntPtr deviceHandle, int roiIndex, IDViewerDefines.IDPoint topLeftPoint, IDViewerDefines.IDPoint bottomRightPoint); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetFocusLocation", CharSet = CharSet.Ansi)] public static unsafe extern long IDDevice_GetFocusLocation(IntPtr deviceHandle, int* focusLocation); //获取焦距位置 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AutoFocus", CharSet = CharSet.Ansi)] //自动对焦 public static unsafe extern long IDDevice_AutoFocus(IntPtr deviceHandle, int paramIndex, ref int focusLocation); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetFocusLocation", CharSet = CharSet.Ansi)] //设置焦距位置 public static extern long IDDevice_SetFocusLocation(IntPtr deviceHandle, int paramIndex, int focusLocation); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetExposure", CharSet = CharSet.Ansi)] //设置曝光 public static extern long IDDevice_SetExposure(IntPtr deviceHandle, int paramIndex, double exposure); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetGain", CharSet = CharSet.Ansi)] //设置增益 public static extern long IDDevice_SetGain(IntPtr deviceHandle, int paramIndex, int gain); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetGamma", CharSet = CharSet.Ansi)] //设置伽马 public static extern long IDDevice_SetGamma(IntPtr deviceHandle, int paramIndex, double gamma); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetIlluminate", CharSet = CharSet.Ansi)] //设置通道亮度:通道数,设置-1或小于0,表示同时设置所有通道 public static extern long IDDevice_SetIlluminate(IntPtr deviceHandle, int paramIndex, int channel, int value); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetIlluminateEnable", CharSet = CharSet.Ansi)] //设置通道使能:通道数,设置-1或小于0,表示同时设置所有通道 public static extern long IDDevice_SetIlluminateEnable(IntPtr deviceHandle, int paramIndex, int channel, bool enable); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetIlluminanatbrightnessLength", CharSet = CharSet.Ansi)]//获取illuminanatbrightness 数量 public static extern long IDDevice_GetIlluminanatbrightnessLength(IntPtr deviceHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetIlluminanatbrightness", CharSet = CharSet.Ansi)] //获取illuminanatbrightness public static extern IDNodeParam IDDevice_GetIlluminanatbrightness(IntPtr deviceHandle, uint index); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetTriggerAllParams", CharSet = CharSet.Ansi)] //获取所有触发参数 public static extern long IDDevice_GetTriggerAllParams(IntPtr deviceHandle, ref IDTriggerParams triggerParams, ref IDHardwareTrigger hardwareTrigger, ref IDTcpServerTrigger tcpServerTrigger, ref IDTcpClientTrigger tcpClientTrigger, ref IDSerialPortTrigger serialPortTrigger, ref IDUDPTrigger udpTrigger); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetDataconfigAllParams", CharSet = CharSet.Ansi)] //获取所有数据处理参数 public static extern long IDDevice_GetDataconfigAllParams(IntPtr deviceHandle, ref IDFilterInfo filterInfo, ref IDFilterRules filterRules, ref IDDataConfig dataConfig); //[DllImport("IDViewerCSDK.dll", EntryPoint = "getTriggerAllParams", CharSet = CharSet.Ansi)] //public static extern long getTriggerAllParams(IntPtr deviceHandle, IDTriggerParams triggerParams, IDHardwareTrigger hardwareTrigger, // IDTcpServerTrigger tcpServerTrigger, IDTcpClientTrigger tcpClientTrigger, IDSerialPortTrigger serialPortTrigger, IDUDPTrigger udpTrigger); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetCommunicationAllParams", CharSet = CharSet.Ansi)] //获取所有通信参数 public static extern long IDDevice_GetCommunicationAllParams(IntPtr deviceHandle, ref IDTcpServerCommunication tcpServerInfo, ref IDTcpClientCommunication tcpClientInfo, ref IDSerialPortCommunication serialPortInfo, ref IDKeyboardConfig keyboardInfo, ref IDEipConfig eipConfig, ref IDModbusConfig modbusConfig, ref IDProfinetConfig profinetConfig, ref IDFtpConfig ftpConfig, ref IDWebpageConfig webpageConfig, ref IDFinsConfig finsConfig, ref IDHttpConfig httpConfig, ref IDNetworkingConfig networkingConfig); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetCommunicationAllParams_V2", CharSet = CharSet.Ansi)] //获取所有通信参数 public static extern long IDDevice_GetCommunicationAllParams_V2(IntPtr deviceHandle, ref IDTcpServerCommunication tcpServerInfo, ref IDTcpClientCommunication tcpClientInfo, ref IDSerialPortCommunication serialPortInfo, ref IDKeyboardConfig keyboardInfo, ref IDEipConfig eipConfig, ref IDModbusConfig modbusConfig, ref IDProfinetConfig profinetConfig, ref IDFtpConfig ftpConfig, ref IDWebpageConfig webpageConfig, ref IDFinsConfig finsConfig, ref IDHttpConfig httpConfig, ref IDNetworkingConfig networkingConfig, ref IDMcConfig mcConfig, ref IDUdpConfig iDUdpConfig); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DownLoadCurrentSolution", CharSet = CharSet.Ansi)] //下载当前方案 参数设置为临时设置,需要调用该方法才能保存到设备离线生效 public static extern long IDDevice_DownLoadCurrentSolution(IntPtr deviceHandle); /** * @brief uploadSolution 上传方案 * @param solutionData 方案数据 * @param solutionName 方案名称 * @param timeout 超时时间 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_UploadSolution", CharSet = CharSet.Ansi)] public static extern long IDDevice_UploadSolution(IntPtr deviceHandle, string solutionData, string solutionName, int timeout = 3000); /** * @brief downLoadSolution 下载方案 * @param solutionData 方案数据 * @param solutionName 方案名称 * @param timeout 超时时间 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DownLoadSolution", CharSet = CharSet.Ansi)] public static extern long IDDevice_DownLoadSolution(IntPtr deviceHandle, ref string solutionData, string solutionName, int timeout = 3000); /** * @brief openMC 打开MC * @param mode MC 品牌型号(取值范围:(Mitsubishi_L:0,Mitsubishi_Q:1,Mitsubishi_R:2,Mitsubishi_A:4,Mitsubishi_Fx3U:5,Mitsubishi_Fx5U:6)) * @param format MC 格式 (取值范围:BIN:0,ASCII:1) * @param ip MC IP地址 * @param port MC 端口 * @param startAddress MC 起始地址 * @param resultSwap MC 结果交换 * @param resultSize MC 结果大小 * @param timeout MC MC结果超时 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_OpenMC", CharSet = CharSet.Ansi)] public static extern long IDDevice_OpenMC(IntPtr deviceHandle, IDMcBrandModel mode, IDMcDataFormat format, string ip, int port, int startAddress, bool resultSwap, int resultSize, int timeout); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_CloseMC", CharSet = CharSet.Ansi)] public static extern long IDDevice_CloseMC(IntPtr deviceHandle); /** * @brief getMcInfo 获取当前MC连接配置信息 * @param mode MC品牌型号 * @param format MC格式(BIN/ASCII) * @param ip MC的IP地址 * @param port MC的端口 * @param startAddress MC起始地址 * @param resultSwap MC结果交换配置 * @param resultSize MC结果大小 * @param timeout MC结果超时时间 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetMcInfo", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetMcInfo(IntPtr deviceHandle, ref IDMcBrandModel mode, ref IDMcDataFormat format, ref string ip, ref int port, ref int startAddress, ref bool resultSwap, ref int resultSize, ref int timeout); /* * 2025.2.15 新增IDDevice类接口 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_ClearROI", CharSet = CharSet.Ansi)] //清除所有ROI public static extern long IDDevice_ClearROI(IntPtr deviceHandle); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AddImageROI", CharSet = CharSet.Ansi)] public static extern long IDDevice_AddImageROI(IntPtr deviceHandle, ref IDImageROI roiInfos); //添加图像ROI [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteImageROI", CharSet = CharSet.Ansi)] public static extern long IDDevice_DeleteImageROI(IntPtr deviceHandle, int roiIndex); //删除图像ROI [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetROICodeNum", CharSet = CharSet.Ansi)] //设置指定 ROI 的码数目 public static extern long IDDevice_SetROICodeNum(IntPtr deviceHandle, int roiIndex, int codeNum); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_ModifyImageROI", CharSet = CharSet.Ansi)] public static extern long IDDevice_ModifyImageROI(IntPtr deviceHandle, int roiIndex, IDPoint topLeftPoint, IDPoint bottomRightPoint);//更新图像ROI [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetImageROIsLength", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetImageROIsLength(IntPtr deviceHandle);//获取图像ROI列表长度 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetImageROIsInfo", CharSet = CharSet.Ansi)] public static extern IDImageROI IDDevice_GetImageROIsInfo(IntPtr deviceHandle, uint index);//获取图像ROI [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_ClearImageROI", CharSet = CharSet.Ansi)] public static extern long IDDevice_ClearImageROI(IntPtr deviceHandle);//清除所有图像ROI [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AddCodeType", CharSet = CharSet.Ansi)] public static extern long IDDevice_AddCodeType(IntPtr deviceHandle, IDCodeType type);//添加码制 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteCodeType", CharSet = CharSet.Ansi)] public static extern long IDDevice_DeleteCodeType(IntPtr deviceHandle, IDCodeType type);//删除码制 /** * @brief clearCodeType 清除所有码制 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_ClearCodeType", CharSet = CharSet.Ansi)] public static extern long IDDevice_ClearCodeType(IntPtr deviceHandle); /** * @brief getImageROIs 获取码制信息列表长度 * @param * @return 获取码制信息列表长度 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetCodeTypesLength", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetCodeTypesLength(IntPtr deviceHandle); /** * @brief getImageROIs 获取码制信息 * @param index 第几个IDCodeType_C信息 * @return IDCodeType_C */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetCodeTypesInfo", CharSet = CharSet.Ansi)] public static extern IDCodeType IDDevice_GetCodeTypesInfo(IntPtr deviceHandle, uint index); /** * @brief setCodeCategoryParam 设置条码算法参数 * @param codeType 条码类型 * @param codeParam 条码参数信息 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetCodeCategoryParam", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetCodeCategoryParam(IntPtr deviceHandle, IDCodeCategory codeType, IntPtr codeParam); /** * @brief getSolutionImageParams 获取当前方案图像设置页参数 * @param solutionImage 图像页参数 //图像参数 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetSolutionImage", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetSolutionImage(IntPtr deviceHandle, ref IDSolutionImage solutionImage); /** * @brief getSolutionImageParams 获取图像参数组部分参数 * @param solutionImageParams 图像参数组部分参数 * @param index 参数组第几个参数 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetSolutionImageParams", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetSolutionImageParams(IntPtr deviceHandle, int index, ref IDSolutionImageParams solutionImageParams); /** * @brief getSolutionImageParams 获取图像光源通道参数 * @param solutionImageParams 图像参数组部分参数 * @param index 参数组第几个参数 * @param illIndex 参数组第几个参数的第几个光源通道参数 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetSolutionImageIlluminant", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetSolutionImageIlluminant(IntPtr deviceHandle, int index, int illIndex, ref IDSolutionImageIlluminant solutionImageIlluminant); /** * @brief appendLastImageParam 基于最后一个参数节点新增图像参数组 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_AppendLastImageParam", CharSet = CharSet.Ansi)] public static extern long IDDevice_AppendLastImageParam(IntPtr deviceHandle); /** * @brief deleteImageParamAtIndex 删除图像参数组 * @param paramIndex 参数组序号 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_DeleteImageParamAtIndex", CharSet = CharSet.Ansi)] public static extern long IDDevice_DeleteImageParamAtIndex(IntPtr deviceHandle, int paramIndex); /** * @brief setAutoExposureEnabled 设置使能自动曝光 * @param enabled 是否启用自动曝光,`true` 为启用,`false` 为禁用 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetAutoExposureEnabled", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetAutoExposureEnabled(IntPtr deviceHandle, bool enabled); /** * @brief getExposure 获取当前曝光 * @param exposure 曝光值 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetExposure", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetExposure(IntPtr deviceHandle, ref double exposure); /** * @brief setAutoGainEnabled 设置使能自动增益 * @param enabled 是否启用自动增益,`true` 为启用,`false` 为禁用 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetAutoGainEnabled", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetAutoGainEnabled(IntPtr deviceHandle, bool enabled); /** * @brief getGainCount 获取增益列表个数 * @param count 增益列表个数 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetGainCount", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetGainCount(IntPtr deviceHandle, ref int count); /** * @brief getGain 获取当前增益 * @param gain 增益 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetGain", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetGain(IntPtr deviceHandle, ref int gain); /** * @brief getGain 获取当前增益 * @param paramIndex 参数组 * @param gain 增益值 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetGain_1330", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetGain_1330(IntPtr deviceHandle, int paramIndex, ref double gain); /** * @brief getGain 获取增益列表中指定下标对应的增益值 * @param index 增益值在列表中的索引 * @param gain 增益值 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetGainValueByIndex_1330", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetGainValueByIndex_1330(IntPtr deviceHandle, int paramIndex, ref double gain); /** * @brief getGamma 获取当前伽马 * @param gamma 伽马值 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_GetGamma", CharSet = CharSet.Ansi)] public static extern long IDDevice_GetGamma(IntPtr deviceHandle, ref double gamma); /** * @brief setDIParam 设置DI参数 * @param pin 引脚编号 * @param params DI参数信息 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetDIParam", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetDIParam(IntPtr deviceHandle, uint pin, ref IDDIParams iDDIParams); /** * @brief setDOParam 设置DO参数 * @param pin 引脚编号 * @param params DO参数信息 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDDevice_SetDOParam", CharSet = CharSet.Ansi)] public static extern long IDDevice_SetDOParam(IntPtr deviceHandle, uint pin, IDDOParams iDDOParams); /* * @brief getIOConfigAllParams 获取所有IO输入参数信息长度 * @ * @ * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "getIOConfigInputParamsLength", CharSet = CharSet.Ansi)] public static extern long getIOConfigInputParamsLength(IntPtr deviceHandle); /* * 获取IO输入参数信息 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "getIOConfigInputParamsInfo", CharSet = CharSet.Ansi)] public static extern long getIOConfigInputParamsInfo(IntPtr deviceHandle, uint index, ref IDDIParams IDDIParams); /* @brief getIOConfigAllParams 获取所有IO输出参数信息长度 * @ * @ * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "getIOConfigOutputParamsLength", CharSet = CharSet.Ansi)] public static extern long getIOConfigOutputParamsLength(IntPtr deviceHandle); /** * @brief addDOParam 添加DO参数 * @param params DO参数信息 * @return */ [DllImport("IDViewerCSDK.dll", EntryPoint = "addDOParam", CharSet = CharSet.Ansi)] public static extern long addDOParam(IntPtr deviceHandle, ref IDDOParams iDDOParams); /* * 获取IO输出参数信息 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "getIOConfigOutputParamsInfo", CharSet = CharSet.Ansi)] public static extern long getIOConfigOutputParamsInfo(IntPtr deviceHandle, uint index, ref IDDOParams IDDOParams); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_ResultNotify_")] public static extern void IDCallback_ResultNotify_(IntPtr deviceHandle, IntPtr resCallback); // 结果回调函数 [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_ResultNotify_Image_")] public static extern void IDCallback_ResultNotify_Image_(IntPtr deviceHandle, IntPtr resCallback); // 图片回调函数 //[DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDecodeInfo")] //public extern static IntPtr IDCallback_GetIDDecodeInfo(IntPtr decodeInfoHandel); //IDCallback_GetIDDecodeInfo [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDecodeInfo_A")] public extern static long IDCallback_GetIDDecodeInfo_A(IntPtr decodeInfoHandel, ref IDDecodeInfo info); //IDCallback_GetIDDecodeInfo [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDecodeROIInfo", CharSet = CharSet.Ansi)] public static extern IDDecodeROIInfo IDCallback_GetIDDecodeROIInfo(IntPtr decodeInfoHandel, uint index); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDecodeResult", CharSet = CharSet.Ansi)] public static extern IDDecodeResult IDCallback_GetIDDecodeResult(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDMCodeResult", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDDMCodeResult(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //DM解码数据 uint index, ref IDDMCodeResult IDDMCodeResultData); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_CheckDeCodeTypeResult", CharSet = CharSet.Ansi)] public static extern long IDCallback_CheckDeCodeTypeResult(IntPtr decodeInfoHandel, uint decodeType, uint decodeROIInfoIndex); //详细码类型的结果长度 ,0表示没有解码结果,-1 表示roi不存在 //[DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetID_QRODE_Result", CharSet = CharSet.Ansi)] //public static extern long IDCallback_GetID_QRODE_Result(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //QR解码数据 // uint index, ref IDQRCodeResult iDQRCodeResult); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDMCodeResult_QualityDM15415", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDDMCodeResult_QualityDM15415(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //15414dm码质量 uint index, ref IDQualityDM15415 iDQualityDM15415); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDDMCodeResult_QUALITY_DM_29158", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDDMCodeResult_QUALITY_DM_29158(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //29158dm码质量 uint index, ref IDQualityDM29518 iDQualityDM29518); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDPDF417CodeResult", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDPDF417CodeResult(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index, ref IDPDF417CodeResult iDPDF417CodeResultData); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetID_QR_CODE_Result", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetID_QR_CODE_Result(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index, ref IDQRCodeResult iDQRCodeResult); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetID_QR_CODE_Result_IDQualityQR15415", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetID_QR_CODE_Result_IDQualityQR15415(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //15414qr码质量 uint index, ref IDQualityQR15415 iDQualityQR15415); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetID_QR_CODE_Result_IDQualityQR29518", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetID_QR_CODE_Result_IDQualityQR29518(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, //29518qr码质量 uint index, ref IDQualityQR29518 iDQualityQR29518); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDPDF417CodeResult_IDQualityPDF417_15415", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDPDF417CodeResult_IDQualityPDF417_15415(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index, ref IDQualityPDF417_15415 iDQualityPDF417_15415); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDBarCodeResult", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDBarCodeResult(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index, ref IDBarCodeResult iDBarCodeResultData); [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDBarCodeResult_IDQuality15416", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDBarCodeResult_IDQuality15416(IntPtr decodeInfoHandel, uint decodeROIInfoIndex, uint index, ref IDQuality15416 iDQuality15416); /* * decodeInfoHandel 句柄 * decodeType 解码类型 比如 1dm ,2 qr,3 pdf417,4 barcode * decodeROIInfoIndex roi 第几个roi * index 第几个具体解码类型结果 * pointIndex第几个点 * Position 点数据 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDCallback_GetIDResultPosition", CharSet = CharSet.Ansi)] public static extern long IDCallback_GetIDResultPosition(IntPtr decodeInfoHandel, uint decodeType, uint decodeROIInfoIndex, uint index, uint pointIndex, ref IDPoint iDPoint); /** * @brief IDVIEWER_Init 使用SDK其他功能前需要先调用该初始化方法 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_Init_", CharSet = CharSet.Ansi)] public extern static long IDVIEWER_Init_(); /** * @brief IDVIEWER_DiscoveryDevices 扫描设备列表 * @param deviceList 返回获取的设备列表 * @param discoveryTime 扫描周期,默认200(单位毫秒) * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_DiscoveryDevices_", CharSet = CharSet.Ansi)] public extern static IntPtr IDVIEWER_DiscoveryDevices_(uint discoveryTime = 1000); /** * @brief IDVIEWER_GetDevicesLength_ 设备列表长度 * @param deviceList 返回获取的设备列表长度 * * @return 长度 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_GetDevicesLength_", CharSet = CharSet.Ansi)] public extern static long IDVIEWER_GetDevicesLength_(IntPtr DevicesList); /** * @brief IDVIEWER_SelectIDDeviceInfo_ 获取某个序号的设备 * @param DevicesList 当前设备列表指针 * @param index 设备列表的序号 * @return 设备信息 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_SelectIDDeviceInfo_", CharSet = CharSet.Ansi)] public extern static long IDVIEWER_SelectIDDeviceInfo_(IntPtr DevicesList, ref IDDeviceInfo IDDeviceInfoHandel, uint index); /** * @brief IDVIEWER_SetIP 设置IP 设置IP后需要重新扫描 * @param deviceInfo 当前设备信息 * @param iPv4 新的IP地址 * @param mask 新的MASK地址 * @param gateway 新的网关地址 * @param isStatic 是否设置静态IP(false为临时IP) * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_SetIP_", CharSet = CharSet.Ansi)] public static extern long IDVIEWER_SetIP_(ref IDViewerDefines.IDDeviceInfo deviceInfo, string iPv4, string mask, string gateway, bool isStatic); /** * @brief IDVIEWER_CreateDevice CreateDevice 创建设备 * @param deviceInfo 当前设备信息 * @param device 创建的设备指针 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_CreateDevice_", CharSet = CharSet.Ansi)] public static extern long IDVIEWER_CreateDevice_(ref IDViewerDefines.IDDeviceInfo deviceInfo, ref IntPtr deviceHandle); /** * @brief IDVIEWERreateDevice IDVIEWERreateDeviceBySN 更加SN创建设备 * @param cameraSN 当前设备SN * @param device 创建的设备指针 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_CreateDeviceBySN_", CharSet = CharSet.Ansi)] public static extern long IDVIEWER_CreateDeviceBySN_(string cameraSN, ref IntPtr deviceHandle); /** * @brief IDVIEWERreateDevice IDVIEWERreateDeviceByIP 更加SN创建设备 * @param cameraIP 当前设备IP * @param device 创建的设备指针 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_CreateDeviceByIP_", CharSet = CharSet.Ansi)] public static extern long IDVIEWER_CreateDeviceByIP_(string cameraIP, ref IntPtr deviceHandle); /** * @brief IDVIEWER_UnInit 使用完SDK后调用释放资源 * @return 错误码 */ [DllImport("IDViewerCSDK.dll", EntryPoint = "IDVIEWER_UnInit_", CharSet = CharSet.Ansi)] public static extern long IDVIEWER_UnInit_(IntPtr deviceList); } }