示例#1
0
        /// <summary>
        /// 将三枚预登记指纹模板合并成一枚登记模板
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <param name="temp1">预登记指纹模板 1</param>
        /// <param name="temp2">预登记指纹模板 2</param>
        /// <param name="temp3">预登记指纹模板 3</param>
        /// <param name="regTemp">返回登记模板</param>
        /// <returns></returns>
        public static ErrorCode DBMerge(IntPtr dbHandle, byte[] temp1, byte[] temp2, byte[] temp3, byte[] regTemp)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            int    regTempLen = regTemp.Length;
            IntPtr intPtr     = Marshal.AllocHGlobal(temp1.Length);

            Marshal.Copy(temp1, 0, intPtr, temp1.Length);
            IntPtr intPtr2 = Marshal.AllocHGlobal(temp2.Length);

            Marshal.Copy(temp2, 0, intPtr2, temp2.Length);
            IntPtr intPtr3 = Marshal.AllocHGlobal(temp3.Length);

            Marshal.Copy(temp3, 0, intPtr3, temp3.Length);
            IntPtr intPtr4 = Marshal.AllocHGlobal(regTemp.Length);
            int    num     = ZkfpPlus.ZKFPM_GenRegTemplate(dbHandle, intPtr, intPtr2, intPtr3, intPtr4, ref regTempLen);

            if (num == (int)ErrorCode.OK)
            {
                Marshal.Copy(intPtr4, regTemp, 0, regTempLen);
            }
            Marshal.FreeHGlobal(intPtr);
            Marshal.FreeHGlobal(intPtr2);
            Marshal.FreeHGlobal(intPtr3);
            Marshal.FreeHGlobal(intPtr4);
            return((ErrorCode)num);
        }
示例#2
0
        /// <summary>
        /// 关闭设备
        /// </summary>
        /// <param name="devHandle">设备句柄</param>
        /// <returns></returns>
        public static ErrorCode CloseDevice(ref IntPtr devHandle)
        {
            int code = ZkfpPlus.ZKFPM_CloseDevice(devHandle);

            devHandle = IntPtr.Zero;
            return((ErrorCode)code);
        }
示例#3
0
        /// <summary>
        /// 清空内存中所有指纹模板
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <returns></returns>
        public static ErrorCode DBClear(IntPtr dbHandle)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            return((ErrorCode)ZkfpPlus.ZKFPM_ClearDBCache(dbHandle));
        }
示例#4
0
        /// <summary>
        /// 从内存中删除一枚登记模板
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <param name="fid">指纹 ID(1:N 识别成功返回指纹 ID)</param>
        /// <returns></returns>
        public static ErrorCode DBDel(IntPtr dbHandle, int fid)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            return((ErrorCode)ZkfpPlus.ZKFPM_DelRegTemplateFromDBCache(dbHandle, (uint)fid));
        }
示例#5
0
        /// <summary>
        /// 添加一枚登记模板到内存
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <param name="fid">指纹 ID(1:N 识别成功返回指纹 ID)</param>
        /// <param name="regTemp">登记模板</param>
        /// <returns></returns>
        public static ErrorCode DBAdd(IntPtr dbHandle, int fid, byte[] regTemp)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            IntPtr intPtr = Marshal.AllocHGlobal(regTemp.Length);

            Marshal.Copy(regTemp, 0, intPtr, regTemp.Length);
            int result = ZkfpPlus.ZKFPM_AddRegTemplateToDBCache(dbHandle, (uint)fid, intPtr, (uint)regTemp.Length);

            Marshal.FreeHGlobal(intPtr);
            return((ErrorCode)result);
        }
