FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Lector Biométrico?
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Lector Biométrico?
Posted: Sat Jul 15, 2023 05:31 AM

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

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Lector Biométrico?
Posted: Sat Jul 15, 2023 04:38 PM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Lector Biométrico?
Posted: Sat Jul 15, 2023 04:58 PM
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 (fw): Select all Collapse
///-------------------------------------------------------------------
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.
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Lector Biométrico?
Posted: Sat Jul 15, 2023 08:46 PM

Antonio, gracias!

Carlos, gracias por el ejemplo.

La duda, suministran alguna DLL con el lector biométrico?

Saludos, y gracias nuevamente

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Lector Biométrico?
Posted: Mon Jul 17, 2023 12:40 PM
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Lector Biométrico?
Posted: Mon Jul 17, 2023 04:11 PM

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

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Lector Biométrico?
Posted: Mon Jul 17, 2023 04:41 PM
Armando,
Guardo la huella biometrica en un campo "text" de una tabla de MySQL:
Code (fw): Select all Collapse
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.
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Lector Biométrico?
Posted: Mon Jul 17, 2023 04:44 PM

Carlos:

Muchas gracias, con eso puedo empezar a tejer.

Un abrazo

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero

Continue the discussion