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)

fastpho 24 de abril de 2017 14:54

Gracias Rapinto el ejemplo que yo pase y que estoy trabajando esta en vb6 y funciona bien

Kuk 24 de abril de 2017 15:21

Rapinto, la tecnología .NET comparte ciertas características con ActiveX, como declaración del contenido de la DLL en el registro de Windows. Pero sigue siendo otra tecnología y no es compartible con ActiveX. Así que en este caso si se hubiera tratado de una biblioteca .NET sería imposible registrarla en PowerCOBOL. Además, estamos hablando de una OCX, esta extensión que yo sepa es exclusiva para ActiveX y nunca se usa en .NET.

fastpho, me sigue pareciendo un sin sentido lo que está pasando... No me entra en la cabeza de dónde y cómo salen los nulos.

Intenta lo siguiente:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  sCmd            PIC X(250).
  3.  01  sCmdExt         PIC X(250).
  4.  
  5.  PROCEDURE DIVISION.
  6.          
  7.      MOVE X'0802' TO sCmd   (1:2)
  8.      MOVE X'0C21' TO sCmdExt(1:2)
  9.      MOVE SPACES  TO sCmd   (3:)
  10.                      sCmdExt(3:)

Si no te da buen resultado, también añade un nulo al final del campo, o sea:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  sCmd            PIC X(250).
  3.  01  sCmdExt         PIC X(250).
  4.  
  5.  PROCEDURE DIVISION.
  6.          
  7.      MOVE X'0802' TO sCmd   (1:2)
  8.      MOVE X'0C21' TO sCmdExt(1:2)
  9.      MOVE SPACES  TO sCmd   (3:)
  10.                      sCmdExt(3:)
  11.      MOVE X'00'   TO sCmd   (250:1)
  12.                      sCmdExt(250:1)

fastpho 24 de abril de 2017 22:14

1 Archivos Adjunto(s)
Gracias Kuk voy a probar , de todas maneras estoy buscando alguna libreria de kernel32 o de user32 para ver si puedo eliminar el null terminated del string

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01 ReturnDEValue        PIC S9(9) COMP-5 VALUE 0.
  3.  01  sCmd            PIC X(250).
  4.  01  sCmdExt         PIC X(250).
  5.  PROCEDURE       DIVISION.
  6.      MOVE X'0802' TO sCmd   (1:2).
  7.      MOVE X'0C21' TO sCmdExt(1:2).
  8.      MOVE SPACES  TO sCmd   (3:)
  9.                      sCmdExt(3:).
  10.      MOVE X'00'   TO sCmd   (250:1)
  11.                      sCmdExt(250:1)                    
  12.      INVOKE EpsonFPHostControl1 "OpenPort"                    RETURNING ReturnDEValue.                    
  13.      INVOKE EpsonFPHostControl1 "AddDataField" USING sCmd     RETURNING ReturnDEValue.
  14.      INVOKE EpsonFPHostControl1 "AddDataField" USING sCmdExt  RETURNING ReturnDEValue.
  15.      INVOKE EpsonFPHostControl1 "SendCommand"                 RETURNING ReturnDEValue.    
  16.      call "BUSY".    
  17.      INVOKE EpsonFPHostControl1 "ClosePort"                   RETURNING ReturnDEValue.
  18.          
Con este codigo me manda esto al puerto lo muestro un print screen

Kuk 24 de abril de 2017 23:36

fastpho, esto para mi quiere decir que es la OCX la que añade los nulos porque el valor X'20' es espacios.

fastpho 25 de abril de 2017 00:45

no los x'20' los ´pone cuando envio estas lineas
Código COBOL:
  1.     MOVE X'00'   TO sCmd   (250:1)
  2.                     sCmdExt(250:1)


---------- Post añadido : 23:36 ---------- Post anterior : 23:31 ----------

Mira ese link kuk
IBM Knowledge Center

---------- Post añadido : 23:45 ---------- Post anterior : 23:36 ----------

IBM Knowledge Center

Kuk 25 de abril de 2017 08:50

fastpho, el formato Z"Mi texto terminado por nulo" no es soportado por Fujitsu. Es soportando por IBM (a partir de cierta versión) y por MicroFocus. Con lo cual no es el caso ;)


Cita:

Citación del post de fastpho (Mensaje 2949)
no los x'20' los ´pone cuando envio estas lineas

Yo lo que veo en el pantallazo es que hay espacios hasta el final del campo recibido por la OCX y no hay ni un sólo nulo. Pero sigue sin funcionarte, según entiendo... :tonto:

fastpho 25 de abril de 2017 15:01

En el pantallazo que mande si te fijas bien antes del separador de campo 1c esta el 00 y vuelve a repetir con el scmdext

Kuk 25 de abril de 2017 15:44

Cita:

Citación del post de fastpho (Mensaje 2956)
antes del separador de campo 1c esta el 00

A ver, no sé si me estoy liando pero estoy mirando WRITTEN DATA COM1 y no veo ningún nulo. El READ DATA COM1 sí que los contiene pero según entiendo es la salida, o sea la respuesta del COM1 y no lo que se haya enviado a él. WRITTEN DATA COM1 es lo que se le ha enviado, y ahí no hay ningún nulo por medio, sólo los 2 que nosotros fijamos al final del campo en la posición 250.

Con esto quiero decir que seguramente se nos está escapando algo, y el problema no son los nulos.

fastpho 26 de abril de 2017 15:42

Impresoras Fiscales nueva generacion
 
1 Archivos Adjunto(s)
hola Kuk voy a subir la imagen de nuevo y marque en rojo con circulo los x'00'
el write es lo que envia a la impresora
gracias

Kuk 26 de abril de 2017 17:28

fastpho, esos 2 nulos son los 2 que ponemos al final de cada campo:

Código COBOL:
  1.         MOVE X'00'   TO sCmd   (250:1)
  2.                         sCmdExt(250:1)

Es decir, en total añadimos al supuesto "Stack" 2 campos de 250 bytes cada uno, al final de los cuales movemos un nulo.


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.