winform指纹登录项目

m1311858780 2013-11-04 03:24:44
winform怎么和中控的指纹仪连接? 怎么获取指纹仪的编码? 现在问题就是连接不上指纹仪。
...全文
436 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
m1311858780 2013-11-06
  • 打赏
  • 举报
回复
现在解决了登记问题 眼下的问题就是程序不走OnCapTuer事件,如果不走这个事件我就取不到模板,这样就没法和数据库数据向对比, 如果取到了模板, 那是什么格式的数据呢? 我怎么和数据库里的数据向比较呢? 我做实验的时候取到过指纹采集器里的数据,就是数字,字母,符号组成的字符串,可是每次取出来的都不相同,这样我怎么比较啊?
hxm20003 2013-11-06
  • 打赏
  • 举报
回复
指纹系统需要指纹读取机提供接口吧
laidon 2013-11-06
  • 打赏
  • 举报
回复
laidon 2013-11-06
  • 打赏
  • 举报
回复

工作流程说明:
指纹仪初始化进入工作状态后,调用 BeginEnroll 处于登记指纹状态,调用 BeginCapture 处于指纹验证状态 。
控件的工作方式是基于事件驱动,触发事件的顺序参考上面示意图。
指纹登记一般需要按同一手指 1-4 次,然后由识别系统综合处理得到一个指纹登记模板,按压登记指纹次数
由控件属性 EnrollCount 设置,达到设定次数后会触发 OnEnroll 和 OnEnrollToFile 事件。
指纹验证时,按压手指后会触发 OnCapture 和 OnCaptureToFile 事件,此时可以调用 VerFinger 或者
Identification InFPCacheDB 进行 1:1 或者 1:N 比对。
需要注意每次按压手指都会触发 OnFeatureInfo 事件 , 如果按压手指的指纹模板质量不合格 , 则本次取像无效 ,
需要重新按压手指
m1311858780 2013-11-06
  • 打赏
  • 举报
回复
现在明白了,虽然两个字符串不一样,但是结果是一样的。 指纹项目已经做完。 谢谢你们, 真心感谢, 现在结贴!
dav0912 2013-11-06
  • 打赏
  • 举报
回复
哎,还是别做这个了,对你来说有难度哦。
m1311858780 2013-11-06
  • 打赏
  • 举报