示例#6
0
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="devHandle">设备句柄</param>
        /// <param name="code">参数代码(见附录说明)</param>
        /// <param name="paramValue">参数值</param>
        /// <returns></returns>
        public static ErrorCode GetParameters(IntPtr devHandle, ParamCode code, byte[] paramValue)
        {
            if (IntPtr.Zero == devHandle)
            {
                return(ErrorCode.InvalidHandle);
            }
            int    size   = paramValue.Length;
            IntPtr intPtr = Marshal.AllocHGlobal(size);
            int    num    = ZkfpPlus.ZKFPM_GetParameters(devHandle, (int)code, intPtr, ref size);

            if (num == (int)ErrorCode.OK)
            {
                Marshal.Copy(intPtr, paramValue, 0, size);
            }
            Marshal.FreeHGlobal(intPtr);
            return((ErrorCode)num);
        }
示例#7
0
        /// <summary>
        /// 采集指纹图像
        /// </summary>
        /// <param name="devHandle">设备句柄</param>
        /// <param name="imgbuf">返回图像(数组大小为 imageWidth*imageHeight)</param>
        /// <returns></returns>
        public static ErrorCode AcquireFingerprintImage(IntPtr devHandle, byte[] imgbuf)
        {
            if (IntPtr.Zero == devHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            IntPtr intPtr = Marshal.AllocHGlobal(imgbuf.Length);
            int    num    = ZkfpPlus.ZKFPM_AcquireFingerprintImage(devHandle, intPtr, (uint)imgbuf.Length);

            if (num == (int)ErrorCode.OK)
            {
                Marshal.Copy(intPtr, imgbuf, 0, imgbuf.Length);
            }
            Marshal.FreeHGlobal(intPtr);
            return((ErrorCode)num);
        }
示例#8
0
        /// <summary>
        /// 从 BMP 或者 JPG 文件提取模板
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <param name="FileName">文件全路径</param>
        /// <param name="DPI">图像 DPI</param>
        /// <param name="template">返回指纹模板(建议预分配 2048Bytes)</param>
        /// <param name="size">[in]template 数组长度, [out] 实际返回指纹模板长度</param>
        /// <returns></returns>
        public static ErrorCode ExtractFromImage(IntPtr dbHandle, string FileName, int DPI, byte[] template, ref int size)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return(ErrorCode.NotInit);
            }

            IntPtr intPtr = Marshal.AllocHGlobal(template.Length);
            int    num    = ZkfpPlus.ZKFPM_ExtractFromImage(dbHandle, FileName, DPI, intPtr, ref size);

            if (num == (int)ErrorCode.OK)
            {
                Marshal.Copy(intPtr, template, 0, size);
            }
            Marshal.FreeHGlobal(intPtr);
            return((ErrorCode)num);
        }
示例#9
0
        /// <summary>
        /// 设置参数
        /// </summary>
        /// <param name="devHandle">设备句柄</param>
        /// <param name="code">参数代码(见附录说明)</param>
        /// <param name="pramValue">参数值</param>
        /// <returns></returns>
        public static ErrorCode SetParameters(IntPtr devHandle, ParamCode code, byte[] pramValue)
        {
            if (devHandle == IntPtr.Zero)
            {
                return(ErrorCode.InvalidHandle);
            }
            if (pramValue == null)
            {
                return(ErrorCode.InvalidParam);
            }

            IntPtr intPtr = Marshal.AllocHGlobal(pramValue.Length);

            Marshal.Copy(pramValue, 0, intPtr, pramValue.Length);
            int result = ZkfpPlus.ZKFPM_SetParameters(devHandle, (int)code, intPtr, pramValue.Length);

            Marshal.FreeHGlobal(intPtr);
            return((ErrorCode)result);
        }
