Epson TM-T70

08/11/2007 - 18:12 por Catalin Lungu | Informe spam
Hola,
Tengo que hacer una clase para impresión de tickets con esta impresora
termica. No voy a usar ningún driver solo sequencias de escape que voy a
enviar por el COM2. El tema es que no me funciona mas que la impresión
estandar, no puedo modificar la fuente, no puedo poner negrita, subrayado
(0x1B 0x2D 0x31), no puedo inicializar la impresora (0x1B 0x40) y recoger
información de los sensores de la impr.

Tengo todas las secuencias de escape pero no soy capaz de seguir adelante.
Hay alguien que tenga experiencia con este tipo de programación?

Gracias,
Catalin

Preguntas similare

Leer las respuestas

#11 RFOG
09/11/2007 - 16:01 | Informe spam
"Catalin Lungu" escribió en el mensaje de
noticias:
No funciona porque uso OpenNETCF para la comunicación serial. Con lo del
";" quiero decir que está en el codigo qbasic y no se si hay que ponerlo o
no? Y si hice la prueba y lo envio lo recibo. Tienes por casualidad los
codigos de escape para la IBM Proprinter tal vez sea eso?

Gracias.



Pues no los tengo. :-( De eso hace ya mucho tiempo y sólo conservo (y encima
en papel) los de la Epson... Aunque si el manual de la impresora te los da,
es que son esos.

Lo del punto y coma sigo sin entenderlo. En C# se deben terminar todas las
sentencias con ; aunque haya varias en una misma línea.

Pues ya no sé qué decirte. A veces (y sólo a veces), los relojes de las
placas no tienen divisor exacto para controlar las UARTs, y se pueden
producir ciertos desfases, como que la velocidad real sea de 115205 en lugar
de 115200 y que tu impresora sea demasiado pejigueras.

Es que no se me ocurre nada más. Hazlo directamente con el componente
SerialPort del .NET. O con Win32, mediante CreateFile, WriteFile, etc...

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
Vive sólo para tí si puedes, pues sólo para tí si mueres, mueres.
Respuesta Responder a este mensaje
#12 Catalin Lungu
12/11/2007 - 09:33 | Informe spam
Buenos dias,
Siento molestarte de nuevo. Se me ocurrio hacer un bucle de 00 a FF por la
impresora y me los imprime todos pero no es capaz de interpretar las
sequencias que le paso. Asi que en cuanto llega al fin de la linea la
imprime y pasa a la siguiente. Que puede ser?

Slds,
Catalin
Respuesta Responder a este mensaje
#13 RFOG
12/11/2007 - 12:09 | Informe spam
"Catalin Lungu" wrote in message
news:%
Buenos dias,
Siento molestarte de nuevo. Se me ocurrio hacer un bucle de 00 a FF por la
impresora y me los imprime todos pero no es capaz de interpretar las
sequencias que le paso. Asi que en cuanto llega al fin de la linea la
imprime y pasa a la siguiente. Que puede ser?

Slds,
Catalin




A ver, hagamoslo pasito a pasito.

EL código de escape es 27 en decimal. Luego está el parámetro. Una secuencia
de escape podría ser 27,87, que pone en ancho doble (mira a ver si está en
tu lista de códigos de escape). Para enviar un salto de línea y retorno de
carro, tienes que enviar un 11,13, entonces:

byte[] anchoDoble=new byte[] {27,87};
byte[] nuevaLinea=new byte[] {11,13};
byte[] hola=new byte[] {'h','o','l','a'};

serial.Write(anchoDoble,0,2);
serial.Write(hola,0,4);
serial.Write(nuevaLinea,0,2);
serial.Write(hola,0,4);

debería imprimir dos 'hola' en formato ancho en dos líneas.

Haz la prueba y me dices. Create un proyecto vacío, añade un serialport, lo
configuras con los valores adecuados y con el evento de clic de un botón
envías eso.


Hablando del Papa de Roma:
http://knowledgebase.lexmark.com/pu...0Codes.pdf
(los códigos para la emulación de la IBM que te comenté hace tiempo).

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
Tu secreto debe pasar a formar parte de tu sangre.
Respuesta Responder a este mensaje
#14 Catalin Lungu
12/11/2007 - 13:17 | Informe spam
Creo que las secuencias están mal porque investigando mas he llegado a esto.

PStar.Write("\x1B\x40"); //Initializes the printer (ESC @)
System.Threading.Thread.Sleep(200);
PStar.Write("\x1B!0"); //Specifies font A (ESC !)
System.Threading.Thread.Sleep(200);
PStar.Write("January 14, 2002 15:00\x0A");
PStar.Write("\x1B!\x01"); //Selects font B
PStar.Write("TM-U210B $20.00\x0A");
PStar.Write("\x0A"); //Line feeding (LF)
PStar.Write("\x1B!\x11"); //Selects double-height mode
PStar.Write("TOTAL $58.00 \x0A");
PStar.Write("\x1B!\x00"); //Cancels double-height mode
PStar.Write("\x0A");
PStar.Write("CHANGE $ 2.00\x0A");
PStar.Write("\x1DV\x42\x00"); //Feeds paper & cut
//Drawer Kick (ESC p)
PStar.Write("\x1B\x70\x00\x3C\x78");

Con esto imprimo un ticket pero es muy poco. La verdad es que lo que yo
tengo en mi documentación no tiene mucho que ver con lo que hay arriba.

Puse lo que me dijiste y nada, no hace nada.
Respuesta Responder a este mensaje
#15 RFOG
12/11/2007 - 13:35 | Informe spam
"Catalin Lungu" wrote in message
news:%
Creo que las secuencias están mal porque investigando mas he llegado a
esto.

PStar.Write("\x1B\x40"); //Initializes the printer (ESC @)
System.Threading.Thread.Sleep(200);
PStar.Write("\x1B!0"); //Specifies font A (ESC !)
System.Threading.Thread.Sleep(200);
PStar.Write("January 14, 2002 15:00\x0A");
PStar.Write("\x1B!\x01"); //Selects font B
PStar.Write("TM-U210B $20.00\x0A");
PStar.Write("\x0A"); //Line feeding (LF)
PStar.Write("\x1B!\x11"); //Selects double-height mode
PStar.Write("TOTAL $58.00 \x0A");
PStar.Write("\x1B!\x00"); //Cancels double-height mode
PStar.Write("\x0A");
PStar.Write("CHANGE $ 2.00\x0A");
PStar.Write("\x1DV\x42\x00"); //Feeds paper & cut
//Drawer Kick (ESC p)
PStar.Write("\x1B\x70\x00\x3C\x78");

Con esto imprimo un ticket pero es muy poco. La verdad es que lo que yo
tengo en mi documentación no tiene mucho que ver con lo que hay arriba.

Puse lo que me dijiste y nada, no hace nada.





Joer, es que lo de arriba no te va a funcionar en la vida. ¡¡¡Estás enviando
Strings UNICODE!! Es decir, estás enviando la secuencia: 0x00,0x1b,0x00,0x40
etc y deberías enviar 0x1b,0x40...

¿Usando lo que te he puesto, es decir enviando cadenas de bytes (ojo: byte,
no char, ni string, ni nada de eso) no te va? Pues sinceramente, si lo que
te he puesto no te va, algo más hay mal. ¿Protocolo? ¿Cables? Es decir,
XON/XOFF, CTS/RTS y los correspondientes cables bien puestos?

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Mi blog sobre literatura: http://rfog.blogsome.com
Libros, ciencia ficción y programación
Tu secreto debe pasar a formar parte de tu sangre.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida