Page 1 of 1

Lector Biométrico?

PostPosted: 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?

PostPosted: Sat Jul 15, 2023 4:38 pm
by Antonio Linares

Re: Lector Biométrico?

PostPosted: 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 :cry:

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?

PostPosted: 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?

PostPosted: 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?

PostPosted: 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?

PostPosted: 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?

PostPosted: Mon Jul 17, 2023 4:44 pm
by Armando
Carlos:

Muchas gracias, con eso puedo empezar a tejer.

Un abrazo