保存并将指纹提取到数据库

时间:2016-02-04 18:01:47

标签: c# fingerprint

我正在使用数码角色U.are.U 5100指纹识别器。我面临的问题是,注册只会暂时保存。如何将其保存到数据库?

/// <summary>
/// Handler for when a fingerprint is captured.
/// </summary>
/// <param name="captureResult">contains info and data on the fingerprint capture</param>
private void OnCaptured(CaptureResult captureResult)
{
    try
    {
        // Check capture quality and throw an error if bad.
        if (!_sender.CheckCaptureResult(captureResult)) return;

        count++;

        DataResult<Fmd> resultConversion =  
        FeatureExtraction.CreateFmdFromFid(captureResult.Data, 
                                           Constants.Formats.Fmd.ANSI);

        SendMessage(Action.SendMessage, "A finger was captured.   
                    \r\nCount:  " + (count));

        if (resultConversion.ResultCode !=  
            Constants.ResultCode.DP_SUCCESS)
        {
            _sender.Reset = true;
            throw new Exception(resultConversion.ResultCode.ToString());
        }

        preenrollmentFmds.Add(resultConversion.Data);

        if (count >= 4)
        {
            DataResult<Fmd> resultEnrollment =  
            DPUruNet.Enrollment.CreateEnrollmentFmd(Constants.Formats.
                                                    Fmd.ANSI,  
                                                    preenrollmentFmds);

            if (resultEnrollment.ResultCode == 
                Constants.ResultCode.DP_SUCCESS)
            {
                SendMessage(Action.SendMessage, "An enrollment FMD was 
                            successfully created.");
                SendMessage(Action.SendMessage, "Place a finger on the 
                            reader.");
                preenrollmentFmds.Clear();
                count = 0;
                return;
            }
            else if (resultEnrollment.ResultCode == 
                     Constants.ResultCode.DP_ENROLLMENT_INVALID_SET)
            {
                SendMessage(Action.SendMessage, "Enrollment was 
                unsuccessful.  Please try again.");
                SendMessage(Action.SendMessage, "Place a finger on the  
                reader.");
                preenrollmentFmds.Clear();
                count = 0;
                return;
            }
        }

        SendMessage(Action.SendMessage, "Now place the same finger on the            
        reader.");
    }
    catch (Exception ex)
    {
           // Send error message, then close form
            SendMessage(Action.SendMessage, "Error:  " + ex.Message);                
    }  
}

1 个答案:

答案 0 :(得分:3)

我知道这是一个老线程。但我最近才弄清楚如何使用数字角色来做到这一点。

尝试使用

Fmd.SerializeXml(fmd);

它返回字符串,因此您可以将其直接保存为数据库中的字符串并按原样检索。

然后解码时尝试使用

Fmd.DeserializeXml(*retrieved string from database*);

它会返回fmd,因此您现在可以将其与当前输入进行比较。