2017-10-13 173 views
0

任何時候我掃描指紋進行驗證,即使我已經將該指紋登記到數據庫中,我也會收到消息「指紋未驗證」。這裏是捕捉代碼加載窗體時我總是得到指紋未驗證

下面是代碼捕獲加載窗體時

Private Sub Me_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load 

    Init() 
    StartCapture() 

    Dim conn As New MySqlConnection 
    Dim cmd As New MySqlCommand 
    Dim sql As String 
    conn.ConnectionString = "**** " 
    conn.Open() 
    sql = ("SELECT * FROM new_case_file") 
    cmd.Connection = conn 
    cmd.CommandText = sql 
    Dim rdr As MySqlDataReader = cmd.ExecuteReader() 

    While (rdr.Read()) 
     Dim MemStream As IO.MemoryStream 
     Dim fpBytes As Byte() 

     fpBytes = rdr("FingerPrint") 
     MemStream = New IO.MemoryStream(fpBytes) 

     Dim templa8 As DPFP.Template = New DPFP.Template() 
     templa8.DeSerialize(MemStream) 
     Dim serializedTemplate As Byte() = MemStream.ToArray 

     Dim tmpObj As New AppData 
     Dim FPList As List(Of AppData) = New List(Of AppData) 
     'tmpObj.No = rdr("No").ToString() 
     'tmpObj.Template = templa8 
     'FPList.Add(tmpObj) 
    End While 
    conn.Close() 

End Sub 

這裏是驗證碼。當我點擊按鈕時,它應該驗證,因爲我在button click子中調用了sub verifyControl_Commplete

Private Sub verifyControl_OnComplete(ByVal Control As Object, ByVal FeatureSet As DPFP.FeatureSet, ByRef EventHandlerStatus As 
DPFP.Gui.EventHandlerStatus) Handles verifyControl.OnComplete 


    Dim printFound As Boolean = False 
    'Dim printFound As Boolean = True 
    'Dim printFound As Boolean = False 
    Dim VerifiedFPData = New AppData 
    Dim FPList As List(Of AppData) = New List(Of AppData) 
    Try 

     For Each FPData As AppData In FPList 
      Dim tmplateData As New DPFP.Template 
      'tmplateData = FPData.Template 
      Dim compareTo As New DPFP.FeatureSet 
      compareTo = FeatureSet 

      Dim ver As New DPFP.Verification.Verification() 
      Dim res As New DPFP.Verification.Verification.Result() 

      If Not tmplateData Is Nothing Then 
       ver.Verify(FeatureSet, tmplateData, res) 

       If res.Verified Then 
        EventHandlerStatus = DPFP.Gui.EventHandlerStatus.Success 
        printFound = True 
        VerifiedFPData = FPData 

        Exit For 

       End If 
      End If 

     Next 

    Catch ex As Exception 
     MessageBox.Show("Error") 
    End Try 


    If printFound Then 
     MsgBox("Verified") 
    Else 
     EventHandlerStatus = DPFP.Gui.EventHandlerStatus.Failure 

     MsgBox("Not Verified") 
    End If 

End Sub 


Private Sub btnverifyfp_Click(sender As Object, e As EventArgs) Handles btnverifyfp.Click 
    verifyControl_OnComplete(Nothing, Nothing, Nothing) 
End Sub 

這是在拯救指紋

Dim fingerprintData As MemoryStream = New MemoryStream 
Enroller.Template.Serialize(fingerprintData) 
Dim serializedTemplate As Byte() = fingerprintData.ToArray() 
Dim bytes() As Byte = serializedTemplate 
+1

請格式化您的代碼,它不容易遵循。此外,尋求調試幫助的問題也不在話下。 – Codexer

回答

0

試試這個使用的代碼L:

'THIS NEEDS TO BE AT THE CLASS-LEVEL, AS A MEMBER 
Private FPList As New List(Of AppData) 

Private Sub Me_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) 
                  Handles MyBase.Load  
    Init() 
    StartCapture() 

    Dim sql As String = "SELECT * FROM new_case_file" 
    Using conn As New MySqlConnection("**** "), _ 
      cmd As New MySqlCommand(sql, conn) 

     conn.Open() 
     Using rdr As MySqlDataReader = cmd.ExecuteReader() 
      FPList.Clear() 
      While (rdr.Read()) 
       Dim tmpObj As New AppData 
       tmpObj.No = rdr("No").ToString() 

       Dim fpBytes As Byte() = rdr("FingerPrint") 
       Using MemStream As New IO.MemoryStream(fpBytes) 

        Dim templa8 As New DPFP.Template() 
        templa8.DeSerialize(MemStream) 
       End Using 
       tmpObj.Template = templa8 

       FPList.Add(tmpObj) 
      End While 
      rdr.Close() 
     End Using 
    End Using 
End Sub 

而現在其他代碼以後可以用同樣的FPList變量。如果你發現自己在其他地方寫作New List(Of AppData),你做錯了什麼。

AppData類應該是這個樣子:

Public Class AppData 
    Public Property No As String 
    Public Property Template As DFFP.Template 
End Class 

最後,驗證碼:

Private Sub verifyControl_OnComplete(ByVal Control As Object, ByVal FeatureSet As DPFP.FeatureSet, 
            ByRef EventHandlerStatus As DPFP.Gui.EventHandlerStatus) 
    Handles verifyControl.OnComplete 

    Try 

     Dim ver As New DPFP.Verification.Verification() 
     Dim res As New DPFP.Verification.Verification.Result() 

     For Each FPData As AppData In FPList 
      If FPData.Template Is Nothing Then Continue 

      ver.Verify(FeatureSet, FPData.Template, res) 
      If res.Verified Then 
       EventHandlerStatus = DPFP.Gui.EventHandlerStatus.Success 
       MsgBox("Verified") 
       Return 
      End If 

     Next FPDAta 

    Catch ex As Exception 
     MessageBox.Show("Error") 
    End Try 

    EventHandlerStatus = DPFP.Gui.EventHandlerStatus.Failure 
    MsgBox("Not Verified") 
End Sub 

一次...我們沒有訪問您的API文檔,測試數據或設備。這意味着我們盲目試圖在這裏幫助你。這可能有些問題,您必須能夠排除故障並進行調試。

+0

你好,謝謝你的回覆。 l試過你的代碼,它在這一行上給出了一個錯誤使用(rdr As MySqlDataReader = cmd.ExecuteReader())rdr沒有聲明,由於它的保護級別,它可能不可訪問。你能幫我嗎? –

+0

該行聲明瞭rdr。你確信代碼複製正確 –

+0

是的,複製並粘貼。 –