如何在C#项目中使用ZK4500指纹扫描仪SDK

How to use ZK4500 Fingerprint Scanner SDK in C# Project

本文关键字:ZK4500 指纹 扫描仪 SDK 项目      更新时间:2023-10-16

我正在用 C# 开发一个项目,我想使用用户的指纹登录/验证用户。

我买了一台 ZK4500 指纹扫描仪,并从 http://www.zkteco.com/product/ZK4500_238.html 那里获得了它的 SDK。SDK 处于C++状态。

那么,如何将此 SDK 与我的 C# 项目集成以执行所需的功能呢?

您需要添加对 ZKFPEngXControl 的引用,该引用将显示在 COM 类型库下。之后,您可以使用 ZKFPEngX 类来执行任何您需要的操作。

using ZKFPEngXControl;

然后

ZKFPEngX fp = new ZKFPEngX();
fp.SensorIndex = 0;
fp.InitEngine(); // Do validation as well as it returns an integer (0 for success, else error code 1-3)
//subscribe to event for getting when user places his/her finger
fp.OnImageReceived += new IZKFPEngXEvents_OnImageReceivedEventHandler(fp_OnImageReceived);

您可以编写自己的方法fp_OnImageReceived来处理事件。 例如,您可以在该方法中编写此内容;

object imgdata = new object();
bool b = fp.GetFingerImage(ref imgdata);

其中 imgdata 是一个字节数组。您还可以在 ZKFPEngX 中使用其他方法来实现您的目标。请记住在表单关闭时关闭引擎。

fp.EndEngine();

您可以在 OnEnroll(bool ActionResult, object ATemplate) Event 下存储指纹。执行BeginEnroll()时将调用此事件。

//Add an event handler on OnEnroll Event
ZKFPEngX x = new ZKFPEngX();
x.OnEnroll += X_OnEnroll; 

private void X_OnEnroll(bool ActionResult, object ATemplate)
{
    if (ActionResult)
    {
        if (x.LastQuality >= 80) //to ensure the fingerprint quality
        {
            string regTemplate = x.GetTemplateAsStringEx("9");
            File.WriteAllText(Application.StartupPath + "\fingerprint.txt", regTemplate);
        }
        else
        {
            //Quality is too low
        }
    }
    else
    {
        //Register Failed
    }
}

您可以尝试在事件OnCapture(bool ActionResult, object ATemplate)下验证指纹。将手指放在扫描仪上时将调用此事件。

在 OnCapture 事件上添加事件处理程序:

x.OnCapture += X_OnCapture;

在调用事件时验证指纹(将手指放在扫描仪上(:

private void X_OnCapture(bool ActionResult, object ATemplate)
{
    if (ActionResult) //if fingerprint is captured successfully
    {
        bool ARegFeatureChanged = true;
        string regTemplate = File.ReadAllText(Application.StartupPath + "\fingerprint.txt");
        string verTemplate = x.GetTemplateAsString();
        bool result = x.VerFingerFromStr(regTemplate , verTemplate, false, ARegFeatureChanged);
        if (result)
        {
            //matched
        }
        else
        {
            //not matched
        }
    } 
    else
    {
        //failed to capture a valid fingerprint
    }
}