[RESUELTO] Sobre lector biometrico
#21
Escrito 01 marzo 2011 - 11:41
Saludos.
#22
Escrito 01 marzo 2011 - 11:44
entiendo... lo sospeche, en fin gracias amigo por la ayuda...Pues lamentablemente las cosas no funcionan asi, debes descargar esos datos a un archivo de texto para luego leer ese archivo linea por linea y guardarlo en una base de datos, ya que esos equipos tienen una capacidad para guardar registros que varian de 30,000 a 50,000, asi que cierto tiempo hay que ir limpiandola cada vez que se descargue.
Saludos.
#23
Escrito 01 marzo 2011 - 11:46
entiendo... lo sospeche, en fin gracias amigo por la ayuda...
Pues aqui estamos, si consideras que el tema esta resuelto, por favor me avisas.
Saludos.
#24
Escrito 01 marzo 2011 - 11:49
claro, demos por cerrado este tema.
entiendo... lo sospeche, en fin gracias amigo por la ayuda...
Pues aqui estamos, si consideras que el tema esta resuelto, por favor me avisas.
Saludos.
#25
Escrito 03 julio 2012 - 09:33
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
Se que este tema se ha cerrado, pero me queda la duda de como instalar el SDK que descargas de la pagina... segun info del SDK viene un instalador pero en realidad no viene nada... si descargo lo que viene aqui http://usa.zkteco.com/view.do?id=38 donde lo pego o que habra que hacer para echarlo andar... les agradeceria muchisimo la ayuda maestro...
#26
Escrito 22 enero 2014 - 05:20
disculpa las molestias, creen que puedan apoyarme a la aclaracion del codigo del chico que a mi me sigue apareciendo error en parametros '%.*d en el format??? espero puedan responderme amigos disculpen el año que pasoViendo 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
var Connect: Boolean; DevID: Integer; procedure conectar(ip: string; puerto: integer; NumMaq: integer); begin Connect := ZK.Connect_Net(ip,puerto); DevID := NumMaq; end; procedure TForm1.btnDownClick(Sender: TObject); begin Conectar(127.0.0.1, 4370, 1); //4370 es el puerto que se utiliza esos equipos if connect then begin if ZK.ReadAllGLogData(DevId) then while ZK.SSR_GetGeneralLogData(DevId,dwEnrollNumber,dwVerifyMode,dwInOutMode, dwYear,dwMonth,dwDay,dwHour,dwMinute,dwSecond,dwWorkCode) do begin ShortDateFormat := 'yyyy/mm/dd'; ShortTimeFormat := 'hh:mm'; TimeSeparator := ':'; DateSeparator := '/'; Fecha := StrToDateTime(IntToStr(dwYear)+'/'+IntToStr(dwMonth)+'/'+IntToStr(dwDay)+' '+IntToStr(dwHour)+':'+IntToStr(dwMinute)); s := format('%.*d',[7,StrToInt(dwEnrollNumber)])+'>'+FormatDateTime('yyyy/mm/dd', Fecha)+':'+FormatDateTime('hh:mm', Fecha) + Char(#13) + Char(#10); Data.Add(s); end; end; end;
Saludos.
#27
Escrito 08 septiembre 2014 - 09:06
Hola
Prueba con esto
delphi
format('%.*d',[7,dwEnrollNumber])
Salud OS
Edito, no vi bien el cast que haces, no hagas caso a este post. Sorry
#28
Escrito 26 agosto 2015 - 09:33
Hola Enecumene,
Sigues trabajando con ZK?
Saludos!!
#29
Escrito 26 agosto 2015 - 10:59
Hola Enecumene,
Sigues trabajando con ZK?
Saludos!!
No se me ha vuelto a presentar la oportunidad, pero cualquier cosa aqui ando.
Saludos.
#30
Escrito 26 agosto 2015 - 09:37
Enecumene,
Estoy trabajando con los lectores de ZK, algoritmo 10 y estoy teniendo problemas a la hora de descargar y cargar los templates de las huellas. Es un TFT y lo curioso es que con algunos modelos, en teoría con las características similares consigo bajar y subir las huellas, pero con otros no. Lo frustrante es que uso el programa nativo de ZK y funciona a la perfección.
Tienes alguna idea del proceso y de las funciones estandar utilizadas para esto?
Gracias!!
#31
Escrito 28 agosto 2015 - 09:47
Listo, asunto resuelto
Saludos!!
#32
Escrito 07 abril 2016 - 11:37
Esos de que esten cambiando de funciones por modelos nuevos esta mal plan, nos damos cuenta cuando el programa truena, y en es momento es por que ya urge la info.
Pareciea que solo entre para quejarme, jejeje, el post ha sido de mucha ayuda, gracias.
#33
Escrito 07 abril 2016 - 12:35
Esos de que esten cambiando de funciones por modelos nuevos esta mal plan, nos damos cuenta cuando el programa truena, y en es momento es por que ya urge la info.
Pareciea que solo entre para quejarme, jejeje, el post ha sido de mucha ayuda, gracias.
Hola bitbow
Veamos el lado amable, ya puedes cobrar un extra por los ajustes al proyecto
Saludos y bienvenido a delphiaccess.
#34
Escrito 03 abril 2017 - 01:30
Hola a todos, no se si aun me puedan ayudar. principalmente Sr. enecumene.
Mi consulta es la siguiente: Tengo una aplicación que usa la librería zkemkeeper.dll para el manejo de relojes biométricos de marcación modelo X628-C la aplicación funciona casi del todo bien, pues al intentar extraer las marcaciones del reloj hay ocasiones en que me envía los siguientes errores:
- TCP send ERROR No error y
- recv error No error
Utilizo las funciones ReadGeneralLogData y GetGeneralLogData respectivamente para obtener los datos de marcaciones que se encuentran en los relojes y almacenarlos en una base de datos SQL Server.
Esta aplicación la herede de la persona que ocupaba mi puesto anteriormente y al caer en esos errores la aplicación demora una eternidad en seguir con los demás relojes, la aplicación incluso la modifique para que haga ping a cada reloj antes de intentar descargar los datos del mismo pero aun así me siguen apareciendo esos errores, hago saber también que estos relojes al parecer nunca han sido borrados porque al traer los datos de los mismos a una tabla nueva trajo datos desde el 2015.
En verdad espero me puedan ayudar y gracias por su atención y éxito en sus labores.
P.D.: Otra cosa, la aplicación esta hecha en Visual Studio Ultimate 2012 recvError23.png 260,1KB 2 descargas
#35
Escrito 03 abril 2017 - 02:01
Hola!, bueno sin criticar la plataforma, pero.., por algo se tarda un buen , ahora bien, si son muchos equipos y a la vez muchos registros es normal que tarde un poco, por otro lado hay que ver cómo recorres la información, lo normal, más rápido y más efectivo es descargar la info en un archivo de texto por cada equipo (reloj1.txt, reloj2.txt), y luego recorrer cada archivo y guardar a la base de datos, tal vez estés haciendo la carga directamente a la Base de datos y puede presentarse algún problema de timeOut ó de concurrencias.
#36
Escrito 03 abril 2017 - 02:34
Hola a todos, no se si aun me puedan ayudar. principalmente Sr. enecumene.
Mi consulta es la siguiente: Tengo una aplicación que usa la librería zkemkeeper.dll para el manejo de relojes biométricos de marcación modelo X628-C la aplicación funciona casi del todo bien, pues al intentar extraer las marcaciones del reloj hay ocasiones en que me envía los siguientes errores:
- TCP send ERROR No error y
- recv error No error
Utilizo las funciones ReadGeneralLogData y GetGeneralLogData respectivamente para obtener los datos de marcaciones que se encuentran en los relojes y almacenarlos en una base de datos SQL Server.
Esta aplicación la herede de la persona que ocupaba mi puesto anteriormente y al caer en esos errores la aplicación demora una eternidad en seguir con los demás relojes, la aplicación incluso la modifique para que haga ping a cada reloj antes de intentar descargar los datos del mismo pero aun así me siguen apareciendo esos errores, hago saber también que estos relojes al parecer nunca han sido borrados porque al traer los datos de los mismos a una tabla nueva trajo datos desde el 2015.
En verdad espero me puedan ayudar y gracias por su atención y éxito en sus labores.
P.D.: Otra cosa, la aplicación esta hecha en Visual Studio Ultimate 2012recvError23.png
Hola Desarrollador1, bienvenido a Delphi Access
Creo que vamos a necesitar mirar ese codigo para ver porque falla o porque esta tan lento, de otro modo es comenzar a jugar a las adivinanzas
#37
Escrito 03 abril 2017 - 02:53
Dim sdwEnrollNumber As String = "" Dim idwVerifyMode As Integer Dim idwInOutMode As Integer Dim idwYear As Integer Dim idwMonth As Integer Dim idwDay As Integer Dim idwHour As Integer Dim idwMinute As Integer Dim idwSecond As Integer Dim idwWorkcode As Integer 'Dim idwErrorCode As Integer Dim checktype As String = "" Dim iGLCount = 0 Dim x As Integer Dim tipo_jornada As String = "" Dim ds As New DataSet Dim tablaMarcaciones As New DataTable 'se agregan las columnas al dataTable tablaMarcaciones Dim datos As DataRow tablaMarcaciones.Columns.Add("iGLCount", GetType(Integer)) tablaMarcaciones.Columns.Add("EnrollNumber", GetType(String)) tablaMarcaciones.Columns.Add("idwVerifyMode", GetType(Integer)) tablaMarcaciones.Columns.Add("Fecha", GetType(String)) tablaMarcaciones.Columns.Add("idwWorkcode", GetType(String)) tablaMarcaciones.Columns.Add("iMachineNumber", GetType(String)) tablaMarcaciones.Columns.Add("idwInOutMode", GetType(String)) tablaMarcaciones.Columns.Add("checktype", GetType(String)) 'se deshabilita el reloj objClock.EnableDevice(machine, False) Try 'leemos todos los registros de las marcaciones del reloj If objClock.ReadGeneralLogData(machine) Then While objClock.SSR_GetGeneralLogData(machine, sdwEnrollNumber, idwVerifyMode, idwInOutMode, idwYear, idwMonth, idwDay, idwHour, idwMinute, idwSecond, idwWorkcode) datos = tablaMarcaciones.NewRow() iGLCount += 1 datos("iGLCount") = iGLCount.ToString() datos("EnrollNumber") = sdwEnrollNumber.ToString() datos("idwVerifyMode") = idwVerifyMode.ToString() 'verificamos el tipo de marcación, es decir, entrada, salida, inicio de almuerzo y salida de almuerzo If idwInOutMode.ToString() = "0" Then checktype = "I" ElseIf idwInOutMode.ToString() = "1" Then checktype = "O" ElseIf idwInOutMode.ToString() = "2" Then checktype = "0" ElseIf idwInOutMode.ToString() = "3" Then checktype = "1" End If datos("checktype") = checktype datos("Fecha") = idwMonth.ToString().PadLeft(2, "0") & "/" & idwDay.ToString().PadLeft(2, "0") & "/" & idwYear.ToString() & " " & idwHour.ToString().PadLeft(2, "0") & ":" & idwMinute.ToString().PadLeft(2, "0") & ":" & idwSecond.ToString().PadLeft(2, "0") '& tipo_jornada datos("idwWorkcode") = idwWorkcode.ToString() datos("iMachineNumber") = machine.ToString() datos("idwInOutMode") = idwInOutMode.ToString() 'agregamos los datos leidos al dataTable tablaMarcaciones tablaMarcaciones.Rows.Add(datos) x = x + 1 End While archLog(3) = x.ToString() Else 'insertError(ip, machine, "getcheckin2_Error: No se descargaron las marcaciones", conexion, cmd) Console.WriteLine("No se descargaron las marcaciones") End If Catch ex As Exception insertError(ip, machine, "getcheckin2_Exception: " & ex.ToString(), conexion, cmd) Console.WriteLine(ex.Message) System.Threading.Thread.Sleep(5000) End Try 'habilitamos el reloj objClock.EnableDevice(machine, True) 'devolvemos el dataTable tablaMarcaciones con los registros del reloj Return tablaMarcaciones
Ese es el código por medio del cual se leen los datos del reloj
Gracias por su ayuda.
Editado por Agustin Ortu, 03 abril 2017 - 03:42 .
Etiquetas de codigo
#38
Escrito 03 abril 2017 - 03:00
Hola!, bueno sin criticar la plataforma, pero.., por algo se tarda un buen , ahora bien, si son muchos equipos y a la vez muchos registros es normal que tarde un poco, por otro lado hay que ver cómo recorres la información, lo normal, más rápido y más efectivo es descargar la info en un archivo de texto por cada equipo (reloj1.txt, reloj2.txt), y luego recorrer cada archivo y guardar a la base de datos, tal vez estés haciendo la carga directamente a la Base de datos y puede presentarse algún problema de timeOut ó de concurrencias.
jajajajajajaja si lo se , pero es lo que hay en la empresa, si se guarda directo a la base de datos.
#39
Escrito 02 enero 2019 - 07:56
Buenas noches, primero y principal gracias Enecumene por ayudar con zk, la verdad no hay mucha info dando vuelta para este lenguaje, y menos en español.
Ahora, paso a contar. A nosotros se nos dio la posibilidad de hacer un control de acceso en un country/barrio privado/cerrado. O bien podemos ingresar el documento de la persona que ingresa o egresa, a mano en el sistema, o semiautomaticamente, y es aca donde entra en juego la placa controladora. Bien, conectarnos nos podemos conectar, ya que probamos en el formulario y que nos muestre en un label o edit (tarda como 15-20 segundos). El problema ahora, es como recuperar lo que lea de la tarjeta, Y EN QUE MOMENTO. El lector es un kr100e, que cuando le apoyamos la tarjeta hace beep, pero realmente no sabemos que hace. Ahora, si hace un beep, es porque esta leyendo? En ese caso uso la funcion que zk1.ReadAllGLogData y despues con GetGeneralLogData recupero lo almacenado en memoria? Eso mismo se puede guardar en un string y con ello hacer lo que quiera, o antes tambien, no es cierto? Porque si es en tiempo real, aprovechariamos para guardarlo directamente en la base de datos.
Gracias!
#40
Escrito 03 enero 2019 - 05:03
Eh aqui el problema..mando captura para que vean que no nos lee nada.