Page 1 of 1
Lector Biométrico?
Posted:
Sat Jul 15, 2023 5:31 am
by Armando
Saludos al foro:
En una reciente aplicación el cliente quiere que el usuario se identifique en el LOGIN por su huella digital.
Acaso el lector biométrico funciona igual que un lector de código de barras?
Alguien que me tire una hebra, o mejor, si tiene un pequeño ejemplo, será muy agradecido.
Saludos
Re: Lector Biométrico?
Posted:
Sat Jul 15, 2023 4:38 pm
by Antonio Linares
Re: Lector Biométrico?
Posted:
Sat Jul 15, 2023 4:58 pm
by csincuir
Hola Armando, en su momento yo utilice este lector biometrico:
https://secugen.com/products/hamster-iv/Pero de la noche de la mañana, por las actualizaciones de Windows, dejó de funcionar
Pero aca te envío unos ejemplo para que puedas darte una idea de como funcionaba el proceso:
Leer la huella: BioCapture()
Enrolar una huella: BioEnroll()
Verificar una huella: VerificaHuella()
- Code: Select all Expand view
///-------------------------------------------------------------------
FUNCTION BioCapture()
Local oNBioBSP, nDeviceId, cEnroll, lSecuGen
lSecuGen := .t.
TRY
oNBioBSP := CreateObject("SecuBSPMxCOM.APIInterface")
CATCH
lSecuGen := .f.
END
IF !lSecuGen
MsgAlert( "No esta instalado el lector de huella","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
IF lSecuGen
oNBioBSP:EnumerateDevice()
nDeviceId := oNBioBSP:DeviceNum() //Numero de Dispositivos
If Empty( nDeviceId )
MsgAlert("No esta conectado el Lector Biometrico en su equipo...","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
nDeviceId := oNBioBSP:DeviceID(0)
oNBioBSP:OpenDevice( nDeviceId )
oNBioBSP:Capture()
cEnroll := ""
If oNBioBSP:ErrorCode == 0
cEnroll := oNBioBSP:FIRTextData()
EndIf
oNBioBSP:CloseDevice( nDeviceId )
oNBioBSP := NIL
Return( cEnroll )
End
Return( "" )
///-------------------------------------------------------------------
FUNCTION BioEnroll()
Local oNBioBSP, oDevice, nDeviceId, cEnroll, oExt, oMatch
Local oEnroll, oCapture, oExtra, oTemp, oVEr, lOk, hLib, lSecuGen
lOk := .T.
TRY
oNBioBSP:=CreateObject('MyDll.Suma')
cEnroll := AllTrim( oNBioBSP:Enroll() )
CATCH
lOk := .f.
END
IF !lOk
MsgAlert( "No esta instalado el lector de huella","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
Return( cEnroll )
lSecuGen := .f.
lOk := .T.
TRY
oNBioBSP := CreateObject("NBioBSPCOM.NBioBSP")
CATCH
lOk := .f.
END
If !lOk
lSecuGen := .t.
TRY
oNBioBSP := CreateObject("SecuBSPMxCOM.APIInterface")
CATCH
lSecuGen := .f.
END
IF !lSecuGen
MsgAlert( "No esta instalado el lector de huella","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
End
IF lSecuGen
oNBioBSP:EnumerateDevice()
nDeviceId := oNBioBSP:DeviceNum() //Numero de Dispositivos
If Empty( nDeviceId )
MsgAlert("No esta conectado el Lector Biometrico en su equipo...","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
nDeviceId := oNBioBSP:DeviceID(0)
oNBioBSP:OpenDevice( nDeviceId )
oNBioBSP:Enroll(NIL)
cEnroll := ""
If oNBioBSP:ErrorCode == 0
cEnroll := oNBioBSP:FIRTextData()
EndIf
oNBioBSP:CloseDevice( nDeviceId )
oNBioBSP := NIL
Return( cEnroll )
End
lOk := .T.
TRY
oDevice := oNBioBSP:Device()
CATCH
lOk := .f.
END
If !lOk
MsgAlert( "No esta instalado el lector de huella","Verifique por favor..." )
oNBioBSP := NIL
Return ""
End
oDevice:Enumerate()
nDeviceId := oDevice:EnumDeviceID( 0 )
oDevice:Open( nDeviceID )
oExt := oNBioBSP:Extraction()
cEnroll := ""
oExt:Enroll( cEnroll )
cEnroll := oExt:TextEncodeFIR()
oDevice:Close( nDeviceID )
oNBioBSP := 0
Return( cEnroll )
///-------------------------------------------------------------------
FUNCTION VerificaHuella(lVer,cUser,cHuella)
Local cEnroll1, cEnroll2, cSql, nRet, cUser
DEFAULT lVer := .f.
If lVer
If Empty(cUser)
MsgAlert( "No ingreso el ID del Usuario...","Verifique por favor..." )
Return ""
End
Else
cUser:=Space(40)
_MsgGet( " Verificando...","Usuario:",@cUser )
If Empty( cUser )
MsgAlert( "No ingreso el ID del Usuario...","Verifique por favor..." )
Return ""
End
End
cSql := "SELECT huellatxt FROM usuarios WHERE usuario='"+allTrim(cUser)+"'"
cEnroll1 := cHuella
If Empty( cEnroll1 )
IF lVer
MsgAlert( "El Usuario actual no tiene definida su Impresion Digital...","Verifique por favor..." )
Return .f.
End
MsgAlert( "El Usuario ingresado no tiene definida su Impresion Digital...","Verifique por favor..." )
Return ""
End
cEnroll2 := BioCapture()
If Empty( cEnroll2 )
If lVer
Return .f.
End
Return ""
End
nret := BioVerify( cEnroll1, cEnroll2 )
If nRet == 0
MsgAlert( "La Impresion Digital ingresada no Coincide con la del Usuario: "+cUser,"Verifique por favor..." )
If lVer
Return .f.
End
cUser := ""
End
If lVer
Return .t.
End
Return cUser
Saludos cordiales
Carlos.
Re: Lector Biométrico?
Posted:
Sat Jul 15, 2023 8:46 pm
by Armando
Antonio, gracias!
Carlos, gracias por el ejemplo.
La duda, suministran alguna DLL con el lector biométrico?
Saludos, y gracias nuevamente
Re: Lector Biométrico?
Posted:
Mon Jul 17, 2023 12:40 pm
by csincuir
Si Armando,
En la opción de solicitar descargas de software gratis de la web de la empresa que vende este biométrico, puedes descargar el SDK para Windows, y como dice el link, son gratis.
https://secugen.com/request-free-software/Saludos cordiales.
Carlos
Re: Lector Biométrico?
Posted:
Mon Jul 17, 2023 4:11 pm
by Armando
Carlos:
Muchísimas gracias, parece que veo la luz al final del túnel, solo una pregunta mas.
Aunque puedo intuirlo, solo quiero confirmar; en que tipo de campo almacenas la
huella cuando das de alta al usuario?
Saludos y disculpa tantas molestias
Re: Lector Biométrico?
Posted:
Mon Jul 17, 2023 4:41 pm
by csincuir
Armando,
Guardo la huella biometrica en un campo "text" de una tabla de MySQL:
- Code: Select all Expand view
CREATE TABLE `usuarios` (
`usuario` VARCHAR(40) NOT NULL DEFAULT '' ,
`supervisor` CHAR(1) NULL DEFAULT NULL ,
`nombre` VARCHAR(60) NOT NULL ,
`rol` VARCHAR(40) NOT NULL DEFAULT '' ,
`passw` VARCHAR(40) NOT NULL DEFAULT '' ,
`fechaloc` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`huellatxt` TEXT NOT NULL ,
`lectorbio` CHAR(1) NOT NULL DEFAULT 'N' ,
PRIMARY KEY (`usuario`)
);
Es el campo "huellatxt"
Ten en cuenta que el SDK trae ejemplos de Visual C++, C# y VB, con lo que logre obtener el codigo que ya te envié y funcionó correctamente un tiempo, pero, dejó de funcionar y no se porque, y ya no logré que funcionara de nuevo. Si detecta el Biometrico instalado pero ya no logré que volviera a presentar el diálogo de lectura biometrica
Saludos cordiales.
Carlos.
Re: Lector Biométrico?
Posted:
Mon Jul 17, 2023 4:44 pm
by Armando
Carlos:
Muchas gracias, con eso puedo empezar a tejer.
Un abrazo