2017-10-13 3 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 

ここで捕捉するためのコード形式負荷

ここでは、キャプチャするためのコードである。ここで検証するためのコードです。ボタンをクリックすると、ボタンをクリックするサブのサブ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

の保存に使用されるコードリットルです:後で同じFPList変数を使用することができます

'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 

そして今、他のコードを。 New List(Of 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ドキュメントへのアクセスを持っていない、テスト

AppDataクラスは次のようになります。データ、または機器に適用されます。つまり、私たちはここであなたを助けようとしている盲目です。おそらくこれにはいくつかの問題があり、トラブルシューティングとデバッグができるようにする必要があります。

+0

お返事ありがとうございます。私はあなたのコードを試しましたが、この行にエラーが発生しました。(rdr As MySqlDataReader = cmd.ExecuteReader())rdrが宣言されていないため、保護レベルのためにアクセスできない可能性があります。手伝ってくれますか? –

+0

その行はrdrを宣言します。あなたはコードが正しくコピーされていると確信していますか? –

+0

はい、コピーして貼り付けました。 –

関連する問題