USO DE UNA DLL ayuda urgente ..

USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Fri Sep 13, 2013 3:44 am

Buenas tardes, a los listeros .

No se mucho acerca de las DLL pero tengo una pregunta y haber con su conocimiento me puedes ayudar. Tengo un DLL esta posee una funciones para accesar un lector de tarjetas sin contacto, el asunto que no logro entrarle, para empezar tengo la primeras tengo 2 funciones.

No se si estoy haciendo bien las cosas por tal razon pido ayuda a quien pueda hecharme una mano lo agradezo desde ya..
asi empiesa..

1. Versión DLL
FUNCIÓN: int sVersionDLL(char * Version)
DESCRIPCION: Devuelve la versión de la DLL
IN: Buffer sobre el que se devolverá la tarjeta
OUT (entero) 0=OK / resto=ERROR
Ejemplo Uso:
res=sVersionDLL(buffer);
printf("VERSION DLL [%s]\n",buffer);

2. Comprobar si hay Tarjeta sobre el lector
FUNCION: bool bHayTarjeta(byte TagID[10])
DESCRIPCION: chequea si hay o no tarjeta sobre el lector
IN: Buffer sobre el que se devolverá el ID tarjeta (solo información, no lo vamos a usar
OUT (boolean) true=”hay tarjeta” / false=”No hay tarjeta”
Ejemplo Uso:
res=bHayTarjeta(IDTag);
if(res==TRUE)
printf("TRUE - Hay tarjeta sobre el lector\n");
else
printf("FALSE - No hay tarjeta sobre el lector


Como puedo llamar estas dos funciones
empeze algo asi

Function Carga_Inicial()

#define BTKlib "ACR120U.dll"
#define BTKlib1 "BTK_BADILLA.DLL"

Public hDLL := LoadLibrary(BTKlib)
Public hDLL2 := LoadLibrary(BTKlib1)

Public TagID :=space(10),nPuerto:={0}

Hay_tarjeta()

FreeLibrary( hDLL )
FreeLibrary( hDLL2 )


Return


Function Hay_tarjeta()

?? bHayTarjeta(@TagID )

return

DLL FUNCTION bHayTarjeta( TagID AS CHAR ) AS BOOL PASCAL FROM "bHayTarjeta" LIB hDLL2
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby Antonio Linares » Fri Sep 13, 2013 8:11 am

Empieza comprobando la versión:

Code: Select all  Expand view

#include "FiveWin.ch"
#include "dll.ch"

function Main()

   local cVersion := Space( 100 )

   sVersionDLL( cVersion )

   MsgInfo( cVersion )

return nil

DLL FUNCTION sVersionDLL( cResult AS LPSTR ) AS INT PASCAL LIB "ACR120U.dll"
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Sat Sep 14, 2013 2:44 am

Muchas Gracias pora la ayudadita,
Pero resulta que me sale este error


Error Irrecuperable 9003
Demaciadas LLamadas Recursivas Al controlador de errores, agardezco me guies que podra ser,,

Muchas Gracias
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Sat Sep 14, 2013 3:25 am

Hola ya logre sobre resolver el problema, ahora se presento otro.

Error description: Error BASE/1003 Variable does not exist: INT

Stack Calls
===========
Called from: Prepapgo.prg => SVERSIONDLL(0)
Called from: Prepapgo.prg => CARGA_INICIAL(82)
Called from: Prepapgo.prg => ENTRADA(67)

DLL FUNCTION sVersionDLL( cResult AS LPSTR ) AS INT PASCAL LIB "BTK_BADILLA.DLL"

creo que algo falto.

#include "FiveWin.ch"
#include "dll.ch"


Function Main()

local cVersion := Space( 100 )
PUBLIC hDLL := LoadLibrary("BTK_BADILLA.DLL")

sVersionDLL( cVersion )
MsgInfo( cVersion )

FreeLibrary( hDLL )

return nil

DLL FUNCTION sVersionDLL( cResult AS LPSTR ) AS INT PASCAL LIB hDLL
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby Antonio Linares » Sat Sep 14, 2013 8:15 am

Cambia esta línea asi:

DLL FUNCTION sVersionDLL( cResult AS LPSTR ) AS LONG PASCAL LIB hDLL
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Sun Sep 15, 2013 11:09 pm

Gracia de nuevo , bueno ya no da error,
De primera instanacia ya da la version muchas gracias.

AHora viene otra llamado creo que el mas dificil


3. Inicializar Tarjeta
 FUNCION: int iInicializarTJ(short shPuertoUSB,char *buffer_in)
 DESCRIPCION: Inicializa una tarjeta para empresa HEBA
 IN:
o - shPuertoUSB: Núm del puesto usb del lector. (SIEMPRE 0)
o *buffer_in: buffer de entrada compuesto por los siguientes datos (sep ;)
 lNumTarjeta:8char
 DNI: 8char
 FechaCaducidad: 6char formato ddmmyy
 OUT (entero) 0=OK / resto=ERROR
 Ejemplo Uso:
o Char buffer_Inicializacion[]={"12345678;14224300;311215"};
o res=iInicializarTJ(0,buffer_Inicializacion);

Gracias , haber con esta que esta complicada , gracias desde ya
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby Antonio Linares » Tue Sep 17, 2013 9:47 am

Intentalo tu y si no lo consigues, muestranos aqui tu código e intentaremos ayudarte :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Wed Sep 18, 2013 3:16 am

Muchas Gracias,
HABER.. ASI EMPEZE , SE CUELGA UN SEGUNDO , PERO DESPUES TERMINA..

#include "FiveWin.ch"
#include "dll.ch"

Function Main3()

local cVersion := SPACE(100) ,Puerto:=0

PUBLIC hDLL := LoadLibrary("BTK_BADILLA.DLL")

iLeerDatosBono(Puerto,cVersion)

MsgInfo( cVersion )

FreeLibrary( hDLL )

return nil

DLL FUNCTION iLeerDatosBono( cResultA AS _INT , cResultB AS LPSTR ) AS LONG PASCAL LIB "BTK_BADILLA.DLL"

/*
Leer Datos del Bono cargado en la tarjeta
FUNCION: int iLeerDatosBono(short sUsbPort,char *buffer_datos)
DESCRIPCION: Lee los Datos del bono tipo monedero de la tarjeta
IN: - shPuertoUSB: Num del puesto usb del lector.

OUT:- *buffer_datos: buffer de salida compuesto por los siguientes datos (sep ;)
iCodBono1: Codigo del bono vigente (0=sin bono)
Estado1: Estado del bono (0-Activo/1-Agotado/2-Caducado/3-Inactivo
iSaldo: Saldo del bono
iViajesSer:Contador viajes por servicio para el bono
iViajesDia:Contador viajes por dia para el bono
Ejemplo Uso:
res=iLeerDatosBono(0,buffer);
. Leer Historico de uso de los bonos
*/
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby Antonio Linares » Wed Sep 18, 2013 7:18 am

El valor que te devuelve es correcto ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Wed Sep 18, 2013 1:42 pm

No Linares, de echo el no devuelve ningun valor, se queda colgado unos segundos y termina , no da errores
Muchas Gracias
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby Antonio Linares » Wed Sep 18, 2013 1:50 pm

Quita la clausula PASCAL de aqui:

DLL FUNCTION iLeerDatosBono( cResultA AS _INT , cResultB AS LPSTR ) AS LONG PASCAL LIB "BTK_BADILLA.DLL"

y la variable que inicializas como Space( 100 ), hazla el doble Space( 200 )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Wed Sep 18, 2013 10:24 pm

Una gradecimiento grande por la aportacion de Sr Linares y Sr. Daniel Garcia por la ayuda incondicionada , muchas gracias en verdad.
YA funciona las funciones .
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Re: USO DE UNA DLL ayuda urgente ..

Postby guapilescity » Wed Sep 18, 2013 10:26 pm

POr otro lado lo unico que fata es saber porque cuando hago el llamdo de dos funciones seguida se cuelga un ratito en la el llamado a la segunda y no mas.
Gracias nuevamente eternamente agradecido a ustes.
Muchas Gracias
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am

Problema Solucionado..

Postby guapilescity » Sat Sep 21, 2013 3:43 am

El Sr. Daniel Garcia encontro el problemas, posiblemente ser aplicado en nuevas versiones, agradezco por su esfuezo y entrega igual que al Sr. Linares.
Muchas Gracias
guapilescity
 
Posts: 22
Joined: Thu Nov 01, 2012 1:23 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 70 guests