Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Manejo OCX impresora Fiscal Epson nueva generación (https://www.cobolforo.es/showthread.php?t=601)

Rapinto 5 de mayo de 2017 00:27

fastpho,

Não será necessário utilizar:
Código COBOL:
  1. * define na Working
  2. 01  WSRESULT PIC S9(009)   COMP-5.
  3.  
  4. CALL FUNC WITH  STDCALL  USING BY REFERENCE CODIGO-CmImpresor
  5.                                         RETURNING WSRESULT.
Espero que resolva.
Un saludo,
Rui Pinto

Kuk 5 de mayo de 2017 08:48

fastpho, mirando el prototipo C de la función, vemos:

Código CPP:
  1. int getPrinterStatus( void )

int - es el Integer, equivalente a PIC S9(9) COMP-5 y es lo que la función devuelve.
void - quiere decir NADA, o sea que no hay parámetros a pasar para esta función.

Ahora, viendo cómo lo haces tú:

Código COBOL:
  1. CALL FUNC WITH  STDCALL  USING BY REFERENCE CODIGO-CmImpresor.

Le estás pasando un puntero (la dirección del campo CODIGO-CmImpresor) y por el contrario no recibes el valor Integer que devuelve dicha función.

La forma correcta de llamarla sería:

Código COBOL:
  1. CALL FUNC WITH  STDCALL RETURNING CODIGO-CmImpresor.

fastpho 5 de mayo de 2017 14:29

Gracias Kuk y Rui voy a probar y despues cuento como me fue

---------- Post añadido : 13:29 ---------- Post anterior : 13:24 ----------

Funciona de las dos maneras Gracias Kuk y Rui
Código COBOL:
  1.      CALL FUNC WITH  STDCALL  USING BY REFERENCE CODIGO-CmImpresor returning CODIGO-CmImpresor.
  2.      CALL FUNC WITH  STDCALL RETURNING CODIGO-CmImpresor.          

Laura 7 de diciembre de 2017 22:29

Kuk, Hola.. Necesito hacer funcionar la impresora EPSON TM 900 nueva generación y no encuentro la forma de usar la OCX o la DLL.. Vi en el foro que la están usando.. me pueden ayudar x favor?

Gracias...

Josber 8 de diciembre de 2017 19:34

Laura, Kuk, no está usándo ese controlador, supongo que por que aquí en España, fiscalmente no es obligatorio, el que te tendría que ayudar es fastpho, que parece ser que ha conseguido ponerlo en marcha. Lo único que ha hecho Kuk y otros, y no es poco, es ayudar con un problema.

Un saludo.-

Kuk 9 de diciembre de 2017 11:11

Laura, como ha dicho Josber, yo no las uso. Pero dinos qué problema tienes, técnicamente te podremos ayudar.

fastpho 11 de diciembre de 2017 14:39

Laura, Hola Laura , tendrias que bajar desde la pagina web de epson argentina , yo logre hacerla andar yo estoy utilizando EpsonFiscalDriver.DLL para facturar y sacar informes
bajatelos y te ayudo
Suerte

Laura 11 de diciembre de 2017 20:07

Hola.. buenísimo.. yo tengo la DLL (EpsonFiscalInterface.DLL) y la OCX (comEsponFiscalDriver.OCX) q me enviaron de Espon, incluso fui a un curso pero no supieron decirme como usarlas en el Fujitsu. La OCX intento incluirla como un Custom Control pero pero me sale una leyenda This is not a custom control file.. Podés pasarme los códigos para incluir la DLL? NO encuentro la forma.. Muchísimas gracias..

---------- Post añadido : 16:07 ---------- Post anterior : 15:59 ----------

Gracias.. Te cuento rápido mi problema. Espon provee una DLL para la impresora fiscal para lenguaje de alto nivel y también una OCX para lenguaje de bajo nivel.. No se como utilizar la DLL en el Fujitsu y así utilizarla. Tampoco puedo incluir la OCX como custom control porq me dice This is not a custom control file y tampoco conozco otra forma de utilizarla. Fui a un curso en Espon y no hay nadie q desarrolle en Fijitsu, somos pocos y entonces no tienen las respuestas para ayudarnos.

fastpho 11 de diciembre de 2017 22:09

Laura, Si lees bien el problema en paginas anteriores en el foro la ocx no funciona con pwc y como te dije tenes que usar la libreria EpsonFiscalDriver.DLL que funciona muy bien.
Tenes que copiar tal libreria donde compile tu programa y en el archivo cobol85.cbr incluir las llamadas de las funciones que necesitas te paso unas lineas de programa y lo que debe incluir
el archivo cobol85.cbr


Lineas de Cobol85.cbr
Código:

[TPV.ENTRY]
AddDataField=EpsonFiscalDriver.DLL
ClosePort=EpsonFiscalDriver.DLL
GetAPIVersion=EpsonFiscalDriver.DLL
GetExtraField=EpsonFiscalDriver.DLL
GetReceivedFrame=EpsonFiscalDriver.DLL
GetSentFrame=EpsonFiscalDriver.DLL
OpenPort=EpsonFiscalDriver.DLL
Purge=EpsonFiscalDriver.DLL
SendCommand=EpsonFiscalDriver.DLL
getBaudRate=EpsonFiscalDriver.DLL
getComPort=EpsonFiscalDriver.DLL
getExtraFieldCount=EpsonFiscalDriver.DLL
getFiscalStatus=EpsonFiscalDriver.DLL
getLastError=EpsonFiscalDriver.DLL
getPrinterStatus=EpsonFiscalDriver.DLL
getProtocolType=EpsonFiscalDriver.DLL
getReturnCode=EpsonFiscalDriver.DLL
getState=EpsonFiscalDriver.DLL
setBaudRate=EpsonFiscalDriver.DLL
setComPort=EpsonFiscalDriver.DLL
setProtocolType=EpsonFiscalDriver.DLL
setComPort=EpsonFiscalDriver.DLL
setLog=EpsonFiscalDriver.DLL

Lineas de Programa:
Código COBOL:
  1.      MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
  2.      CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.  
  3. ***    set log
  4. **    move spaces       to FUNC-EPSON-LIB.
  5. **    MOVE "SetLog" TO FUNC-EPSON-LIB.
  6. **    MOVE "./" TO InBuffer.
  7. **    MOVE 0 TO BufferLen.
  8. **    CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE   InBuffer
  9. ** *                                  BY VALUE  BufferLen
  10. **    COM SET      
  11.      move spaces       TO FUNC-EPSON-LIB.
  12.      MOVE "setComPort" TO FUNC-EPSON-LIB.
  13.      MOVE 1            TO sPort *> activamos COM1
  14.      CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY VALUE sPort.
  15. **    BAUDIOS SET    
  16.      MOVE spaces       TO FUNC-EPSON-LIB.
  17.      MOVE "setBaudRate" TO FUNC-EPSON-LIB.
  18.      move 9600          TO sBaudio *> set baudios
  19.      CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY VALUE sBaudio.
  20. **    MOVE spaces       TO FUNC-EPSON-LIB.
  21. **    MOVE "getBaudRate" TO FUNC-EPSON-LIB.
  22. **         CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY REFERENCE sBaudio.
  23. **    DISPLAY sBaudio
  24. **    PROTOCOL SET
  25.      move spaces       TO FUNC-EPSON-LIB.
  26.      MOVE "setProtocolType" TO FUNC-EPSON-LIB.
  27.      MOVE 1                 TO SProtocol.
  28.      CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY VALUE SProtocol.
  29. *> OPEN  PORT.
  30.      move spaces       TO FUNC-EPSON-LIB.
  31.      MOVE "OpenPort"   TO FUNC-EPSON-LIB.
  32.      CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.
  33.        
  34.      move spaces       TO FUNC-EPSON-LIB.
  35.      MOVE "getLastError" TO FUNC-EPSON-LIB.
  36.      CALL FUNC-EPSON-LIB WITH  STDCALL RETURNING  iError.          
  37.      IF iError = 0  then MOVE "ok" to "Text" OF CmCOMUNICACION.
  38.      IF iError = 1  then MOVE "Puerto ocupado" to  "Text" OF CmCOMUNICACION.
  39.      IF iError = 2  then MOVE "Puerto invalido" to "Text" OF CmCOMUNICACION.
  40.      IF iError = 10  then MOVE "Error de escritura verifique el impresor" to "Text" OF CmCOMUNICACION.
  41. **    display    iError
  42. *    
  43. *
  44. *    MOVE "ClosePort"   TO FUNC-EPSON-LIB.
  45. *    CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.
  46. *      
  47.  

Laura 12 de diciembre de 2017 00:18

Estuve probando con un ejemplo q pusieron justamente con lo de "setComPort" y copié la DLL en mi release pero cuando lo ejecuto me da error, como q no reconoce el setComPort, lo moví a la variable también.. pero con éste ejemplo q vos me pusiste voy a seguir probando mañana. Muchas gracias.. ojalá también pueda ayudar en algo..


La franja horaria es GMT +2. Ahora son las 04:27.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.