huella digital parte 1
Publicado por Miguel Figueroa (7 intervenciones) el 02/10/2008 10:35:07
Introducción
Cuando en trabajo me pidieron buscarle solución al chequeo de horarios y control de asistencia del personal para evitar que un empleado marque la entrada de otro tome como mejor opción implementar un sistema que utilizara un lector de Huellas digitales para marar la hora de entrada y salida de los empleados; pero, como alguno de ustedes se abra dado cuenta que la mayoría de estos Lectores vienen si el SDK para Programarlos por lo que me vi en la obligación de encontrar uno que fuera gratuito o bien programarlo desde cero (Situación en la que no me quería ver debido a la fecha de entrega ;) ), entre tanto buscar encontré una librería Gratis para Desarrollar sobre Varios Lectores Entre ellos El Microsoft FingerPrint Reader que es el que yo utilice, publicada por GRIAULE llamado GrFinger FREE 4.1 disponible para descargar
Nota:
Debido a lo Extenso del Código solo Detallaré las Dos (2) Clases Principales: DBCass (Donde Buscamos y Comparamos el Resultado que arroja el lector y Comparamos, Con los Registros en la Base de Datos y la Clase "Util.vb" que es la que control del Lector de Huellas.....
Ojo!!! Debes Instalar GrFinger_Free_Installer.exe. y Crear La Base de Datos en SQL Server 2005 para Poder Correr La aplicacion
Comencemos... Veamos El código:
El Código de la Clase: DBClass.vb
Imports System.Data.SqlClient
Imports System.Runtime.InteropServices
Public Class TTemplate
Public tpt(GrFingerXLib.GRConstants.GR_MAX_SIZE_TEMPLATE) As Byte
Public Size As Long
End Class
Public Structure TTemplates
Public ID As Integer
Public Cedula As Integer
Public template As TTemplate
End Structure
Public Class DBClass
Dim connection As New SqlConnection
Public Function OpenDB() As Boolean
Try
connection = New SqlClient.SqlConnection(My.Settings.AccesoConnectionString)
Return True
Catch
Return False
End Try
End Function
Public Sub closeDB()
connection.Close()
End Sub
Public Sub clearEmpleadoDB(ByVal Cedula As Integer)
Dim sqlCMD As SqlCommand = New SqlCommand("DELETE FROM Biometrica where Cedula=" & _
Cedula, connection)
sqlCMD.Connection.Open()
sqlCMD.ExecuteNonQuery()
sqlCMD.Connection.Close()
End Sub
Public Function AddTemplate(ByRef template As TTemplate, _
ByVal Cedula As Integer, ByVal contDed As Integer) As Long
Dim da As New SqlDataAdapter("select RowID, Cedula, Template from Biometrica", _
connection)
da.InsertCommand = New SqlCommand( _
"INSERT INTO Biometrica (cedula, template) Values(" & _
Cedula & ", @template)", connection)
da.InsertCommand.CommandType = CommandType.Text
da.InsertCommand.Parameters.Add("@template", SqlDbType.VarBinary, _
template.Size, "template")
connection.Open()
Dim TBio As DataSet = New DataSet
da.Fill(TBio, "Biometrica")
Dim newRow As DataRow = TBio.Tables("Biometrica").NewRow()
newRow("Cedula") = Cedula
newRow("template") = template.tpt
TBio.Tables("Biometrica").Rows.Add(newRow)
' ContHuellas += 1
Select Case contDed
Case 1
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
Case 2
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
Case 3
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
End Select
Return newRow("ID")
End Function
Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As SqlRowUpdatedEventArgs)
End Sub
Public Function getTemplates() As TTemplates()
Dim ds As New DataSet
Dim da As New SqlDataAdapter( _
"select RowID, Cedula, Template from Biometrica order by Cedula Desc", _
connection)
Dim ttpts As TTemplates()
Dim i As Integer
da.Fill(ds)
Dim tpts As DataRowCollection = ds.Tables(0).Rows
ReDim ttpts(tpts.Count)
If tpts.Count = 0 Then Return ttpts
For i = 1 To tpts.Count - 1
ttpts(i).template = New TTemplate
ttpts(i).ID = tpts.Item(i).Item("RowID")
ttpts(i).Cedula = tpts.Item(i).Item("Cedula")
ttpts(i).template.tpt = tpts.Item(i).Item("template")
ttpts(i).template.Size = ttpts(i).template.tpt.Length
Next
Return ttpts
End Function
Cuando en trabajo me pidieron buscarle solución al chequeo de horarios y control de asistencia del personal para evitar que un empleado marque la entrada de otro tome como mejor opción implementar un sistema que utilizara un lector de Huellas digitales para marar la hora de entrada y salida de los empleados; pero, como alguno de ustedes se abra dado cuenta que la mayoría de estos Lectores vienen si el SDK para Programarlos por lo que me vi en la obligación de encontrar uno que fuera gratuito o bien programarlo desde cero (Situación en la que no me quería ver debido a la fecha de entrega ;) ), entre tanto buscar encontré una librería Gratis para Desarrollar sobre Varios Lectores Entre ellos El Microsoft FingerPrint Reader que es el que yo utilice, publicada por GRIAULE llamado GrFinger FREE 4.1 disponible para descargar
Nota:
Debido a lo Extenso del Código solo Detallaré las Dos (2) Clases Principales: DBCass (Donde Buscamos y Comparamos el Resultado que arroja el lector y Comparamos, Con los Registros en la Base de Datos y la Clase "Util.vb" que es la que control del Lector de Huellas.....
Ojo!!! Debes Instalar GrFinger_Free_Installer.exe. y Crear La Base de Datos en SQL Server 2005 para Poder Correr La aplicacion
Comencemos... Veamos El código:
El Código de la Clase: DBClass.vb
Imports System.Data.SqlClient
Imports System.Runtime.InteropServices
Public Class TTemplate
Public tpt(GrFingerXLib.GRConstants.GR_MAX_SIZE_TEMPLATE) As Byte
Public Size As Long
End Class
Public Structure TTemplates
Public ID As Integer
Public Cedula As Integer
Public template As TTemplate
End Structure
Public Class DBClass
Dim connection As New SqlConnection
Public Function OpenDB() As Boolean
Try
connection = New SqlClient.SqlConnection(My.Settings.AccesoConnectionString)
Return True
Catch
Return False
End Try
End Function
Public Sub closeDB()
connection.Close()
End Sub
Public Sub clearEmpleadoDB(ByVal Cedula As Integer)
Dim sqlCMD As SqlCommand = New SqlCommand("DELETE FROM Biometrica where Cedula=" & _
Cedula, connection)
sqlCMD.Connection.Open()
sqlCMD.ExecuteNonQuery()
sqlCMD.Connection.Close()
End Sub
Public Function AddTemplate(ByRef template As TTemplate, _
ByVal Cedula As Integer, ByVal contDed As Integer) As Long
Dim da As New SqlDataAdapter("select RowID, Cedula, Template from Biometrica", _
connection)
da.InsertCommand = New SqlCommand( _
"INSERT INTO Biometrica (cedula, template) Values(" & _
Cedula & ", @template)", connection)
da.InsertCommand.CommandType = CommandType.Text
da.InsertCommand.Parameters.Add("@template", SqlDbType.VarBinary, _
template.Size, "template")
connection.Open()
Dim TBio As DataSet = New DataSet
da.Fill(TBio, "Biometrica")
Dim newRow As DataRow = TBio.Tables("Biometrica").NewRow()
newRow("Cedula") = Cedula
newRow("template") = template.tpt
TBio.Tables("Biometrica").Rows.Add(newRow)
' ContHuellas += 1
Select Case contDed
Case 1
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
Case 2
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
Case 3
If Principal.ActiveForm.Name = "Wizard" Then
Wizard.PBDedos.Image = My.Resources.Indice
Else
AgregarHuellas.PBDedos.Image = My.Resources.Indice
End If
da.Update(TBio, "Biometrica")
connection.Close()
End Select
Return newRow("ID")
End Function
Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As SqlRowUpdatedEventArgs)
End Sub
Public Function getTemplates() As TTemplates()
Dim ds As New DataSet
Dim da As New SqlDataAdapter( _
"select RowID, Cedula, Template from Biometrica order by Cedula Desc", _
connection)
Dim ttpts As TTemplates()
Dim i As Integer
da.Fill(ds)
Dim tpts As DataRowCollection = ds.Tables(0).Rows
ReDim ttpts(tpts.Count)
If tpts.Count = 0 Then Return ttpts
For i = 1 To tpts.Count - 1
ttpts(i).template = New TTemplate
ttpts(i).ID = tpts.Item(i).Item("RowID")
ttpts(i).Cedula = tpts.Item(i).Item("Cedula")
ttpts(i).template.tpt = tpts.Item(i).Item("template")
ttpts(i).template.Size = ttpts(i).template.tpt.Length
Next
Return ttpts
End Function
Valora esta pregunta


0