回复
一个手指怎么得出来不一样的字符串 ? 这样我怎么比较呢? "mspZFlFZn8FlgRoyQWyBHytPdYEUmVFvQQmgLHCBDhc/hcEHn8x8gT6VRngBCZ4tRsEI07B9wQWSNHaBCY61a0EZeLhlAShaRFnBCzkxTQEKVKlKgQhZPY5BB6XKfYEpqc1/gUe4yXqBGpqxiQEXlqVMAQlhJnTPGggRW15kbncJEhgbHwgSVltgancMFRodIjEIEWRkaXEBCBAVFxsHE1BSVVxldQwXHSImNDYIEWZpbHIBCA8TFhwHE09PUFRcbgsZICUpNDcJEGltcwIJDxEVBxNLS0tOU14JGyMoLTM2Cg9udQIIDQ4HEkZGRUZIRzEjJiktMAsOdwMHCggRQkJBQDowKCotMAAA/wgRQEA9OTMtKCwvMwAA/wkRPTg0LyomLTQ7AAD/ChA2MS0nIio4AAD/Cw8tKSQdHQAA/wwOJSAYGPDvGLSpUBQhPjbH6dYX5Wco0MPBI19FiLpmUlt8SynC4AItyhIHwX3M1EHp9E0tc8qNAEORhJUrsyCTYU8We1GF/UDvWfehbZDgorN6CjEihvQU9nmU5L9/ERKzaS5TRytDejIcgXtHqB/2Wd1DW6DvLc5ubUau1p8DblXE0AgoHYzGjl1OFmHx9pmKefxCZAD35HHyV0e/ciNlmoyGaaO6pFHaxhQrLXiMtOx26Bl8ETclJjDxJZe5fTFV4ZlHoKJfp/V4BbbuuLITT2vGAU++XwYpa1niFFgHSsdLW0vSZcQUMSBvO2YpAh2YViywaPDXFf0G1AFfHOJ3GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg=" "mspZFl9xmghJgQkEikdBDga6XwEKnz1iQRqZnDNBB1sdOAEEYTVOQRozNVRBGymMYQEHE5FrAQiLn1fBDhmzbEEIoCV6QQuZIC6BCdgkZUEEk6lxgQcnqF8BCJEoU4EaditNwSZauEABCzokNcEMVZc1gQljizjBCWsHVkEHfSdGARfjGzfBB9+/ZcFUkjNUAUQmJnSsFAQPT09QVFtsCRkhIyQkBA9LS0tOU1wKGyMnJyYED1FTVltjdAwYHSAhIgQPREVFR0hGMCMmKissBA9UV1tgaXcNFxsdICIED0BBQkE/OS4nKS0vMAQPW11fZG13CxUZHB0gBQ4/Pz04MismKjA1BA9dYWRpcAEJEhcaHCEGDj04My0nIykzPQQPYGRnbHIBCRAVGBofBw01LyokICQ4BQ5maW1zAgkPFBYZCAsrJyMfBQ5pa290AwkOERMWAAD/BQ1tcHJ2BAgMEBMAAP8GDXR1dwQHCg4RAAD/Bwx2dwMHCw8AAP8Y8N0YtKlQFCEkNus7T7APE1niAOIvXHWfaT1qqmBfUihR/Ts7NZ/B9Ymt1q0rekm4NX0+dP0158GPKygNEtAU9vrZPrtYqxOId6pVnQY/6zDn5aBonxmFKAvtPJGPvbqL3PhsrNhnHz+E7/1iIU35VJCfCKHWJ8YtV9cXSaNZXQ254/BDgfgILdbTjbt62vhkjJrN7trmicarmuZhIyybvA90uzSknf5oRvclyPM82n8ORJk5vqRYuecP7Co9mmGLbf8+BxFBEvt3GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGA=="
o0冰凉0o 2013-11-05
  • 打赏
  • 举报
回复
端口和波特率 对不对? 找厂家提供接口或者协议
zp_any 2013-11-05
  • 打赏
  • 举报
回复
调用指纹的接口就好了
laidon 2013-11-05
  • 打赏
  • 举报
回复
  /// <summary>
        /// 初始化刷新登记指纹
        /// </summary>
        private void AnewRegiFMark()
        {
            //是否正登记指纹
            if (axEngX.IsRegister == true)
            {
                //取消当前的指纹登记状态,即由BeginEnroll开始的操作可由此函数中断
                axEngX.CancelEnroll();
            }
            //开始登记指纹,登记结束后发生OnEnroll事件
            axEngX.BeginEnroll();
        }

        /// <summary>
        /// 获取信息
        /// </summary>
        private void GetStudInfo()
        {
           
        }

        #endregion

        #region << 指纹认证事件 >>

        /// <summary>
        /// 取到指纹验证模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void axEngX_OnCapture(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureEvent e)
        {
            String sFMarkInfo = null;
            //成功登记,用aTemplate属性可取得指纹特征模版
            if (e.actionResult == true)
            {
                //现场采集的指纹验证特征模版
                Object oVerTemp = e.aTemplate;
                //设定ZKFinger低速指纹1:1比对的识别阀值分数(1-100),默认为10,值越大,误判率越低同时拒绝率变大
                axEngX.OneToOneThreshold = 20;
                //设定指纹识别系统比对识别阀值分数(1-100),默认为10,值越大,误判率越低同时拒绝率变大
                axEngX.Threshold = 20;

                //是否进行指纹特征模版学习更新
                bool bAdoLearn = true;
                //登记模版RegTemp是否改变
                bool bFChanged = false;

                //遍历所有指纹,找到相匹配的
                bool bVer = false;
                for (int i = 0; i < datStudInfo.Rows.Count; i++)
                {
                    DataRow dr = datStudInfo.Rows[i];
                    for (int j = 15; j < 25; j++)
                    {
                        Object oAthTemp = dr[j];
                        //比对两枚指纹的特征模版是否匹配,两枚指纹匹配时返回True,不匹配时返回False
                        bVer = axEngX.VerFinger(ref oRegTemp, oVerTemp, bAdoLearn, ref bFChanged);
                        //匹配成功
                        if (bVer == true)
                        {
                            sFMarkInfo = "认证状态:认证成功!";
                            lblFMarkInfo.Text = sFMarkInfo;
                            sInfoID = dr["StudID"].ToString();
                            this.DialogResult = DialogResult.OK;
                        }
                    }//for (int j = 15; j < 25; j++)
                }//for (int i = 0; i < datStudInfo.Rows.Count; i++)      
                if (bVer == false)
                {
                    if (DialogResult.OK == MessageBox.Show("认证失败!是否继续", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))
                    {
                        //初始化刷新登记指纹
                        AnewRegiFMark();
                    }
                    else
                    {
                        this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                    }
                }
            }
        }

        /// <summary>
        /// 取到指纹验证模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void axEngX_OnCaptureToFile(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureToFileEvent e)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 用户登记指纹结束
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void axEngX_OnEnroll(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnEnrollEvent e)
        {
            //成功登记,用aTemplate属性可取得指纹特征模版
            if (e.actionResult == true)
            {
                //指纹登记特征模版
                oRegTemp = e.aTemplate;
                pFMark = (Byte[])oRegTemp;
                //BASE64格式模板字符串
                String sDest = null;
                //模板转换为BASE64格式的模板字符串
                axEngX.EncodeTemplate(oRegTemp, ref sDest);
                //添加指纹登记模板到指纹识别高速缓冲空间
                axEngX.AddRegTemplateFileToFPCacheDB(iFPCHandle, iFPID, (String)oRegTemp);
            }
            //初始化刷新登记指纹
            AnewRegiFMark();
        }
laidon 2013-11-05
  • 打赏
  • 举报
回复
#endregion

        public frm_AthFgerMark()
        {
            InitializeComponent();
        }

        #region << 初始化窗体 >>

        private void frm_LogFgerMark_FormClosed(object sender, FormClosedEventArgs e)
        {
            //释放指纹识别高速缓冲空间,重复调用会报错
            axEngX.FreeFPCacheDB(iFPCHandle);
            //释放由方法InitEngine初始化的指纹设备    
            axEngX.EndEngine();
        }

        private void frm_LogFgerMark_Load(object sender, EventArgs e)
        {
            //初始化指纹识别系统
            InitFMarkAuth();
            //初始化刷新登记指纹
            AnewRegiFMark();
            //获取考生信息
            GetStudInfo();
        }

        /// <summary>
        /// 初始化指纹识别系统
        /// 0-初始化成功
        /// 1-指纹识别驱动程序加载失败
        /// 2-没有连接指纹识别仪
        /// 3-属性SensorIndex指定的指纹仪不存在
        /// 注:多个设备的情况下,在调用InitEngine前设置此SensorIndex属性
        /// </summary>
        private void InitFMarkAuth()
        {
            //创建高速缓冲空间
            iFPCHandle = axEngX.CreateFPCacheDB();
            //连接多个指纹采集器时,选择指纹头的序号,从0开始;小于零时指纹采集器不工作。
            //axEngX.SensorIndex = 0;
            //初始化指纹识别系统,SensorCount、SensorSN、EngineValid、ImageHeight、ImageWidth等属性需在该函数被调用后才能返回正确结果
            int iInit = axEngX.InitEngine();
            //判断初始化
            if (iInit == 1)
            {
                MessageBox.Show("指纹识别驱动程序加载失败!", sMageTitl);
                return;
            }
            if (iInit == 2)
            {
                MessageBox.Show("没有连接指纹识别仪!", sMageTitl);
                return;
            }
            if (iInit == 3)
            {
                MessageBox.Show("属性SensorIndex指定的指纹仪不存在!", sMageTitl);
                return;
            }
            //初始化成功
            if (iInit == 0)
            {
                //指纹识别系统算法引擎版本号,"9"
                String sEngiVer = axEngX.FPEngineVersion;
                //按压登记指纹次数,3
                int iEnllCount = axEngX.EnrollCount;
                //选择指纹头的序号
                int SensIndex = axEngX.SensorIndex;

                //当前连接到计算机的指纹采集器的个数
                int iSensCount = axEngX.SensorCount;
                //指纹采集器的硬件序列号
                string sSensSN = axEngX.SensorSN;
                //指纹识别系统是否正常工作
                bool bEngiVald = axEngX.EngineValid;
                if (bEngiVald == false)
                {
                    MessageBox.Show("指纹识别系统不能正常工作!", sMageTitl);
                    return;
                }
                //指纹图像的高度,356
                int iFImageH = axEngX.ImageHeight;
                //指纹图像的宽度,328
                int iFImageW = axEngX.ImageWidth;
            }
        }
