Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 27-02-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.895
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Algunas consideraciones...


1) Los procedimientos definidos, colócalos dentro de la parte privada.
Código Delphi [-]
   ...

    dbgrd1: TDBGrid;
    mmoLOG: TMemo;
    lbl1: TLabel;
  private

    procedure FormCreate(Sender: TObject);
    procedure LeerHuella(Sender: Tobject);

    procedure AttTransactionProc(ASender: TObject; EnrollNumber: Integer; IsInValid: Integer;
                                 AttState: Integer; VerifyMethod: Integer;
                                 Year: Integer; Month: Integer; Day: Integer;
                                 Hour: Integer; Minute: Integer;
                                 Second: Integer);
    procedure GeneralEventProc(ASender: TObject; const DataStr: WideString);
  public


2) Define un par más para ver otros eventos:
Código Delphi [-]
    procedure AttTransactionProc(ASender: TObject; EnrollNumber: Integer; IsInValid: Integer;
                                 AttState: Integer; VerifyMethod: Integer;
                                 Year: Integer; Month: Integer; Day: Integer;
                                 Hour: Integer; Minute: Integer;
                                 Second: Integer);
    procedure GeneralEventProc(ASender: TObject; const DataStr: WideString);


3) Añade la implementación con el Log.
Código Delphi [-]
procedure TForm1.GeneralEventProc(ASender: TObject; const DataStr: WideString);
begin
  Log('TForm1.GeneralEventProc');
  Log('  - DataString: ' + DataStr);
end;

procedure TForm1.AttTransactionProc(ASender: TObject; EnrollNumber, IsInValid,
  AttState, VerifyMethod, Year, Month, Day, Hour, Minute, Second: Integer);
begin
  Log('TForm1.AttTransactionProc');
  Log('  - EnrollNumber: ' + IntToStr(EnrollNumber));
  Log('  - IsInValid: ' + IntToStr(IsInValid));
  Log('  - AttState: ' + IntToStr(AttState));
  Log('  - VerifyMethod: ' + IntToStr(VerifyMethod));
  Log('  - Year: ' + IntToStr(Year));
  Log('  - Month: ' + IntToStr(Month));
  Log('  - Day: ' + IntToStr(Day));
  Log('  - Hour: ' + IntToStr(Hour));
  Log('  - Minute: ' + IntToStr(Minute));
  Log('  - Second: ' + IntToStr(Second));
end;


4) Y asignalos todos en la creación del componente:
Código Delphi [-]
...

  ZK1 := TCZKEM.Create(nil);
  ZK1.OnConnected := OnConnect;
  ZK1.OnFinger := LeerHuella;
  ZK1.OnDisConnected := OnDisconnect;
  ZK1.OnAttTransaction := AttTransactionProc;
  ZK1.OnGeneralEvent := GeneralEventProc;


Por último, estaría bien que nos pusieras la salida del Log, cuando ejecutas y cuando pones el dedo en el lector.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #22  
Antiguo 27-02-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo hasta aquí lo veo bien.
Crear el componente, le assignas los eventos OnFinger y OnConnect (el OnDisconnect no).
Y luego haces el Connect_Net.


A partir de ahí si llegas al punto en que está conectado (suponiendo que no haya que llamar algún método más para inicializar) deberían empezar a llegarte eventos cuando pongas el dedo.
Cada vez que se ejecute el evento en el dispositivo (OnFinger), a tu programa llegará el control al procedimniento LeerHuella.



¿Es correcto?
Correcto, hasta aqui funciona
voy a probar lo que has mencionado posteriormente y les aviso
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #23  
Antiguo 27-02-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Algunas consideraciones...


1) Los procedimientos definidos, colócalos dentro de la parte privada.
Código Delphi [-]
   ...

    dbgrd1: TDBGrid;
    mmoLOG: TMemo;
    lbl1: TLabel;
  private

    procedure FormCreate(Sender: TObject);
    procedure LeerHuella(Sender: Tobject);

    procedure AttTransactionProc(ASender: TObject; EnrollNumber: Integer; IsInValid: Integer;
                                 AttState: Integer; VerifyMethod: Integer;
                                 Year: Integer; Month: Integer; Day: Integer;
                                 Hour: Integer; Minute: Integer;
                                 Second: Integer);
    procedure GeneralEventProc(ASender: TObject; const DataStr: WideString);
  public


2) Define un par más para ver otros eventos:
Código Delphi [-]
    procedure AttTransactionProc(ASender: TObject; EnrollNumber: Integer; IsInValid: Integer;
                                 AttState: Integer; VerifyMethod: Integer;
                                 Year: Integer; Month: Integer; Day: Integer;
                                 Hour: Integer; Minute: Integer;
                                 Second: Integer);
    procedure GeneralEventProc(ASender: TObject; const DataStr: WideString);


3) Añade la implementación con el Log.
Código Delphi [-]
procedure TForm1.GeneralEventProc(ASender: TObject; const DataStr: WideString);
begin
  Log('TForm1.GeneralEventProc');
  Log('  - DataString: ' + DataStr);
end;

procedure TForm1.AttTransactionProc(ASender: TObject; EnrollNumber, IsInValid,
  AttState, VerifyMethod, Year, Month, Day, Hour, Minute, Second: Integer);
begin
  Log('TForm1.AttTransactionProc');
  Log('  - EnrollNumber: ' + IntToStr(EnrollNumber));
  Log('  - IsInValid: ' + IntToStr(IsInValid));
  Log('  - AttState: ' + IntToStr(AttState));
  Log('  - VerifyMethod: ' + IntToStr(VerifyMethod));
  Log('  - Year: ' + IntToStr(Year));
  Log('  - Month: ' + IntToStr(Month));
  Log('  - Day: ' + IntToStr(Day));
  Log('  - Hour: ' + IntToStr(Hour));
  Log('  - Minute: ' + IntToStr(Minute));
  Log('  - Second: ' + IntToStr(Second));
end;


4) Y asignalos todos en la creación del componente:
Código Delphi [-]
...

  ZK1 := TCZKEM.Create(nil);
  ZK1.OnConnected := OnConnect;
  ZK1.OnFinger := LeerHuella;
  ZK1.OnDisConnected := OnDisconnect;
  ZK1.OnAttTransaction := AttTransactionProc;
  ZK1.OnGeneralEvent := GeneralEventProc;


Por último, estaría bien que nos pusieras la salida del Log, cuando ejecutas y cuando pones el dedo en el lector.
la idea es que yo declaro un procedimiento para cuando se dispare un evento, eso lo tengo clarisimo, pero me esta saliendo un error cuando defino el procedimiento

Código Delphi [-]
[dcc32 Error] FrmMain_f.pas(22): E2065 Unsatisfied forward or external declaration: 'TForm1.AttTransactionProc'
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #24  
Antiguo 27-02-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
el error fue mi culpa, no estaba definiendo el procedimiento dentro del form

cuando coloco la huella, solo se activa el evento leerhuella, los demas no

tengo entendido, segun lo que vi en el manual que en la instruccion

Código Delphi [-]
    if not ZK1.RegEvent(1, 65535) then  //65535   2 = Solo OnFinger

se van a disparar todos los eventos relacionados con el lector


pero el evento OnttTransaction no se dispara
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #25  
Antiguo 27-02-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
otro tema estoy usando el Evento OnAttTransactionEx porque dentro de sus parametros devuelve el codigo del usuario en string

Código Delphi [-]
    procedure AttTransactionExProc(ASender: TObject; EnrollNumber: WideString; IsInValid: Integer;
                                 AttState: Integer; VerifyMethod: Integer;
                                 Year: Integer; Month: Integer; Day: Integer;
                                 Hour: Integer; Minute: Integer;
                                 Second: Integer; WorkCode: Integer);

y al momento de compilar me sale este mensaje

Código Delphi [-]
[dcc32 Error] FrmMain_f.pas(55): E2009 Incompatible types: 'Parameter lists differ'

la unica diferencia con el OnAttTransaction es que el parametro EnrollNumber es string y tiene un campo adicional al final WorkCode Long (Integer)

