0

![]() |
![]() |
Senior |
La linea de los nulos las saque por no van e igual me estan apareciendo me tiene loco
Me baje de la pagina de Epson una dll y un .lib
Y viene una ocx tambien y tiene manual
La ocx cuando la quiero insertar me da un error
Voy a seguir probando
![]() |
![]() |
Administrador |
@fastpho, ¿qué error te da exactamente la OCX?
¿La DLL de qué va, qué hace exactamente, lo mismo que la OCX?
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Senior |
Este nuevo de paque de datos que baje viene con una com dice para windows y una dll y . lib para windows 32 y 64 bits cuando quise insertar el objecto no me figura en lo objetos insertables entonces me fui al boton browse y cuando la inserto me da el siguiente error : this is not a custom controls file Prove con vb6 y me hace lo mismo .
Bueno dije entonces voy por la dll pero no tengo el conocimiento para implementarla
No me deja subir el zip porque es muy pesado solo subo el pdf que explica
voy a dejar el link de epson para ver si la podes bajar KUK
Epson TM-T900FA | Impresoras fiscales | Punto de venta | Soporte | Epson Argentina
![]() |
![]() |
Administrador |
@fastpho, el uso de la DLL no es complicada. Debes añadir el archivo *.LIB a tu proyecto en PowerCOBOL. Luego copiar la DLL a la carpeta debug/release de tu proyecto PowerCOBOL donde te deja los EXE y DLL de tu proyecto.
En cuanto a la sintaxis. Te lo voy a explicar con ejemplos del PDF que has colgado.
Por ejemplo, dice que en la DLL hay una función (que por cierto no está disponible en la OCX) que es:CPP Código:
void setComPort( int Port )CODE Código:
This method configures the port number to be used. It is not available in the COM (.ocx) library. Variable Type Value Description Port int Numeric 0 – USB 1 – COM1 2 – COM2 x - COMx
Void - quiere decir "nada", o sea que la función no devuelve resultado.
Para llamar esta función debes hacer:COBOL Código:
WORKING-STORAGE SECTION. 01 sPort PIC S9(9) COMP-5. PROCEDURE DIVISION. MOVE 0 TO sPort *> activamos USB CALL "setComPort" WITH STDCALL USING BY VALUE sPort
Este es un ejemplo básico. Ahora para llamar la función que llamábamos antes:CPP Código:
void AddDataField( char *in_buffer, int in_buffer_length )CODE Código:
Para llamar esta función debes hacer:COBOL Código:
WORKING-STORAGE SECTION. 01 InBuffer PIC X(250). 01 BufferLen PIC S9(9) COMP-5. PROCEDURE DIVISION. *> Prueba con cada una de estas combinaciones MOVE X"08" & X"02" TO InBuffer MOVE 2 TO BufferLen MOVE X"08" & X"02" & X"00" TO InBuffer MOVE 2 TO BufferLen MOVE X"08" & X"02" & X"00" TO InBuffer MOVE 3 TO BufferLen *> La propia llamada a la Función: CALL "AddDataField" WITH STDCALL USING BY REFERENCE InBuffer BY VALUE BufferLen
Siguiendo estos ejemplos puedes invocar cualquier función en la DLL.
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Senior |
gracias Kuk por tu tiempo voy a probar y lo que me sugieres y despues aviso como me fue
Inserte la libreria y copie la dll y el lib en el directorio donde trabajo cuando compilo me tira esta cantidad de errores que estoy haciendo malCOBOL Código:
WORKING-STORAGE SECTION. 01 sPort PIC S9(9) COMP-5. 01 InBuffer PIC X(250). 01 BufferLen PIC S9(9) COMP-5. PROCEDURE DIVISION. MOVE 1 TO sPort *> activamos COM1 CALL "setComPort" WITH STDCALL USING BY VALUE sPort *> Prueba con cada una de estas combinaciones MOVE X"08" & X"02" TO InBuffer MOVE 2 TO BufferLen *> La propia llamada a la Función: CALL "AddDataField" WITH STDCALL USING BY REFERENCE InBuffer BY VALUE BufferLen
voy a subir el printscreen de la compilacion
![]() |
![]() |
Administrador |
@fastpho, parece ser una LIB estática (y no una LIB de importación) la cual además tiene sus propias dependencias. Acerca de las LIB: [Noticia] Diferentes tipos de librerías *.LIB que existen - COBOL Foro
¿Has instalado el EpsonFiscalDriver_01.09.00.exe? Aunque no creo que esto ayude para hacer el LINK.
Mira, cambia el código según explico en este hilo y convierte las llamadas en dinámicas: [Aporte] CALL de cualquier DLL sin *.LIB ni "LoadLibrary" - COBOL Foro. Así no necesitas la LIB en el proyecto, las funciones serán localizadas vía WinAPI por el Run-Time de Fujitsu, así que no olvides de quitar la LIB del proyecto.
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Senior |
Hola Kuk instale el paquete EpsonFiscalDriver_01.09.00.exe , quite la lib del proyecto pero cuando compilo me da el siguiente error :
Linking C:\epsontm\epsontm900.exe ...
APPEPSON.obj : error LNK2001: unresolved external symbol _FUNC@4
C:\epsontm\epsontm900.exe : fatal error LNK1120: 1 unresolved externals
** The build has failed **
este es el archivo que cree cobol85.cbr que contiene :
[APPEPSON.ENTRY]
setComPort=EpsonFiscalDriver.DLL
AddDataField=EpsonFiscalDriver.DLLCOBOL Código:
ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 FUNC PIC X(10). 01 sPort PIC S9(9) COMP-5. 01 InBuffer PIC X(250). 01 BufferLen PIC S9(9) COMP-5. PROCEDURE DIVISION. MOVE "setComPort" TO FUNC. MOVE 1 TO sPort *> activamos COM1 CALL "FUNC" WITH STDCALL USING BY VALUE sPort
![]() |
![]() |
Administrador |
@fastpho, estás haciendo llamada estática:COBOL Código:
CALL "FUNC" WITH STDCALL USING BY VALUE sPort
Quítale las comillas al FUNC para que tire de la varibale WORKING y no lo tome por literal:COBOL Código:
ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 FUNC PIC X(10). *> nombre función <===[ 01 sPort PIC S9(9) COMP-5. 01 InBuffer PIC X(250). 01 BufferLen PIC S9(9) COMP-5. PROCEDURE DIVISION. MOVE "setComPort" TO FUNC. *> nombre función <===[ MOVE 1 TO sPort *> activamos COM1 CALL FUNC WITH STDCALL USING BY VALUE sPort
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Senior |
Al fin pude Imprimir un Informe X Gracias Kuk
Ahora a laburar cualquier cosa estare informando
![]() |
![]() |
Senior |
Hola KUK tengo problemas con estos metodos que me devuelven ningun valor y me parece que el problema es que estan mal implementadas :
Por ejemplo el metodoyo llamandola asiCODE Código:Pero siempre me da zero cuando me deberia dar algun valor por ejemplo cuando se abre la tapa del impresor o falta papelCOBOL Código:
move "getPrinterStatus" TO FUNC. CALL FUNC WITH STDCALL USING BY REFERENCE CODIGO-CmImpresor. MOVE CODIGO-CmImpresor TO "Text" OF CmImpresor.
Desde ya muchas gracias
Actualmente hay 4 usuarios viendo este tema. (0 miembros y 4 visitantes)
Marcadores