Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Problema en enviar null x"00" a impresora termica


drvedia1981
9 de agosto de 2017, 04:14
Hola amigos de este nuevo foro no entre mucho del viejo (escobol) mi nick era drvedia, el tema es que estoy mandando una cadena de datos para imprimir un tique con el ocx mcscomm pero al llegar al caracter x"00" en visual basic chr(0) se detiene que puede ser ? ahy otra forma de mandar un null ?
Muchas Gracias

Codigo
01 ENVIO.
03 FILLER PIC X VALUE X"1D".
03 FILLER PIC X VALUE X"28".
03 FILLER PIC X VALUE X"4C".
03 FILLER PIC X VALUE X"06".
03 FILLER PIC X VALUE B"00".
03 FILLER PIC X VALUE X"30".
03 FILLER PIC X VALUE X"45".
03 FILLER PIC X VALUE X"20".
03 FILLER PIC X VALUE X"20".
03 FILLER PIC X VALUE X"01".
03 FILLER PIC X VALUE X"01".

Kuk
9 de agosto de 2017, 11:50
drvedia1981, por lo pronto has puesto B"00" y no X"00". En cuanto a tu problema, haz un REDEFINES :


01 ENVIO.
03 FILLER PIC X VALUE X"1D".
03 FILLER PIC X VALUE X"28".
03 FILLER PIC X VALUE X"4C".
03 FILLER PIC X VALUE X"06".
03 FILLER PIC X VALUE B"00".
03 FILLER PIC X VALUE X"30".
03 FILLER PIC X VALUE X"45".
03 FILLER PIC X VALUE X"20".
03 FILLER PIC X VALUE X"20".
03 FILLER PIC X VALUE X"01".
03 FILLER PIC X VALUE X"01".
01 ENVIO-R REDEFINES ENVIO PIC X(11).


Y manda a la impresora el campo ENVIO-R a ver qué tal.

drvedia1981
9 de agosto de 2017, 14:42
Hola kuk probé con redefines pero nada, copie mal el codigo porque estaba haciendo pruebas se envia x"00" no b"00"
Solo se recibe por puerto serie 1B 61 31 1D 28 4C 06 y se corta
Gracias Saludos

Kuk
9 de agosto de 2017, 15:05
drvedia1981, ¿si omites el X"00" recibe el resto de valores? (aunque no sea código válido, pruébalo a ver)

drvedia1981
10 de agosto de 2017, 02:19
Hola Kuk probé sin el X"00" y no funciona, es algo que tiene que recibir la impresora, en visual basic 6 envió chr(0) y funciona perfecto creo que voy a llamar de cobol a un programita en vb que imprima y devuelva el control pero quería evitar eso.
Gracias Saludos

---------- Post añadido : 00:05 ---------- Post anterior : 23:07 ----------

Kuk con respecto a tu pregunta, si quito el x"00" sigue con los demas caracteres sin problema, no es solo que no lo envia sino que bloquela el envio de los demas caracteres lo prove con el mcscomm.ocx y el ocx de Serial Port ActiveX Control y hace lo mismo
Gracias Saludos

---------- Post añadido : 01:19 ---------- Post anterior : 00:05 ----------

La impresora es una epson tm-t20ii

Kuk
10 de agosto de 2017, 08:59
drvedia1981, normalmente el X"00" significa Fin de cadena de caracteres. En este caso, no sé por qué razón, es justamente lo que está pasando, que tu cadena de caracteres se corta en el X"00" porque se piensa que no hay nada más detrás de ello. :piensa:

¿Puedes publicar el código VB para ver cómo lo haces?

drvedia1981
10 de agosto de 2017, 23:01
Hola kUk este es el código emite un tique de turnos por una impresora térmica epson tm-t20ii, te comento que lo solucione con una ocx echa en vb6 que manejo de power si interesa la subo con fuente pero tendrían que adaptarla a cada necesidad.
Saludos

SerialCom.Output = Chr(27) & "a" & Chr(49)
SerialCom.Output = Chr(29) & Chr(40) & Chr(76) & Chr(6) & Chr(0) & Chr(48) & Chr(69) & Chr(32) & Chr(32) & Chr(1) & Chr(1)
SerialCom.Output = Chr(29) & "!" & Chr(37)
SerialCom.Output = "A-001" & Chr(10)
SerialCom.Output = Chr(29) & "!" & Chr(0)
SerialCom.Output = Chr(27) & "!" & Chr(17) & "Por favor espere el llamado en pantalla 20/07/2017 13:39" & Chr(10) & Chr(10) & Chr(27) & "!" & Chr(0)
SerialCom.Output = Chr(29) & "h" & Chr(40)
SerialCom.Output = Chr(29) & "w" & Chr(2)
SerialCom.Output = Chr(29) & "H" & Chr(0)
SerialCom.Output = Chr(29) & Chr(107) & Chr(4) & "A-125" & Chr(0)
SerialCom.Output = Chr(27) & "a" & Chr(48)

Kuk
11 de agosto de 2017, 08:59
drvedia1981, hace poco alguien tuvo un problema parecido... Sería interesante resolverlo.

Oye, y si intentas pasar el valor directamente en el INVOKE o CALL haciendo:


... USING BY CONTENT X"1D284C0600304520200101"


¿Puedes intentarlo a ver qué pasa?

drvedia1981
12 de agosto de 2017, 04:18
Hola enviando la cadena completa como me decias ... USING BY CONTENT X"1D284C0600304520200101" es lo mismo llega hasta el 06 y se detiene el envio, como te comente lo pude resolver por otro lado pero es raro parece no se puede.
Saludos y gracias por la ayuda

Kuk
18 de agosto de 2017, 09:15
si interesa la subo con fuente pero tendrían que adaptarla a cada necesidad.

Sí súbelo todo por aquí, seguro que a alguien le servirá. ;)

fastpho
17 de noviembre de 2017, 21:37
drvedia1981, Resolviste tu problema del ticket en tm-20