Jump to content
Fivewin Brasil

leitura da impressao digital


MAMP2

Recommended Posts

Tenho esta para o leitor Hamster, da Nitgen.

(2) Leitor Biométrico Hamster Dx - Nitgen - Fingkey | Mercado Livre

 

/******************************************************************************
* Nome do PRG: caddigit.prg                                                   *
* Função.....: Modulo para captura e cadastro da digital (Hamster / Nitgen)   *
* Autor......: Ariston Santos (Pode contar código de colaboradores)           *
* Site.......: www.arsoft-ap.com.br                                           *
* Contato....: ariston.ap@bol.com.br - MSN: arsoft-ap@hotmail.com             *
******************************************************************************/

#include "FiveWin.ch"

STATIC cTemplate, oDbrw, aDedo, vDedo

FUNCTION ObterBiometria(nQue)
   LOCAL aDedos := {}, l_Err:=.F., cSql
   DEFAULT nQue := 1
   IF nQue = 1 // Armeiros
      cSql := "SELECT codigo,"+;    // 01
                    " idarmeiro,"+; // 02
                    " digital"      // 03
      cSql += " FROM sgarma_bio_armei WHERE idarmeiro > 0"
   ELSEIF nQue = 2 // Armeiros
      cSql := "SELECT codigo,"+;    // 01
                    " idmilitar,"+; // 02
                    " digital"      // 03
      cSql += " FROM sgarma_bio_milit WHERE idmilitar > 0"
   ELSE
      SysRefresh() ; MsgAlert("Opção não programada.", "Atenção")
      RETURN ""
   ENDIF
   aDedos := SQLArray(cSql, @l_Err, .F.)
   if l_Err ; RETURN "" ; endif
   IF LEN(aDedos) == 0
      SysRefresh() ; MsgAlert("Nenhuma digital de armeiro foi cadastrada ainda. Cadastre as digitais para habilitar o login protegido e biometria.", "Atenção")
      RETURN ""
   ENDIF
RETURN TestaDedo(aDedos)

FUNCTION TestaDedo(aDedos)
   LOCAL nId := "", lOerr := .T.
   CursorWait()
   TRY
      objNBioBSP := CreateObject('NBioBSPCOM.NBioBSP')
      objDevice := objNBioBSP:Device
      objExtraction := objNBioBSP:Extraction
      objMatching := objNBioBSP:Matching
      objExtraction:WindowStyle := 0
      objDevice:Open(255)
      objExtraction:DefaultTimeout := 15000 // Aguardar 15 segundos // SECS("02:00:00") * 1000 // Duas horas convertidas para milliseconds
      objExtraction:Capture()
      if objExtraction:ErrorCode <> 0
         IF objExtraction:ErrorCode = 261 // Leitor não conectado
            SysRefresh() ; MsgAlert("Falha na comunicação com o leitor biométrico. Verifique se está conectado.", ValToPrg(objExtraction:ErrorCode)+": "+objExtraction:ErrorDescription)
         ELSEIF objExtraction:ErrorCode = 516 // Tempo esgotado
            SysRefresh() ; MsgAlert("Falha na captura ou Tempo esgotado: 15 segundos.", ValToPrg(objExtraction:ErrorCode)+": "+objExtraction:ErrorDescription)
         ELSE
            SysRefresh() ; MsgAlert("Ocorreu este erro: : "+objExtraction:ErrorDescription,"Aviso")
         ENDIF
         lOerr := .F. // Não mostrar oErr description
         BREAK
      endif
      cTempl := objExtraction:TextEncodeFIR()
      IF LEN(aDedos) > 0
         FOR nDedo := 1 TO LEN(aDedos)
            objMatching:VerifyMatch(cTempl, aDedos[nDedo,3])
            if objMatching:ErrorCode <> 0
               CursorArrow()
               SysRefresh() ; MsgAlert("Ocorreu este erro: : "+ValToPrg(objMatching:ErrorCode)+": "+objMatching:ErrorDescription,"Aviso")
               lOerr := .F. // Não mostrar oErr description
               EXIT
            else
               if objMatching:MatchingResult = 1
                  nId := ALLTRIM(STR(aDedos[nDedo,2])) // Atribuido a nOper
                  EXIT
               endif
            endif
         NEXT
      ENDIF
      objDevice:Close(255)
   CATCH oErr
      CursorArrow()
      if lOerr
         SysRefresh() ; MsgAlert( "Não foi possível conectar-se ao leitor biométrioco."+CRLF+"Err: "+oErr:Description, "Aviso")
      endif
   END
   CursorArrow()
RETURN( nId )

FUNCTION LerBiometria()
   LOCAL digital:= "", lOerr := .T.
   CursorWait()
   TRY
      objNBioBSP := CreateObject('NBioBSPCOM.NBioBSP')
      objDevice := objNBioBSP:Device
      objExtraction := objNBioBSP:Extraction
      objMatching := objNBioBSP:Matching
      objExtraction:WindowStyle := 0
      objDevice:Open(255)
      objExtraction:DefaultTimeout := 15000 // Aguardar 15 segundos // SECS("02:00:00") * 1000 // Duas horas convertidas para milliseconds
      objExtraction:Capture()
      if objExtraction:ErrorCode <> 0
         IF objExtraction:ErrorCode = 261 // Leitor não conectado
            SysRefresh() ; MsgAlert("Falha na comunicação com o leitor biométrico. Verifique se está conectado.", ValToPrg(objExtraction:ErrorCode)+": "+objExtraction:ErrorDescription)
         ELSEIF objExtraction:ErrorCode = 516 // Tempo esgotado
            SysRefresh() ; MsgAlert("Falha na captura ou Tempo esgotado: 15 segundos.", ValToPrg(objExtraction:ErrorCode)+": "+objExtraction:ErrorDescription)
         ELSE
            SysRefresh() ; MsgAlert("Ocorreu este erro: "+objExtraction:ErrorDescription, "Aviso")
         ENDIF
         lOerr := .F. // Não mostrar oErr description
         BREAK
      endif
      digital:= objExtraction:TextEncodeFIR()
      objDevice:Close(255)
      CursorArrow()
   CATCH oErr
      CursorArrow()
      if lOerr
         SysRefresh() ; MsgAlert( "Não foi possível conectar-se ao leitor biométrioco."+CRLF+"Err: "+oErr:Description, "Aviso")
      endif
   END
   CursorArrow()
RETURN( digital )

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...