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

#1 RFOG
08/11/2007 - 20:17 | Informe spam
"Catalin Lungu" wrote in message
news:
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




¿Como las envías? Si envías strings no te va a funcionar nunca, ya que son
cadenas UNICODE y tienen un tamaño de 2 bytes. La forma de hacer eso es
mediante arrays de bytes.

Supongo que enviando Strings podría funcionarte porque si no te sales del
conjunto ASCII, el segundo byte siempre es cero... Y la impresora lo
ignorará.

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
#2 Octavio Hernandez
09/11/2007 - 00:51 | Informe spam
Catalin,

Mira lo que dice Rafa, puede q con eso te baste.
Mira también este documento sobre impresión directa:

http://support.microsoft.com/kb/322091

Slds - Octavio


"Catalin Lungu" wrote in message
news:
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

Respuesta Responder a este mensaje
#3 Catalin Lungu
09/11/2007 - 09:17 | Informe spam
Gracias a los por contestar.
No creo que me vale con eso, porque es una simple comunicación serie. En el
otro lado podria haber cualquier otro dispositivo, que no sea ni impresora.
Los datos los envio de la siguiente forma

Para texto uso esta función.
public void Write(string txt)
{
byte[] outputData;
byte[] Data;
UTF8Encoding temp = new UTF8Encoding();
outputData = temp.GetBytes(txt);
Data = new Byte[1];
for (int i=0; i<outputData.Length; i++)
{
switch ((int)outputData[i])
{
case 195: Data[0] = (byte) outputData[i];
break;
case 145: Data[0] = (byte) 165; // Ñ
break;
case 177: Data[0] = (byte) 164; // ñ
break;
default: Data[0] = outputData[i];
break;
}
if (Data[0] != 195)
{
PStar.Output = Data;
}
}
}

Para comandos esta.
public void WriteByte(byte dato)
{
byte[] Data;
Data = new Byte[1];
Data[0] = dato;
PStar.Output = Data;
}

La configuración del puerto es la siguiente.
public Printer()
{
buffer = new byte[MAX_BUFFER];
BorraBuffer();
DPS = new HandshakeXonXoff();
DPS.AbortOnError = false;
PStar = new Port("COM2:", DPS);
PStar.RThreshold = 1;
PStar.InputLen = 0;
PStar.SThreshold = 1;
PStar.Settings.StopBits=StopBits.one;
PStar.Settings.BaudRate=BaudRates.CBR_115200;
PStar.Settings.Parity=Parity.none;
PStar.DataReceived += new
OpenNETCF.IO.Serial.Port.CommEvent(PStar_DataReceived);
}

También me funciona el linefeed (0x0A)
Con otra impresora si que me funciona pero con esta no. alguna idea?

Gracias,
Catalin
Respuesta Responder a este mensaje
#4 Catalin Lungu
09/11/2007 - 09:29 | Informe spam
Se me olvido deciros que trabajo en VC2003, .NetFramework 1.1 sobre una PDA
WinCE 4.2
Respuesta Responder a este mensaje
#5 RFOG
09/11/2007 - 10:36 | Informe spam
"Catalin Lungu" wrote in message
news:
Gracias a los por contestar.
No creo que me vale con eso, porque es una simple comunicación serie. En
el otro lado podria haber cualquier otro dispositivo, que no sea ni
impresora. Los datos los envio de la siguiente forma

Para texto uso esta función.
public void Write(string txt)
{
byte[] outputData;




A simple vista lo estás haciendo bien.

Baja la velocidad de 115000 a algo menos tanto en tu programa . Es posible
que escribiendo desde un dispositivo embebido más la sobrecarga del .NET esa
velocidad sea demasiado rápida para el dispositivo y se produzcan retardos
que la impresora no sea capaz de interpretar.

Si aun así no funcionara (y sí funciona con otros modelos) también podría
ser que esa impresora en concreto estuviera mal.
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida