generalmente estos dispositivos entregan una archivo de texto con la información de marcaje
algo asi como el siguiente ejemplo:
r0120160815001.dat -> RELOJ 01 día 15/08/2016 arch 001
# Estructura interna #
IN0005201608151355 -> IN = INGRESO 0005 = COD.TARJETA 20160815=FECHA DEL MOV 1355= 13:55
OT0005201608151823 -> OT= SALIDA 0005 = COD.TARJETA 20160815=FECHA DEL MOV 18:23= 18:23
IN0006020160815823
OT0006201608151618
...
Con esta estructura creaba una dbf con los _ * esto es como ejemplo
....
mov caracter 2
code caracter de 4
fecha caracter de 8
hora caracter 5
...
y lo llamaba mas menos de esta forma como ejemplo
Code: Select all
#include "FiveWin.ch"
STATIC oWnd
FUNCTION Main()
LOCAL oBar, oPopup, oBtn, oSay
SET DATE FRENCH
SET CENTURY ON
SET DELETED ON
SET _3DLOOK ON
SetBalloon( .T. )
DEFINE WINDOW oWnd TITLE "Subir Datos del Reloj Control"
DEFINE BUTTONBAR oBar OF oWnd SIZE 60, 60 2007
DEFINE BUTTON OF oBar ACTION Llamar(), oWnd:End() RESOURCE "attach" PROMPT "Marcas" TOOLTIP "Subir Marcas del BioMetrico"
SET MESSAGE OF oWnd TO "Soporte para el sistema RENNOXP" KEYBOARD 2007
ACTIVATE WINDOW oWnd
RETURN nil
//----------------------------------------------------------------------------//
STATIC FUNCTION Llamar()
LOCAL cFile, xMov, xTar, xDia, xMes, xAno, xFec, xEnt, xSal , yMov, yTar, yDia, yMes, yAno, yFec, yEnt, ySal, uTar , tuca
LOCAL Mov1 , Mov2, xTim
tuca := 0
cFile := cGetFile("*.DAT","Archivo de Transmisión de Capturador de Huellas","Archivo de Marcas | *.dat","F:\VIGATEC\TEMPO\")
USE "UNICORN.DBF" ALIAS PAS1 NEW EXCLUSIVE
USE "RELOJCO.DBF" ALIAS PAS2 NEW EXCLUSIVE
INDEX ON PAS2->MOV+PAS2->TARJETA+PAS2->DIA+PAS2->MES+PAS2->ANO+PAS2->ENTR TO R1.NTX
INDEX ON PAS2->MOV+PAS2->TARJETA+PAS2->DIA+PAS2->MES+PAS2->ANO TO R2.NTX
SET INDEX TO R1,R2
IF LEN(cFile) > 0
IF MsgYesNo("Esta por recibir el Archivo del Capturador de Huellas...Está seguro de realizar proceso ?", cFile)
SELECT PAS1 ; __DBZAP()
APPEND FROM &cFile SDF
dbgotop()
// calculando los tiempos en minutos
MSGWAIT("ESPERE POR FAVOR...CALCULANDO LOS TIEMPOS...")
DO WHILE !EOF()
PAS1->TIME := STRTRAN( STR((VAL(SUBSTR(PAS1->HORA,1,2))*60)+(VAL(SUBSTR(PAS1->HORA,4,2))),5,0) ," ","0")
SKIP
ENDDO
// validando la fecha
MSGWAIT("ESPERE POR FAVOR...VALIDANDO FECHAS...")
DBGOTOP()
DO WHILE !EOF()
PAS1->DATA := CTOD(PAS1->FECHA)
SKIP
ENDDO
//---------------------------------------------
FERASE( "F:\RENNOXP\INDICES\001\RELOJC1.NTX" )
FERASE( "F:\RENNOXP\INDICES\001\RELOJC2.NTX" )
WinExec(".\RENOM.BAT")
MSGINFO("Proceso terminado con exito...","ok")
ENDIF
ENDIF
RETURN Nil
con esto tenia una DBF con _ necesarios para seguir con el procedimiento especifico para mi programa de sueldos.
Espero que te sirva
saludos