示例#10
0
        /// <summary>
        /// 1:1 比对两枚指纹
        /// </summary>
        /// <param name="dbHandle">算法操作句柄</param>
        /// <param name="temp1">比对模板 1</param>
        /// <param name="temp2">比对模板 2</param>
        /// <returns>>=0 表示比对分数,其他失败(见错误代码说明)</returns>
        public static int DBMatch(IntPtr dbHandle, byte[] temp1, byte[] temp2)
        {
            if (IntPtr.Zero == dbHandle)
            {
                return((int)ErrorCode.InvalidHandle);
            }

            IntPtr intPtr = Marshal.AllocHGlobal(temp1.Length);

            Marshal.Copy(temp1, 0, intPtr, temp1.Length);
            IntPtr intPtr2 = Marshal.AllocHGlobal(temp2.Length);

            Marshal.Copy(temp2, 0, intPtr2, temp2.Length);
            int result = ZkfpPlus.ZKFPM_MatchFinger(dbHandle, intPtr, (uint)temp1.Length, intPtr2, (uint)temp2.Length);

            Marshal.FreeHGlobal(intPtr);
            Marshal.FreeHGlobal(intPtr2);
            return(result);
        }
示例#11
0
        /// <summary>
        /// 采集指纹
        /// </summary>
        /// <param name="devHandle">设备句柄</param>
        /// <param name="imgBuffer">返回图像(数组大小为 imageWidth*imageHeight)</param>
        /// <param name="template">返回指纹模板(建议预分配 2048Bytes)</param>
        /// <returns></returns>
        public static ErrorCode AcquireFingerprint(IntPtr devHandle, byte[] imgBuffer, byte[] template)
        {
            if (IntPtr.Zero == devHandle)
            {
                return(ErrorCode.InvalidHandle);
            }

            int    size    = template.Length;
            IntPtr intPtr  = Marshal.AllocHGlobal(imgBuffer.Length);
            IntPtr intPtr2 = Marshal.AllocHGlobal(size);
            int    num     = ZkfpPlus.ZKFPM_AcquireFingerprint(devHandle, intPtr, (uint)imgBuffer.Length, intPtr2, ref size);

            if (num == (int)ErrorCode.OK)
            {
                Marshal.Copy(intPtr, imgBuffer, 0, imgBuffer.Length);
                Marshal.Copy(intPtr2, template, 0, size);
            }
            Marshal.FreeHGlobal(intPtr);
            Marshal.FreeHGlobal(intPtr2);
            return((ErrorCode)num);
        }
示例#12
0
 /// <summary>
 /// 初始化算法库
 /// </summary>
 /// <returns>算法操作句柄</returns>
 public static IntPtr DBInit()
 {
     return(ZkfpPlus.ZKFPM_CreateDBCache());
 }
示例#13
0
 /// <summary>
 /// 连接设备
 /// </summary>
 /// <param name="index">设备索引(0~n,n 为设备数-1)</param>
 /// <returns>返回设备句柄</returns>
 public static IntPtr OpenDevice(int index)
 {
     return(ZkfpPlus.ZKFPM_OpenDevice(index));
 }
示例#14
0
 /// <summary>
 /// 获取连接设备数
 /// </summary>
 /// <returns>返回设备数</returns>
 public static int GetDeviceCount()
 {
     return(ZkfpPlus.ZKFPM_GetDeviceCount());
 }
示例#15
0
 /// <summary>
 /// 释放算法库
 /// </summary>
 /// <param name="dbHandle">算法操作句柄</param>
 /// <returns></returns>
 public static ErrorCode DBFree(IntPtr dbHandle)
 {
     return((ErrorCode)ZkfpPlus.ZKFPM_ClearDBCache(dbHandle));
 }
示例#16
0
 /// <summary>
 /// 初始化库
 /// </summary>
 /// <returns>0 成功,其他失败(见错误代码说明)</returns>
 public static ErrorCode Init()
 {
     return((ErrorCode)ZkfpPlus.ZKFPM_Init());
 }
示例#17
0
 /// <summary>
 /// 释放库资源
 /// </summary>
 /// <returns>0 成功,其他失败(见错误代码说明)</returns>
 public static ErrorCode Terminate()
 {
     return((ErrorCode)ZkfpPlus.ZKFPM_Terminate());
 }