laidon 2013-11-05
  • 打赏
  • 举报
回复
/// <summary>
        /// 对话框标题
        /// </summary>
        private String sMageTitl = "指纹认证系统";

        /// <summary>
        /// 创建高速缓冲空间的句柄
        /// </summary>
        private int iFPCHandle;

        /// <summary>
        /// 要添加登记模板的标识
        /// </summary>
        private int iFPID;

        /// <summary>
        /// 指纹登记特征模版
        /// </summary>
        private Object oRegTemp;

        /// <summary>
        /// 指纹特征模板
        /// </summary>
        public Byte[] pFMark;

        /// <summary>
        /// 考生信息数据表
        /// </summary>
        public DataTable datStudInfo = new DataTable();

        /// <summary>
        /// 修改信息的ID
        /// </summary>
        public String sInfoID = null; 
m1311858780 2013-11-05
  • 打赏
  • 举报
回复
怎么才能让程序走录入指纹认证事件(OnCapture) 现在初始化做完了, 怎么让程序走指纹认证事件,并且获取到值。
m1311858780 2013-11-05
  • 打赏
  • 举报
回复
#region << 指纹认证事件 >> /// <summary> /// 取到指纹验证模板 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> (不走这个事件怎么办) private void axEngX_OnCapture_1(object sender, IZKFPEngXEvents_OnCaptureEvent e) { String sFMarkInfo = null; //成功登记,用aTemplate属性可取得指纹特征模版
cheng2005 2013-11-04
  • 打赏
  • 举报
回复
找厂家的售后支持啊,你来论坛问有什么用。
m1311858780 2013-11-04
  • 打赏
  • 举报
回复
有安装驱动和测试软件, 我都按照步骤做了, 可是指纹仪还是没有任何的反应, 如果指纹仪在测试软件中能亮,可以显示指纹的图片 那就好办了, 可是现在它不亮啊。 不知道是不是中控指纹仪不能再win7上使用, 我的系统是win7
nanbaifeiliao 2013-11-04
  • 打赏
  • 举报
回复
找到接口说明,然后调用
公西雒 2013-11-04
  • 打赏
  • 举报
回复
直接联系指纹仪厂家技术部门。
_小黑_ 2013-11-04
  • 打赏
  • 举报
回复
需要 找到 接口 之后 在按照 接口 中 给的 方法 调用
IEEE_China 2013-11-04
  • 打赏
  • 举报
回复
接口呢? 指纹仪没接口说明啊?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