Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#项目中使用ZK4500指纹扫描仪SDK_C#_C++_Sdk_Fingerprint_Biometrics - Fatal编程技术网

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

如何在C#项目中使用ZK4500指纹扫描仪SDK,c#,c++,sdk,fingerprint,biometrics,C#,C++,Sdk,Fingerprint,Biometrics,我正在用C#开发一个项目,我想使用用户的指纹登录/验证该项目 我买了一台ZK4500指纹扫描器,并从微软获得了它的SDK。SDK是C++的。 那么,如何将此SDK与我的C#项目集成以执行所需的功能呢?您需要添加对将出现在COM类型库下的ZKFPEngXControl的引用。之后,您可以使用ZKFPEngX类来执行任何需要的操作 using ZKFPEngXControl; 然后 ZKFPEngX fp = new ZKFPEngX(); fp.SensorIndex = 0; fp.InitE

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

我买了一台ZK4500指纹扫描器,并从微软获得了它的SDK。SDK是C++的。
那么,如何将此SDK与我的C#项目集成以执行所需的功能呢?

您需要添加对将出现在COM类型库下的ZKFPEngXControl的引用。之后,您可以使用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();

您可以在
oneroll(bool ActionResult,object ATemplate)
事件下存储指纹。执行
begineroll()
后将调用此事件

//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;
调用事件时验证指纹(将手指放在扫描仪上):


我真的很高兴得到你的考虑,你的回答是有帮助的,在我看来一切都在正确的轨道上。但请您帮助我注册使用此设备的用户,然后根据注册的指纹授权用户指纹。SDK必须附带支持文档。仔细阅读,了解您可以使用的所有函数和方法。如果你找不到pdf文档文件,那么你可以要求它。是的,它有文档文件,但对我没有帮助。现在我想以字符串形式获取图像并将其存储到数据库中,如
zkfpeng.GetTemplateAsStringEx(“10”)
,但它返回
null
,然后我将比较两个模板,一个来自数据库,一个来自现场生物识别设备,用于身份验证,如
(zkfpeng.VerFingerFromStr>)(参考bTemp、sTemp、false、参考REG变更)
。现在我完全是在黑暗中涂鸦,请指导我是否适合你。谢谢。据我所知,要匹配两个指纹,你需要第三方SDK,比如下面链接中的那个,zk4500的SDK对此无能为力,除非你愿意开发自己的匹配软件链接:请不要将关键字标记为粗体。您应该使用标记来强调关键字。这篇文章正是您想要的:
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
    }
}