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)

Fito 27 de agosto de 2019 15:20

Hola Amigos:

Me puse a trabajar de nuevo en el fiscal. Una pregunta, la EpsonFiscalInterface.dll funciona?

Saludos.

Fito...

fastpho 27 de agosto de 2019 22:43

Buenas Fito, si la EpsonFiscalInterface.dll funciona perfectamente , yo solo utilizo una sola funcion (descargar) que es la q baja los formularios 8010 ,8011,8012 , para subir a la afip

Fito 28 de agosto de 2019 06:46

Hola:

Al final lo hice todo con EpsonFiscalInterface.dll, funciona perfecto.

Saludos.

Fito...

rubenhduarte 26 de abril de 2020 17:37

Hola, soy nuevo en el foro, en realidad trabajo mas con c#, llegue a este foro buscando informacion de simulador de TM-T900FA, veo que alguien ya se lo descargo, yo no lo puedo encontrar, solo encontre emuladores de Hasar, alguien tiene algun link de descarga del emulador de Epson?
Muchas gracias!

jhjacomo 12 de julio de 2020 02:57

@panzaverde,
Hola buenas tardes.
Leí que estas usando la versión de pwc v3.0. Yo tengo un sistema de facturación con esta versión y ahora tengo la urgencia de hacerlo funcionar con una TM-T900AF. Leí todas las consultas y consejos de este tag, pero no encuentro la forma de hacerlo funcionar. Modifique el COBOL85.CBR como aconsejan pero me tira el error:
Código:

JMP0015I-U [PID:000011A8 TID:00000698] CANNOT CALL PROGRAM 'AddDataField'. CODE=0xC1 PGM=INFOFIS ADR=00405C2B
. Algun consejo.Gracias.

fastpho 12 de julio de 2020 16:03

@jhjacomo, Buen dia , que libreria estas usando .. ? Los ejemplos que hay para abrir el puerto Sacar un informe x o z son para la libreria epsonfiscaldriver.dll....

jhjacomo 12 de julio de 2020 16:54

Hola fastpro, gracias por tu respuesta.
Ampliemos.
Estoy usando la librería EpsonFiscalDriver.dll.
El archivo COBOL85.CBR:

Código:

[INFOFIS]
@EnvSetWindow=UNUSE
PRTLIS=PRTLIS.ENV
PRT1=FAELE.ENV
PRINTER=lpt3

[INFOFIS.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

......

En el formulario tengo un botón, que se envía al controlador la selección del operador

Código COBOL:
  1.      if caj-tipoprv = 12
  2.         call "A-EPSONTM900"
  3.         cancel "A-EPSONTM900"
  4.      end-if.
En la PROCEDURE del formulario principal, tengo un copy con las lineas de programación:

Código COBOL:
  1.  #include "procedur\InfoFis.pro".

Y en el archivo InfoFis.pro, lo siguiente:

Código COBOL:
  1. 003010 IDENTIFICATION DIVISION.
  2. 003020 PROGRAM-ID. A-EPSONTM900 is common.
  3. 003040 ENVIRONMENT DIVISION.
  4. 003160 DATA DIVISION.
  5. 003350 WORKING-STORAGE SECTION.
  6. 003360 01 ReturnDEValue     PIC S9(9) COMP-5 VALUE 0.
  7. 003370 01 LINEA-INFORME-X.
  8. 003380    03 Comando        PIC X VALUE X"08".
  9. 003390    03 Comandobis     PIC X VALUE X"02".
  10. 003400 01 LINEA-EXTRA.
  11. 003410    03 DataField1     PIC X VALUE X"0C".
  12. 003420    03 DataField2     PIC X VALUE X"21".
  13. 003430 01 ReturnValue       Pic S9(9) Comp-5 Value 0.
  14. 003440 01 N-Length          pic 99 value zero.
  15. 003450 01 lpString1         pic x(2).
  16. 003460 01 lpString2         pic x(2).
  17. 003470 01 x                 pic x(4).
  18. 003480 01 Cantidad          PIC S9(9) COMP-5 VALUE 0.
  19. 003490 01 ReturnString      PIC X(4) VALUE HIGH-VALUE.
  20. 003500 01 Variable          PIC 9(3).
  21. 003620 01 i                    pic 99.
  22. 003630*
  23. 003640 01 FUNC-EPSON-LIB    Pic x(40).
  24. 003640 01 BufferLen         pic S9(9) COMP-5 VALUE 0.
  25. 003650 01 version           pic x(250).
  26. 004100 PROCEDURE DIVISION.
  27. 004310 la-x.
  28. 004320     move spaces TO FUNC-EPSON-LIB.
  29. 004330     MOVE 2 TO BufferLen
  30. 004340     MOVE "AddDataField" TO FUNC-EPSON-LIB.
  31. 004350*> La propia llamada a la FUNC-EPSON-LIB:
  32. 004360     CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-INFORME-X
  33. 004370          BY VALUE BufferLen.
  34. 004380
  35. 004390     move spaces TO FUNC-EPSON-LIB.
  36. 004400
  37. 004410     MOVE 2 TO BufferLen.
  38. 004420     MOVE "AddDataField" TO FUNC-EPSON-LIB.
  39. 004430*> La propia llamada a la FUNC-EPSON-LIB:
  40. 004440     CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-EXTRA
  41. 004450          BY VALUE BufferLen.
  42. 004460*SEND COMMAND
  43. 004470     move spaces TO FUNC-EPSON-LIB.
  44. 004480     MOVE "SendCommand" TO FUNC-EPSON-LIB.
  45. 004490     CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
  46. 004500
  47. 005520 END PROGRAM A-EPSONTM900.
Y el error me da en la linea 004360, con el mensaje que envié anteriormente.

Gracias.

fastpho 12 de julio de 2020 19:38

@jhjacomo, Cuando llamas SetComPort no te da error ? , verifica que tanto tu aplicación, como el cbr y la dll esten en el mismo lugar...

jhjacomo 13 de julio de 2020 01:00

Hola FASTPHO, en realidad yo me baje el ejemplo de x y z que le sugeriste a Laura, el comando SetComPort no lo estaba usando,pero al leer tu respuesta, se lo agregué y el error sigue siendo el mismo, solo que ahora me da con SetComPort.
Verifique que el ejecutable, el archivo cobol85.cbr y la dll estén en la misma carpeta.
Yo me bajé de epson el EpsonFiscalDriver_03.02.00.zip, lo descomprimí y lo instalé, luego me copie de la carpeta donde se instaló (C:\Program Files (x86)\EpsonFiscalDriver\64) la DLL EpsonFiscalDriver.DLL. Estoy trabajando con un Windows 7 64 bits y estoy compilando con el FSC 3 que Kuk adapto para los 64 bits.
Saludos FASTPHO y gracias por tu ayuda.

fastpho 13 de julio de 2020 01:55

@jhjacomo, Para poder enviar algun comando al impresor primero tenes que setear la puerta la velocidad etc en el post 49 hay un ejemplo, con respecto al error el compilador no encuentra la dll o estas usando la libreria de 64 en vez de la 32 ...
Saludos

jhjacomo 13 de julio de 2020 03:14

@fastpho, Hay algo que no entiendo, cuando dices "con respecto al error el compilador no encuentra la dll".
Yo entendía que el compilador ni se entera de la dll a usar, que es el RUNTIME a través del archivo COBOL85.CBR que se encarga de ubicar las funciones dentro de la DLL.
Como te decia estoy trabajando con una maquina con WINDOWS 7 de 64 bits, entonces creí que lo mas lógico seria copiar la DLL de la carpeta de 64 y no la de 32. Ahora, copiando la dll de la capeta de 32 bits, ahora me dice que "InfoFis.exe dejo de funcionar" y se cierra.
Ya le incorporé el seteo de velocidad y puerto (Tambien la version), ahora me da error:

Código COBOL:
  1. 003580     MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
  2. 003590     CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.

la linea 3590.
Al momento de compilar, no hay que especificarle nada al compilador?.
Fastpho, discúlpame las molestias, día domingo y ya tarde. Mañana la seguimos.
Gracias por tu ayuda.
Fastpho sos de Mendoza, mira vos!!! Yo soy de San Juan, vecinos y conectados a través de un foro español!!!

fastpho 13 de julio de 2020 17:06

@jhjacomo, El runtime es el que no encontraba la dll , lo que tenes que ver ahora es si la variable version de vuelve el valor de la version de la libreria ,
Código COBOL:
  1.  MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
  2.      CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.  
  3.      display version.
version deberia ser igual a 3.0.2 si no me equivoco

jhjacomo 16 de julio de 2020 02:40

Hola Foro, buenas noches.
Agradezco al foro y especialmente a FASPHO, por sus consejos y recomendaciones. Ya pude enviar mis primeros comando al controlador fiscal.
Todavía me falta un montón, pero ya pude ver la version de la DLL, setear los baudios y el programa se pincha cuando envio "SendCommand", pero ya va ha salir. Sigo de cabeza en el tema.
Yo el error que estaba cometiendo es copiar EpsonFiscalDriver.dll de la carpeta 64 donde se instala el driver, pensé que como estaba en una maquina de 64 bits, correspondía esa DLL, pero la que anduvo fue la DLL de la carpeta 32.
Saludos.

Kuk 16 de julio de 2020 08:33

@jhjacomo, PowerCOBOL es de 32 bits, así que sólo puedes usar las DLL de 32 bits.

fastpho 17 de julio de 2020 05:14

@jhjacomo,De nada ,cualquier duda que tengas aca estamos...:cool:

jhjacomo 30 de julio de 2020 16:25

Hola Foro. buen día y feliz jornada para todos.
Y estamos como la pandemia, volviendo a fase 1.
Después de hacer funcionar el CF, al menos con cierre X(emití dos).
Me puse a limpiar el código para incluirlo en mi sistema y resulta que después de eso el controlador no respondió mas a ningún comando.
Entonces volví al formulario con el cual inicie la pruebas y no encuentro la forma de hacerlo andar.
El formulario tiene un ListBox y un botón para pedir el Cierre X.
Por cada comando a enviar voy cargando en el ListBox lo que vos haciendo y hago un display del PROGRAM-STATUS y esta es la salida despues de presionar el boton (Accion y PROGRAM-STATUS):

Ver la Version de la DLL +004219064 Devuelve "3.2.0"
Setear el puerto +002483396
Setear los baudios +002483396
setProtocolType +002483396
OpenPort +002483396
AddDataField LINEA-INFORME-X +002483396
AddDataField LINEA-EXTRA-X +002483396
SendCommand +002483396
ClosePort +002483396

Por cada envió, aparentemente no tengo error, pero después de enviar el "SendComand" el controlador no hace nada y después de enviar el "CosePort" el programa se cuelga con un "ComFis,.exe" dejo de funcionar"
Les muestro el codigo usado en el "Click" del boton:

ENVIRONMENT DIVISION.
DATA DIVISION.
working-Storage section.
01 LINEA-INFORME-X.
03 Comando PIC X VALUE X"08".
03 Comandobis PIC X VALUE X"02".
01 LINEA-EXTRA-x.
03 DataField1 PIC X VALUE X"0C".
03 DataField2 PIC X VALUE X"21".
01 sPort PIC S9(9) COMP-5.
01 sBaudio PIC S9(9) COMP-5.
01 SProtocol PIC S9(9) COMP-5.
01 gState PIC S9(9) COMP-5.
01 FUNC-EPSON-LIB Pic x(40).
01 BufferLen pic S9(9) COMP-5 VALUE 0.
01 version pic x(250).
PROCEDURE DIVISION.
call CLEARLIST OF p-comandos.
***** GetAPIVersion
call ADDSTRING of p-comandos using "Ver la Version de la DLL".
MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
display PROGRAM-STATUS.
move VERSION to POW-TEXT of l-version.
call DISPLAYMESSAGE of ComFis using "Ver Version".
***** setComPort
call ADDSTRING of p-comandos using "Setear el puerto".
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "setComPort" TO FUNC-EPSON-LIB.
move 0 to sPort.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE sPort.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "Seteo de puerto".
***** setBaudRate
call ADDSTRING of p-comandos using "Setear los baudios".
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "setBaudRate" TO FUNC-EPSON-LIB.
move 9600 TO sBaudio *> set baudios
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE sBaudio.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "Seteo de baudios".
***** setProtocolType
call ADDSTRING of p-comandos using "setProtocolType".
move spaces TO FUNC-EPSON-LIB.
MOVE "setProtocolType" TO FUNC-EPSON-LIB.
MOVE 1 TO SProtocol.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE SProtocol.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "setProtocolType".
***** OpenPort
call ADDSTRING of p-comandos using "OpenPort".
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "OpenPort" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "Open Port".
***** Ver que comando
*AddDataField
call ADDSTRING of p-comandos using "AddDataField LINEA-INFORME-X".
move spaces TO FUNC-EPSON-LIB.
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-INFORME-X
BY VALUE BufferLen.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "AddDataField LINEA-INFORME-X".
move spaces TO FUNC-EPSON-LIB.
*AddDataField
call ADDSTRING of p-comandos using "AddDataField LINEA-EXTRA-X".
MOVE 2 TO BufferLen.
MOVE "AddDataField" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-EXTRA-x
BY VALUE BufferLen.
display PROGRAM-STATUS.
move spaces TO FUNC-EPSON-LIB.
call DISPLAYMESSAGE of ComFis using "AddDataField LINEA-EXTRA".
*SendCommand
call ADDSTRING of p-comandos using "SendCommand".
MOVE "SendCommand" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "SendComand".
***** ClosePort
call ADDSTRING of p-comandos using "ClosePort".
MOVE spaces TO FUNC-EPSON-LIB.
MOVE "ClosePort" TO FUNC-EPSON-LIB.
CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
display PROGRAM-STATUS.
call DISPLAYMESSAGE of ComFis using "Close Port".

El ambiente de trabaja es unWindows 7 de 64 bit, compilador PowerCobol 3.0, la DLL (EpsonFiscalDriver.dll" 32 bits) está en la carpeta donde esta el ejecutable junto al COBOL85.CBR con la mension de cada función de la dll en el apartado [COMFIS.ENTRY]. El controlador esta conectado via USB y en el administrador de dispositivo
esta instalado dentro del "Controlador de bus serie universal" el driver "EPSON USB Controller for TM/BA/EU Printers".

Disculpen lo extenso de mi exposición, pero tengo cierta urgencia por terminar este tema y quería hacerme entender bien.
Espero puedan darme una mano. Gracias.

fastpho 30 de julio de 2020 17:29

@jhjacomo, Etiqueta las lineas de programa para que sea mas facil leer , con respecto a la comunicacion con el impresor fiscal , tenes que chequear Siempre cada vez que envias algo al impresor las propiedades de comunicacion para saber que pasa del otro lado: puede que te apagaron el impresor , no tenga papel , pasaron mas de 24 hs y corresponde hacer una Z si o si
Código VB:
  1. Prototype: getState( void );
Código VB:
  1. Prototype: int getLastError( void );

Por que siempre el impresor por medio de la libreria te devolvera algo ....
Por ejemplo:
Código COBOL:
  1. *> OPEN  PORT.
  2.      move spaces       TO FUNC-EPSON-LIB.
  3.      MOVE "OpenPort"   TO FUNC-EPSON-LIB.
  4.      CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.
  5.        
  6.      move spaces       TO FUNC-EPSON-LIB.
  7.      MOVE "getLastError" TO FUNC-EPSON-LIB.
  8.      CALL FUNC-EPSON-LIB WITH  STDCALL RETURNING  iError.
  9.      display              iError.
  10.      IF iError = 4  then MOVE "Error de escritura verifique el impresor" to "Text" OF CmCOMUNICACION.
  11.      IF iError = 0  then MOVE "ok" to "Text" OF CmCOMUNICACION.
  12.      IF iError = 1  then MOVE "Puerto ocupado" to  "Text" OF CmCOMUNICACION.
  13.      IF iError = 2  then MOVE "Puerto invalido" to "Text" OF CmCOMUNICACION.
  14.      IF iError = 10  then MOVE "Error de escritura verifique el impresor" to "Text" OF CmCOMUNICACION.

Código COBOL:
  1. ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 Respuesta          PIC S9(9) COMP-5 VALUE 0.
  5.  
  6.  PROCEDURE       DIVISION.
  7.      move "getState" to FUNC-EPSON-LIB.
  8.      CALL FUNC-EPSON-LIB WITH  STDCALL  RETURNING Respuesta.
  9. *    display "state 1" , Respuesta  
  10.      perform until Respuesta not = 2 *> esta ocupada la impresora
  11.           CALL FUNC-EPSON-LIB WITH  STDCALL RETURNING Respuesta
  12. *     display "state 2" , Respuesta
  13.      end-perform.      
Esta informacion esta en el manual del protocolo de la libreria....
Si estas trabajando por medio de usb podes mirar en Dispositivos e Impresoras de windows ,debe estar el impresor sin error
Saludos

jhjacomo 30 de julio de 2020 19:34

Gracias fastpho por tu respuesta, entiendo lo que dices respecto de los estados, previamente ya lo verifique y su estado es 0, como al programa lo tengo en desarrollo y el controlador esta enfrente mio, estos controles los paso por alto porque yo sé que el controlador tiene papel y nadie me lo apaga, lógicamente al momento de pasarlo a producción entiendo que estos comandos y controles son necesarios.
Respecto a lo que me comentas :"Si estas trabajando por medio de usb podes mirar en Dispositivos e Impresoras de windows ,debe estar el impresor sin error", si mal no recuerdo en la primeras pruebas que realice para sacar mis dos primeras "X", esto no lo tuve en cuenta. De donde tendría que obtener el driver para instalar y que se vea como impresora?
Saludos.

---------- Post añadido : 18:34 ---------- Post anterior : 18:24 ----------

Código COBOL:
  1.  ENVIRONMENT DIVISION.
  2.  DATA        DIVISION.
  3.  working-Storage section.
  4.  01 LINEA-INFORME-X.
  5.     03 Comando        PIC X VALUE X"08".
  6.     03 Comandobis     PIC X VALUE X"02".
  7.  01 LINEA-EXTRA-x.
  8.     03 DataField1     PIC X VALUE X"0C".
  9.     03 DataField2     PIC X VALUE X"21".
  10.  01 sPort             PIC S9(9) COMP-5.
  11.  01 sBaudio           PIC S9(9) COMP-5.
  12.  01 SProtocol         PIC S9(9) COMP-5.
  13.  01 gState         PIC S9(9) COMP-5.
  14.  01 FUNC-EPSON-LIB    Pic x(40).
  15.  01 BufferLen         pic S9(9) COMP-5 VALUE 0.
  16.  01 version           pic x(250).
  17.  PROCEDURE   DIVISION.
  18.      call CLEARLIST OF p-comandos.
  19. *****  Purge
  20. *     call ADDSTRING of p-comandos using "Purge".
  21. *     MOVE "Purge" TO FUNC-EPSON-LIB.
  22. *     CALL FUNC-EPSON-LIB WITH STDCALL   USING BY REFERENCE VERSION.
  23. *     display PROGRAM-STATUS.
  24. *     move VERSION to POW-TEXT of l-version.
  25. *     call DISPLAYMESSAGE of ComFis using "Ver Version".
  26. *****  GetAPIVersion
  27.      call ADDSTRING of p-comandos using "Ver la Version de la DLL".
  28.      MOVE "GetAPIVersion" TO FUNC-EPSON-LIB.
  29.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
  30.      display PROGRAM-STATUS.
  31.      move VERSION to POW-TEXT of l-version.
  32.      call DISPLAYMESSAGE of ComFis using "Ver Version".
  33. *****  setComPort
  34.      call ADDSTRING of p-comandos using "Setear el puerto".
  35.      MOVE spaces       TO FUNC-EPSON-LIB.
  36.      MOVE "setComPort" TO FUNC-EPSON-LIB.
  37.      move 0 to sPort.
  38.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE sPort.
  39.      display PROGRAM-STATUS.
  40.      call DISPLAYMESSAGE of ComFis using "Seteo de puerto".
  41. *****  getLastError
  42.      call ADDSTRING of p-comandos using "getLastError".
  43.      MOVE "getLastError" TO FUNC-EPSON-LIB.
  44.      CALL FUNC-EPSON-LIB WITH STDCALL   USING BY VALUE gState.
  45.      display gState.
  46.      move VERSION to POW-TEXT of l-version.
  47.      call DISPLAYMESSAGE of ComFis using "Ver Version".
  48. *****  getState
  49. *     call ADDSTRING of p-comandos using "getState".
  50. *     MOVE "getState" TO FUNC-EPSON-LIB.
  51. *     CALL FUNC-EPSON-LIB WITH STDCALL   USING BY VALUE gState.
  52. *     display gState.
  53. *     display PROGRAM-STATUS.
  54. *     move VERSION to POW-TEXT of l-version.
  55. *     call DISPLAYMESSAGE of ComFis using "Ver Version".
  56. *****  setBaudRate
  57.      call ADDSTRING of p-comandos using "Setear los baudios".
  58.      MOVE spaces        TO FUNC-EPSON-LIB.
  59.      MOVE "setBaudRate" TO FUNC-EPSON-LIB.
  60.      move 9600          TO sBaudio *> set baudios
  61.      CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY VALUE sBaudio.
  62.      display PROGRAM-STATUS.
  63.      call DISPLAYMESSAGE of ComFis using "Seteo de baudios".
  64. ***** setProtocolType    
  65.      call ADDSTRING of p-comandos using "setProtocolType".
  66.      move spaces TO FUNC-EPSON-LIB.
  67.      MOVE "setProtocolType" TO FUNC-EPSON-LIB.
  68.      MOVE 1 TO SProtocol.
  69.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY VALUE SProtocol.
  70.      display PROGRAM-STATUS.          
  71.      call DISPLAYMESSAGE of ComFis using "setProtocolType".
  72. *****  OpenPort
  73.      call ADDSTRING of p-comandos using "OpenPort".
  74.      MOVE spaces     TO FUNC-EPSON-LIB.
  75.      MOVE "OpenPort" TO FUNC-EPSON-LIB.
  76.      CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE VERSION.
  77.      display PROGRAM-STATUS.
  78.      call DISPLAYMESSAGE of ComFis using "Open Port".
  79. *****  Ver que comando
  80. *AddDataField
  81.      call ADDSTRING of p-comandos using "AddDataField LINEA-INFORME-X".
  82.      move spaces TO FUNC-EPSON-LIB.
  83.      MOVE 2 TO BufferLen.
  84.      MOVE "AddDataField" TO FUNC-EPSON-LIB.
  85.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-INFORME-X
  86.           BY VALUE BufferLen.
  87.      display PROGRAM-STATUS.
  88.      call DISPLAYMESSAGE of  ComFis using "AddDataField LINEA-INFORME-X".
  89.      move spaces TO FUNC-EPSON-LIB.
  90. *AddDataField
  91.      call ADDSTRING of p-comandos using "AddDataField LINEA-EXTRA-X".
  92.      MOVE 2 TO BufferLen.
  93.      MOVE "AddDataField" TO FUNC-EPSON-LIB.
  94.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE LINEA-EXTRA-x
  95.           BY VALUE BufferLen.
  96.      display PROGRAM-STATUS.
  97.      move spaces TO FUNC-EPSON-LIB.
  98.      call DISPLAYMESSAGE of ComFis using "AddDataField LINEA-EXTRA".
  99. *SendCommand
  100.      call ADDSTRING of p-comandos using "SendCommand".
  101.      MOVE "SendCommand" TO FUNC-EPSON-LIB.
  102.      CALL FUNC-EPSON-LIB WITH STDCALL USING BY REFERENCE VERSION.
  103.      display PROGRAM-STATUS.
  104.      call DISPLAYMESSAGE of ComFis using "SendComand".
  105. *****  ClosePort
  106.      call ADDSTRING of p-comandos using "ClosePort".
  107.      MOVE spaces     TO FUNC-EPSON-LIB.
  108.      MOVE "ClosePort" TO FUNC-EPSON-LIB.
  109.      CALL FUNC-EPSON-LIB WITH  STDCALL   USING BY REFERENCE VERSION.
  110.      display PROGRAM-STATUS.
  111.      call DISPLAYMESSAGE of ComFis using "Close Port".

fastpho 31 de julio de 2020 14:49

@jhjacomo, Por ahi no me explique bien , la impresora fiscal si esta conectada via USB te tiene que aparecer como un dispositivo mas , en dispositivos e impresoras es un chequeo rapido , creo que no te deja sacar el informe X es por que se cumplieron 24 hs , es decir una vez que se inicia la jornada fiscal con cualquier tipo de documento impreso , el impresor comienza a contar 24 hs una vez transcurrido este tiempo no te deja imprimir documentos fiscales o no fiscales , por lo tanto te obliga a realizar un cierre diario Z , como te das cuenta de esto o de cualquier otro error en estas propiedades:
Código COBOL:
  1.  
  2. * **  ESTADO COMPROBACION RAPIDA 0 NO HAY PROBLEMA    
  3.      move "getReturnCode" TO FUNC-EPSON-LIB.
  4. *    CALL FUNC-EPSON-LIB WITH  STDCALL  USING BY REFERENCE CODIGO-DE-RETORNO returning CODIGO-DE-RETORNO.
  5.      CALL FUNC-EPSON-LIB WITH  STDCALL  RETURNING CODIGO-DE-RETORNO.
  6.      MOVE CODIGO-DE-RETORNO TO  "Text" OF CmRetorno.
  7.  
Tambien debes mirar otras propiedades que es :
Estado Fiscal :
Código VB:
  1. int getFiscalStatus( void );
Estado del Impresor :
Código VB:
  1. int getPrinterStatus( void );


---------- Post añadido : 13:49 ---------- Post anterior : 20:33 ----------

@jhjacomo, como te fue , pudiste sacar Z
Saludos

jhjacomo 1 de agosto de 2020 02:37

Hola @fastpho, apareció el problema. Mi computadora tiene un enchufe USB de los parlantes que estaba dañado y parece que eso hizo que me dejaran de funcionar algunos USB. Armé todo en una computadora distinta y quedo todo funcionando. Seguí sacando X y Z sin ningún problema, el tema de las 24 horas se refiere a la emisión de comprobantes de venta, no puedo emitir un comprobante si en las ultimas 24 horas no emití una Z, pero X y Z se pueden emitir las que quieras, ahora si el controlador está inicializado, es conveniente sacar UNA Z por día, porque existe una limitación de cantidades de Z´s por controlador, no así las X.
Ahora esto es un OFF TOPIC, se solucionará el problema de los USB reinstalando el windows o ya hay un problema físico en la placa? A alguien le paso algo parecido?
Gracias,

jhjacomo 29 de agosto de 2020 03:25

Hola, buenas tardes al foro.
Retomando la programación del Epson TM T900AF.
Les comento la situación:
Sistema Operativo; Windows 7 64 bit
Version de Cobol: PowerCobol 3
Dll Usada: EpsonFiscalDriver.dll

Ya logré emitir Z y X sin problemas, ahora quiero ver el estado del controlador y evidentemente algo estoy haciendo mal, les copio el código:
Código COBOL:
  1. *****  getPrinterState
  2.      call ADDSTRING of p-comandos using "getPrinterStatus".
  3.      MOVE "getPrinterStatus" TO FUNC-EPSON-LIB.
  4.      move spaces to mensa.
  5.      CALL FUNC-EPSON-LIB.
  6.      move PROGRAM-STATUS to wstatus.

En todos las pruebas el PROGRM-STATUS me da cero, controlador apagado, sin papel o en uso.
En PowerCobol 3 no puedo usar "CALL FUNC-EPSON-LIB WITH STDCALL RETURNING CODIGO-CmImpresor." puesto que en esta versión da error al compilar, hay que tomar la respuesta del comando en PROGRAM-STATUS.
Saludos amigos, espero me puedan dar una mano con este tema.

jhjacomo 29 de agosto de 2020 03:26

Hola, buenas tardes al foro.
Retomando la programación del Epson TM T900AF.
Les comento la situación:
Sistema Operativo; Windows 7 64 bit
Version de Cobol: PowerCobol 3
Dll Usada: EpsonFiscalDriver.dll

Ya logré emitir Z y X sin problemas, ahora quiero ver el estado del controlador y evidentemente algo estoy haciendo mal, les copio el código:
Código COBOL:
  1. *****  getPrinterState
  2.      call ADDSTRING of p-comandos using "getPrinterStatus".
  3.      MOVE "getPrinterStatus" TO FUNC-EPSON-LIB.
  4.      move spaces to mensa.
  5.      CALL FUNC-EPSON-LIB.
  6.      move PROGRAM-STATUS to wstatus.

En todos las pruebas el PROGRM-STATUS me da cero, controlador apagado, sin papel o en uso.
En PowerCobol 3 no puedo usar "CALL FUNC-EPSON-LIB WITH STDCALL RETURNING CODIGO-CmImpresor." puesto que en esta versión da error al compilar, hay que tomar la respuesta del comando en PROGRAM-STATUS.
Saludos amigos, espero me puedan dar una mano con este tema.


La franja horaria es GMT +2. Ahora son las 05:06.

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