no entiendo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #26  
Antiguo 27-02-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
Esto lo estoy tratando de documentar y dar la mejor explicacion en caso alguien mas tenga ese problema

Era mi error

fui a la libreria zkemkeeper_TLB

esta es su definicion

Código Delphi [-]
    procedure OnAttTransactionEx(const EnrollNumber: WideString; IsInValid: Integer; 
                                 AttState: Integer; VerifyMethod: Integer; Year: Integer; 
                                 Month: Integer; Day: Integer; Hour: Integer; Minute: Integer; 
                                 Second: Integer; WorkCode: Integer); dispid 17;

al momento de yo declarar el procedimiento no le coloque la palabra CONST

entonces la definicion de los procedimientos debe ser exactamente igual a como esta en la libreria

con esto ya funciona

colooco el dedo y funciona EUREKA

pero no todo es felicidad, por algun motivo los eventos se disparan 2 veces
y me sale este mensaje (displayados en el log)

Cita:
6.2.5.50
Conectado...
Huella Detectada
Huella Detectada
TForm1.AttTransactionExProc
- EnrollNumber:
ð*º
ð*º
ð*º
ð*º
ð*º
ð*º
- IsInValid: -1
- AttState: 0
- VerifyMethod: 13
- Year: 1917
- Month: -70
- Day: 13
- Hour: -16
- Minute: -83
- Second: -70
TForm1.AttTransactionExProc
- EnrollNumber: 123
- IsInValid: 0
- AttState: 0
- VerifyMethod: 0
- Year: 2019
- Month: 2
- Day: 27
- Hour: 10
- Minute: 26
- Second: 10

si se dan cuenta en el primer grupo de mensaje los valores salen distorcionados, no corresponde la informacion a lo que se supone debe salir (como aparece en el segundo bloque)


coloque zk1.Pullmode := 1

y cuando hago eso no pasa por el evento LeerHuella

antes de concluir y de solicitar mas ayuda quiero agradecer a todos los que me han dado una mano en este tema, de verdad que lo hacen desinteresadamente, mas personas como uds. en el mundo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #27  
Antiguo 27-02-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.895
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
con esto ya funciona
colooco el dedo y funciona EUREKA


Cita:
Empezado por oscarac Ver Mensaje

si se dan cuenta en el primer grupo de mensaje los valores salen distorcionados, no corresponde la informacion a lo que se supone debe salir (como aparece en el segundo bloque)
Es posible que te devuelva diferentes lecturas. Me llama la atención el parámetro IsInvlid.

Es posible que devuelva lecturas hasta que hay una correcta o que realice un número fijo (como si fueran reintentos) hasta un número fijo o una lectura correcta.
Haz diferentes pruebas y verás en patrón. De todas formas en la documentación debe explicar el funcionamiento.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 27-02-2019 a las 17:37:15.
Responder Con Cita
  #28  
Antiguo 02-03-2019
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 1.870
Poder: 14
oscarac Va por buen camino
Esta pasando algo raro
en la computadora donde hice las pruebas funciona perfectamente, pero cuando instalo el programa en otra computadora (registrando el zkemkeeper.dll)
colocando la misma ip, no logra conectar el lector

he instalado el xe7 para depurar y no logro conectar el lector, he instalado como package el dll compila bien pero no conecta

aparece en los mensajes de event Log

Module Unload: wshtcpip.dll. Process Reloj
Module Unload: Nlaapi.dll
Module Unload Napinsp.dll
...
...

asi sucesivamente


me faltara instalar algo?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #29  
Antiguo 04-03-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.895
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
¿No hay ningun log de lo que está pasando?
Revisa que las librerías sean las correctas. Revisa 32/64 bits de las librerías.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Interceptar DBEdit ecfisa OOP 3 01-07-2008 11:57:34
Interceptar post.... brandolin Varios 1 29-08-2007 15:23:47
Interceptar impresión Walcasar Impresión 0 19-10-2006 15:22:20
Interceptar DBNavigator dape Conexión con bases de datos 1 09-04-2005 18:36:16
interceptar error edfz Conexión con bases de datos 2 08-04-2004 01:12:28


La franja horaria es GMT +2. Ahora son las 18:37:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi