Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Impresión de una imagen en una impresora de tickets, códigos de escape

Estimados amigos.

Llevo ya algún tiempo buscando la información para poder sacar por una impresora de tickets una imagen previamente cargada. Esta imagen se imprimiría antes de la impresión del ticket por el puerto, Serie o paralelo.

Existen unos códigos de escape para la impresión de esta imagen preguardada, en este caso, al igual que la apertura del cajón o del corte automático, intento utilizar los códigos de escape que me figuran en el manual, pero no hace nada.

Con la impresora viene un programita para cargar la imagen que sí imprime el logotipo pero tampoco he sido capaz de redireccionar el puerto y sacarlo en un fichero para así ver qué intenta mandar a la impresora y emularlo en el desarrollo.

La impresora es Bematech TMAX-80, dice el distribuidor en España que tiene los mismos códigos que la impresora EPSON TM88IV.

El código de escape que me figura en el manual es:

Command
GS / m

Code (Hex)
1D 2F m

Name Print downloaded bit image

Que traducido a decimal es: 29 , 47 y 109
Ahora bien, buscando en internet, en el manual de la Impresora SAMSUNG SRP-350 pone la misma codificación, pero observaréis que la letra "m" no se convierte sino que parece ser un intervalo, algo que no figura en el manual original... :/

GS / m Imprime la imagen descargada por bit.
Decimal 29 47 m
[Rango]
0 ≤m ≤3, 48 ≤m ≤51
[Descripción] Imprime una imagen por bit descargada utilizando el modo especificado por m.
m selecciona un modo de la siguiente tabla :
m Modo
0, 48 Normal
1, 49 Doble ancho
2, 50 Doble altura
3, 51 Cuádruple

Finalmente la rutina de impresión final os la pongo, lo último que he puesto, es decir, el código que marca 29,47 y luego el modo, 0 y 48. Pero ya no se me ocurre más que hacer. He probado con todos...

Para el puerto serie:
Código:
Writeln(Impresora,chr(29)+chr(47)+chr(0)+chr(48))
Para el paralelo
Código:
Writeln(Impresora, #29+#47+#0+#48)
Si alguien me puede ayudar por favor.

De antemano muchas gracias.
Saludos.
Responder Con Cita
  #2  
Antiguo 28-06-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
¿Alguien ha realizado algo parecido? he hecho todo tipo de pruebas pero sigue sin sacarlo...

¿Alguien sabe sino la forma de capturar la salida a un fichero? algo parecido a redireccionar la salida del LPT1 a un fichero, así de esta manera, puedo ver lo que le mandaría a la impresora el software que viene con ella y poder lanzarlo desde Delphi cuando quieran imprimir la imagen descargada.

¿?
Responder Con Cita
  #3  
Antiguo 07-07-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Una idea que he probado es colocar otra impresora e imprimir la información que manda el propio software de la máquina, lamentablemente saca por pantalla todo el código ASCII por lo que entiendo es que no reconoce la orden, aunque era de esperar...

Sigo buscando... esperando alguna idea, no sé.
Responder Con Cita
  #4  
Antiguo 14-07-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Lo vuelvo a subir por si alguien se le ha ocurrido algo... Gracias!
Responder Con Cita
  #5  
Antiguo 14-07-2010
Avatar de ppb
[ppb] ppb is offline
Miembro Premium
 
Registrado: jun 2005
Ubicación: España
Posts: 109
Poder: 19
ppb Va por buen camino
Hasta donde recuerdo , creo que debes definir el gráfico primero :

GS*.....

y luego GS/.. para imprimir
__________________
Because , I have a power.
Responder Con Cita
  #6  
Antiguo 14-07-2010
Avatar de ppb
[ppb] ppb is offline
Miembro Premium
 
Registrado: jun 2005
Ubicación: España
Posts: 109
Poder: 19
ppb Va por buen camino
Cita:
Empezado por ppb Ver Mensaje
Hasta donde recuerdo , creo que debes definir el gráfico primero :

GS*.....

y luego GS/.. para imprimir
Esto lo encontre en un documento antiguo.
Código:
PRINT #1, CHR$(&H1B);"U";CHR$(1);
PRINT #1, CHR$(&H1D);"/";CHR$(0);CHR$(&HA); ¬ Normal
PRINT #1, CHR$(&H1D);"/";CHR$(1);CHR$(&HA); ¬ Double width
Un saludo.
__________________
Because , I have a power.
Responder Con Cita
  #7  
Antiguo 21-07-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Hola, gracias por la aportación, he intentado esto

Código:
 //Definimos la gráfica.
Writeln(Impresora,chr(29)+chr(42)+chr(0)); //GS *
//Imprimimos.
Writeln(Impresora,chr(29)+chr(47)+chr(0)+chr(65)); //GS / 0 A Normal width
También he probado con las variantes que has dado, a usar GS * y luego ESC U 0 y GS / 0 A, pero nada.

Código:
 Writeln(Impresora,chr(29)+chr(42)+chr(0)); //GS *
 Writeln(Impresora,chr(27)+chr(85)+chr(1)); //ESC U 1
 Writeln(Impresora,chr(29)+chr(47)+chr(0)+chr(65)); //GS / 0 A Normal width
Ya no se me ocurre que probar porque en teoría está todo bien, según los datos del manual pero no reconoce el código de escape, salvo que se lance con su mini programa...

En fin. Gracias.

Última edición por Jab fecha: 21-07-2010 a las 17:36:58.
Responder Con Cita
  #8  
Antiguo 21-07-2010
Saklut Saklut is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
Saklut Va por buen camino
Puedes probar el programa PORTMON de www[punto]sysinternals[punto]com , la descripción dice:
Cita:
Portmon is an application that lets you monitor serial and parallel activity on your local system, or any computer on the network that you can reach via TCP/IP. It is the most powerful tool available for tracking down port-related configuration problems and analyzing application port usage.
No lo he probado, pero parece que es lo que necesitas...
Responder Con Cita
  #9  
Antiguo 29-07-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Hola, gracias amigo.
He instalado el programa y funciona, pero cuando lanzo el programita de la impresora que imprime en el puerto la cadena misteriosa, resulta que el PortMon bloquea la señal y se queda colgado el programita.

Si uso el puerto serie, que no está bloqueado por el otro programa, me empieza a escribir hasta que se bloquea también, pero sale esto hasta donde se puede

Código:
0.00005109	NVImg.exe	IRP_MJ_CREATE	Serial0	SUCCESS	Options: Open 	
0.00000313	NVImg.exe	IOCTL_SERIAL_SET_WAIT_MASK	Serial0	SUCCESS	Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING 	
0.00000098	NVImg.exe	IOCTL_SERIAL_SET_QUEUE_SIZE	Serial0	SUCCESS	InSize: 1024 OutSize: 1024	
0.00000211	NVImg.exe	IOCTL_SERIAL_PURGE	Serial0	SUCCESS	Purge: TXABORT RXABORT TXCLEAR RXCLEAR	
0.00000084	NVImg.exe	IOCTL_SERIAL_SET_TIMEOUTS	Serial0	SUCCESS	RI:-1 RM:0 RC:0 WM:0 WC:5000	
0.00000141	NVImg.exe	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
0.00000137	NVImg.exe	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
0.00000117	NVImg.exe	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
0.00000310	NVImg.exe	IOCTL_SERIAL_SET_WAIT_MASK	Serial0	SUCCESS	Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING 	
0.00000105	NVImg.exe	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
0.00000141	NVImg.exe	IOCTL_SERIAL_GET_BAUD_RATE	Serial0	SUCCESS		
0.00000196	NVImg.exe	IOCTL_SERIAL_SET_WAIT_MASK	Serial0	SUCCESS	Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING 	
0.00000128	NVImg.exe	IOCTL_SERIAL_GET_LINE_CONTROL	Serial0	SUCCESS		
0.00000000	NVImg.exe	IOCTL_SERIAL_WAIT_ON_MASK	Serial0			
0.00000120	NVImg.exe	IOCTL_SERIAL_GET_CHARS	Serial0	SUCCESS		
0.00000069	NVImg.exe	IOCTL_SERIAL_GET_HANDFLOW	Serial0	SUCCESS		
0.00000810	NVImg.exe	IOCTL_SERIAL_SET_BAUD_RATE	Serial0	SUCCESS	Rate: 9600	
0.00000373	NVImg.exe	IOCTL_SERIAL_SET_DTR	Serial0	SUCCESS		
0.00000248	NVImg.exe	IOCTL_SERIAL_SET_LINE_CONTROL	Serial0	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
0.00000089	NVImg.exe	IOCTL_SERIAL_SET_CHAR	Serial0	SUCCESS	EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13	
0.00000280	NVImg.exe	IOCTL_SERIAL_SET_HANDFLOW	Serial0	SUCCESS	Shake:9 Replace:80 XonLimit:256 XoffLimit:256
Lo malo que termina entrando en un bucle infinito, es normal, el hardware no le responde lo que está buscando...

En fin, esto es frustrante.

Gracias de todas maneras.
Responder Con Cita
  #10  
Antiguo 19-08-2010
carlosjimenez carlosjimenez is offline
Miembro
 
Registrado: ene 2010
Posts: 19
Poder: 0
carlosjimenez Va por buen camino
confirmame

Confirmame lo qe kieres es imprimir una imagen por un pto paralelo no entiendo bien que es lo que desea.
Responder Con Cita
  #11  
Antiguo 24-08-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Cita:
Empezado por carlosjimenez Ver Mensaje
Confirmame lo qe kieres es imprimir una imagen por un pto paralelo no entiendo bien que es lo que desea.
Hola, gracias por preguntar.
Si lees el hilo creo que está claro si sabes de lo que estamos escribiendo, se refiere a los códigos de escape que mediante una instrucción software genera un pulso mecánico en la impresora. Normalmente estas instrucciones se lanzan mediante el puerto de conexión de la impresora, da igual si es paralelo o serie, siempre funcionan. Existen unos estandarizados para la apertura del cajón que lanza un código y genera un pulso que permite la apertura mecánica del cajón portamonedas. Lo mismo sucedería para el corte automático.

El problema reside que para lanzar la rutina de impresión del logotipo previamente cargado en la memoria de la impresora, el código facilitado por el manual es incompleto. He realizado todo tipo de pruebas, mirado en muchas Webs y aunque hay alguna más completa que otra, no funcionan los códigos de escape facilitados, por eso entiendo que hay algún código que no he hecho.

PPB acertó bastante pero ese código tampoco va, no el código en sí, sino la secuencia, posiblemente sea una tontería, como lanzar previamente un código de inicialización, lo que fuera.

Lo que sí sé es que un distribuidor nacional de esas impresoras no lo conoce y su servicio técnico me indica que es igual que la estándar, algo que no es cierto.

Como conclusión, he decidido dejar el tema aparcado y buscar una solución aparte, imprimir mediante un report gráfico y lanzarlo con los drivers de la propia impresora. El problema es que, además de tener que instalar los drivers te limita muchísimo, ya que según el sistema operativo que tengas instalado, no te permite operar con el puerto serie o paralelo.
De hecho yo trabajo habitualmente contra el puerto y no necesito tener instalado ningún driver de impresora para imprimir un ticket, abrir el cajón, etc. eso lo hace compatible con el 100% de las impresoras.

Saludos.
Responder Con Cita
  #12  
Antiguo 24-08-2010
carlosjimenez carlosjimenez is offline
Miembro
 
Registrado: ene 2010
Posts: 19
Poder: 0
carlosjimenez Va por buen camino
ok gracias por tomar tu tiempo y contestar, nada espero que resuelva
Responder Con Cita
  #13  
Antiguo 25-08-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Cita:
Empezado por carlosjimenez Ver Mensaje
ok gracias por tomar tu tiempo y contestar, nada espero que resuelva
Gracias a ti por intentarlo.
Ayer estuve haciendo alguna prueba con el report gráfico pero es un lío, no sé que haré, he visto en sitios las impresoras como imprimen los logos y luego en formato texto el resto del ticket, pero bueno, no soy capaz de solucionar el problema...
Responder Con Cita
  #14  
Antiguo 25-08-2010
carlosjimenez carlosjimenez is offline
Miembro
 
Registrado: ene 2010
Posts: 19
Poder: 0
carlosjimenez Va por buen camino
a ponernos en contacto

Me gustaria dentro de los posible que nos pongamos en contacto por el msn y asi podemos entre los dos y par de amigos que tengo buscarle la vuelta a eso.

mi correo es carlosjimenez19@hotmail.com me puede agregar y asi podemos ver que se hace y podemos intercambiar ideas, si estas deacuerdo.
Responder Con Cita
  #15  
Antiguo 02-09-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Poder: 0
Jab cantidad desconocida en este momento
Hola Carlos, gracias por tu aportación, estos días estoy esperando qué solución me dan unos compañeros que tienen relación con el mayorista en España, a ver si pueden contactar con el fabricante, si me dan una solución viable la pondré aquí. En otro caso tengo la solución del Quickreport lanzado por los drivers de la impresora y luego posteriormente todo lo que venga, en este caso, es una mala solución pero no hay otra.

No uso el MSN, ni messenger, lo siento.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Impresion de tickets en FastReport c/ codigo de barras en impresora termica hmoner Impresión 1 01-04-2010 20:34:22
Impresión de recibos en impresora de tickets fiscales Hasar Mauro® Impresión 1 27-10-2008 03:04:51
impresion grafica mediante codigos de escape emimarz Impresión 6 06-09-2007 21:03:22
Impresión Codigos Escape Zebra LP 2844 comba Impresión 2 08-02-2006 22:46:47
Codigos Escape Impresora Sansumg serhasae Varios 3 05-09-2005 10:40:17


La franja horaria es GMT +2. Ahora son las 03:56:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi