Ir al contenido



Foto

[RESUELTO] Sobre lector biometrico


  • Por favor identifícate para responder
37 respuestas en este tema

#1 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 28 febrero 2011 - 09:15

hola amigos, estoy investigando sobre la utilizacion de una biometrica, lo que quiero es poder acceder a los datos registrados en esta, alguien conoce algun componente?, he buscado informacion y se habla de algunos sdks pero todos son de pago... espero me hechen una mano.
saludos. 
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 28 febrero 2011 - 09:18

Deberas decirnos que tipo de aparato y modelo estaras necesitando. ;)
  • 0

#3 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 28 febrero 2011 - 09:26

pues es un modelo...
Imagen Enviada
unicamente dice b3, se puede ver mas info en la paagina: http://usa.zksoftwar...roduct_e_b3.asp
en esta pagina hay un sdk pero es de pago, tambien hay un programa que hace lo que quiero el : Attendance Management , este  me extrae la info de la biometrica, lo que quiero es programar algo por mi cuenta...
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 28 febrero 2011 - 09:29

Pues estas de suerte mi estimado, de esa compania es con la cual trabajo, y uso su libreria ZK, en la red la puedes encontrar, asi que cuando tengas esa SDK vaya disparando ;)
  • 0

#5 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 28 febrero 2011 - 09:30

me hechas una mano, donde puedo descargarla, segun vi era de pago, o no es asi?
  • 0

#6 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 08:59

hola, he logrado conectarme à la biometrica, puedo obtener varios datos... como ser la id de usuario y nombre, ademas de otros datos, pero se me esta haciendo dificil encontrar una funcion que me devuelva la entrada y salida de los usuarios basado en un rango de fechas desde hasta... entre las funciones que podria funcionar encontre esta GetAllSLogData
¿prodra funcionar esta, como podria adaptarla?
saludos.

  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 01 marzo 2011 - 09:21

Hola, primeramente debes cargar los datos en memoria usando la funcion ReadAllGLogData y luego obtener los datos a traves de la funcion SSR_GetGeneralLogData (dependiendo si el equipo es un modelo SSR sino usamos la misma funcion sin el prefijo SSR_), un ejemplo seria donde ZK es el componente (normalmente yo lo creo en tiempo de ejecucion):



delphi
  1. if ZK.ReadAllGLogData(DevId) then
  2.     while ZK.SSR_GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  3.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  4.     begin
  5.       ShortDateFormat := 'yyyy/mm/dd';
  6.       ShortTimeFormat := 'hh:mm';
  7.       TimeSeparator := ':';
  8.       DateSeparator := '/';
  9.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  10.       s := format('%.*d',[7,StrToInt(dwEnrollNumber)])+'>'+FormatDateTime('yyyy/mm/dd', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  11.       Data.Add(s);
  12.     end;



Aqui Data es un StringList que posteriormente lo grabo en un archivo de texto, el resultado seria del siguiente formato, pero lo puedes cambiar a tu gusto o al formato que trabaja tu sistema:

cod. empleado>yyyy/mm/dd:hh:mm

0003945>2010/11/27:14:13

Cualquier duda pues aqui estoy.

Saludos.


  • 0

#8 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 09:38

Hola, primeramente debes cargar los datos en memoria usando la funcion ReadAllGLogData y luego obtener los datos a traves de la funcion SSR_GetGeneralLogData (dependiendo si el equipo es un modelo SSR sino usamos la misma funcion sin el prefijo SSR_), un ejemplo seria donde ZK es el componente (normalmente yo lo creo en tiempo de ejecucion):



delphi
  1. if ZK.ReadAllGLogData(DevId) then
  2.     while ZK.SSR_GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  3.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  4.     begin
  5.       ShortDateFormat := 'yyyy/mm/dd';
  6.       ShortTimeFormat := 'hh:mm';
  7.       TimeSeparator := ':';
  8.       DateSeparator := '/';
  9.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  10.       s := format('%.*d',[7,StrToInt(dwEnrollNumber)])+'>'+FormatDateTime('yyyy/mm/dd', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  11.       Data.Add(s);
  12.     end;



Aqui Data es un StringList que posteriormente lo grabo en un archivo de texto, el resultado seria del siguiente formato, pero lo puedes cambiar a tu gusto o al formato que trabaja tu sistema:

cod. empleado>yyyy/mm/dd:hh:mm

0003945>2010/11/27:14:13

Cualquier duda pues aqui estoy.

Saludos.


gracias amigo, lo probare , luego les comento como me fue.
  • 0

#9 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 09:45

hola, me da el siguiente error :
Imagen Enviada

este es el codigo que tengo... ¿que estoy haciendo mal?



delphi
  1. procedure...
  2. var
  3.   dwEnrollNumber, dwMachinePrivilege ,dwVerifyMode,dwInOutMode,dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode: integer;
  4.   fecha:TDateTime;
  5.   s:string;
  6. begin
  7.     if CZKEM1.ReadAllGLogData(devPort) then
  8.     while CZKEM1.GetGeneralLogData(devPort,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  9.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  10.     begin
  11.       ShortDateFormat := 'mm/dd/yyyy';
  12.       ShortTimeFormat := 'hh:mm';
  13.       TimeSeparator := ':';
  14.       DateSeparator := '/';
  15.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  16.       s := format('%.*d',[7,Inttostr(dwEnrollNumber)])+'>'+FormatDateTime('mm/dd/yyyy', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  17.       Data.Add(s);
  18.     end;
  19.  
  20. end;



  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 01 marzo 2011 - 09:56

Vaya que es raro el asunto, mmm
  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 01 marzo 2011 - 10:22

Viendo bien el asunto quiero preguntarte lo siguiente: cuando haces la coneccion al equipo la varianle devport es el numero de puerto o el numero de equipo??: la coneccion deberia de hacerse de la siguiente manera:



delphi
  1. var
  2.   Connect: Boolean;
  3.   DevID: Integer;
  4.  
  5. procedure conectar(ip: string; puerto: integer; NumMaq: integer);
  6. begin
  7.   Connect := ZK.Connect_Net(ip,puerto);
  8.   DevID := NumMaq;
  9. end;
  10.  
  11. procedure TForm1.btnDownClick(Sender: TObject);
  12. begin
  13. Conectar(127.0.0.1, 4370, 1); //4370 es el puerto que se utiliza esos equipos
  14.  
  15. if connect then begin
  16.   if ZK.ReadAllGLogData(DevId) then
  17.     while ZK.SSR_GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  18.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  19.     begin
  20.       ShortDateFormat := 'yyyy/mm/dd';
  21.       ShortTimeFormat := 'hh:mm';
  22.       TimeSeparator := ':';
  23.       DateSeparator := '/';
  24.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  25.       s := format('%.*d',[7,StrToInt(dwEnrollNumber)])+'>'+FormatDateTime('yyyy/mm/dd', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  26.       Data.Add(s);
  27.     end; 
  28.   end;
  29. end;



Saludos.
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.648 mensajes
  • LocationMéxico

Escrito 01 marzo 2011 - 10:23

Hola

Prueba con esto



delphi
  1. format('%.*d',[7,dwEnrollNumber])



Salud OS


Edito, no vi bien el cast que haces, no hagas caso a este post. Sorry
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.648 mensajes
  • LocationMéxico

Escrito 01 marzo 2011 - 10:38

Hola

Leyendo nuevamente el mensaje, puedes mostrarnos que es lo que tienes en la variable dwEnrollNumber. Debes asegurate que no es nulo o con caracteres no válidos para un entero.

Salud OS
  • 0

#14 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 10:58

Viendo bien el asunto quiero preguntarte lo siguiente: cuando haces la coneccion al equipo la varianle devport es el numero de puerto o el numero de equipo??: la coneccion deberia de hacerse de la siguiente manera:



delphi
  1. var
  2.   Connect: Boolean;
  3.   DevID: Integer;
  4.  
  5. procedure conectar(ip: string; puerto: integer; NumMaq: integer);
  6. begin
  7.   Connect := ZK.Connect_Net(ip,puerto);
  8.   DevID := NumMaq;
  9. end;
  10.  
  11. procedure TForm1.btnDownClick(Sender: TObject);
  12. begin
  13. Conectar(127.0.0.1, 4370, 1); //4370 es el puerto que se utiliza esos equipos
  14.  
  15. if connect then begin
  16.   if ZK.ReadAllGLogData(DevId) then
  17.     while ZK.SSR_GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  18.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  19.     begin
  20.       ShortDateFormat := 'yyyy/mm/dd';
  21.       ShortTimeFormat := 'hh:mm';
  22.       TimeSeparator := ':';
  23.       DateSeparator := '/';
  24.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  25.       s := format('%.*d',[7,StrToInt(dwEnrollNumber)])+'>'+FormatDateTime('yyyy/mm/dd', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  26.       Data.Add(s);
  27.     end; 
  28.   end;
  29. end;



Saludos.

hola , para conectarme utilizo el siguiente codigo:


delphi
  1. procedure TRptEntSal.FormCreate(Sender: TObject);
  2. var  Inifile:TIniFile;
  3. begin
  4.     IniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Cfg.ini');
  5.     devIp := IniFile.readString('PARAMETROS','IP','');
  6.     devPort  := IniFile.ReadInteger('PARAMETROS','PTO',0);
  7.     Inifile.Free;
  8.     CZKEM1.Connect_net(devIp, devPort);
  9. end;


  • 0

#15 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 11:10

Hola

Leyendo nuevamente el mensaje, puedes mostrarnos que es lo que tienes en la variable dwEnrollNumber. Debes asegurate que no es nulo o con caracteres no válidos para un entero.

Salud OS

creo que el problema biene de aqui, valores nulos.
  • 0

#16 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 01 marzo 2011 - 11:12

Pues estas haciendo mal la descarga de datos, la variable dwMachineNumber de la funcion le estas asignando el numero de puerto cosa que no deberia de ser, solo asignale 1 como yo le hago.

Saludos.
  • 0

#17 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 11:16

Pues estas haciendo mal la descarga de datos, la variable dwMachineNumber de la funcion le estas asignando el numero de puerto cosa que no deberia de ser, solo asignale 1 como yo le hago.

Saludos.

pos ya me perdi amigo, lo siento, en que linea tengo que cambiar el dwMachineNumber ?

  • 0

#18 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 11:19


Pues estas haciendo mal la descarga de datos, la variable dwMachineNumber de la funcion le estas asignando el numero de puerto cosa que no deberia de ser, solo asignale 1 como yo le hago.

Saludos.

pos ya me perdi amigo, lo siento, en que linea tengo que cambiar el dwMachineNumber ?

ya entendi, lo que pasa es que me perdi, en el ejemplo que me pasaste aparentemenre se le pasa el puerto :p
  • 0

#19 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.234 mensajes
  • LocationRepública Dominicana

Escrito 01 marzo 2011 - 11:25



delphi
  1. procedure TRptEntSal.FormCreate(Sender: TObject);
  2. var  Inifile:TIniFile;
  3. begin
  4.     IniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Cfg.ini');
  5.     devIp := IniFile.readString('PARAMETROS','IP','');
  6.     devPort  := IniFile.ReadInteger('PARAMETROS','PTO',0);
  7.     Inifile.Free;
  8. end;
  9.  
  10. procedure TRptEntSal.button1click(Sender: TObject);
  11. var
  12.   dwEnrollNumber, dwMachinePrivilege ,dwVerifyMode,dwInOutMode,dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode: integer;
  13.   fecha:TDateTime;
  14.   s:string;
  15.   connect: boolean;
  16.   DevId: integer; //Numero de maquina, siempre asignale 1
  17. begin
  18.  
  19. connect := CZKEM1.Connect_net(devIp, devPort);
  20. DevId := 1;
  21.  
  22. if connect then begin //verificamos si se conecto correctamente
  23.     if CZKEM1.ReadAllGLogData(DevId) then
  24.     while CZKEM1.GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  25.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  26.     begin
  27.       ShortDateFormat := 'mm/dd/yyyy';
  28.       ShortTimeFormat := 'hh:mm';
  29.       TimeSeparator := ':';
  30.       DateSeparator := '/';
  31.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  32.       s := format('%.*d',[7,Inttostr(dwEnrollNumber)])+'>'+FormatDateTime('mm/dd/yyyy', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  33.       Memo.Lines.Add(s); //Coloca un Memo para ver los resultados de la descarga.
  34.     end;
  35.   end else ShowMessage('no se pudo conectar al equipo!!');
  36. end;



Hazlo asi, no intentes conectar al equipo en la creacion del formulario, hagalo desde un boton.

Saludos.
  • 0

#20 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 387 mensajes
  • LocationLa Ceiba-Atlantida-Honduras

Escrito 01 marzo 2011 - 11:37



delphi
  1. procedure TRptEntSal.FormCreate(Sender: TObject);
  2. var  Inifile:TIniFile;
  3. begin
  4.     IniFile:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Cfg.ini');
  5.     devIp := IniFile.readString('PARAMETROS','IP','');
  6.     devPort  := IniFile.ReadInteger('PARAMETROS','PTO',0);
  7.     Inifile.Free;
  8. end;
  9.  
  10. procedure TRptEntSal.button1click(Sender: TObject);
  11. var
  12.   dwEnrollNumber, dwMachinePrivilege ,dwVerifyMode,dwInOutMode,dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode: integer;
  13.   fecha:TDateTime;
  14.   s:string;
  15.   connect: boolean;
  16.   DevId: integer; //Numero de maquina, siempre asignale 1
  17. begin
  18.  
  19. connect := CZKEM1.Connect_net(devIp, devPort);
  20. DevId := 1;
  21.  
  22. if connect then begin //verificamos si se conecto correctamente
  23.     if CZKEM1.ReadAllGLogData(DevId) then
  24.     while CZKEM1.GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode,
  25.                                   dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do
  26.     begin
  27.       ShortDateFormat := 'mm/dd/yyyy';
  28.       ShortTimeFormat := 'hh:mm';
  29.       TimeSeparator := ':';
  30.       DateSeparator := '/';
  31.       Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute));
  32.       s := format('%.*d',[7,Inttostr(dwEnrollNumber)])+'>'+FormatDateTime('mm/dd/yyyy', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10);
  33.       Memo.Lines.Add(s); //Coloca un Memo para ver los resultados de la descarga.
  34.     end;
  35.   end else ShowMessage('no se pudo conectar al equipo!!');
  36. end;



Hazlo asi, no intentes conectar al equipo en la creacion del formulario, hagalo desde un boton.

Saludos.

me ha funcionado muy bien el codigo, ahora bien.... esto te devuelve toda la info del dispositvo,hay alguna manera de establecer un rango entre fechas? o tendre que hacer algun especie de filtro.
  • 0