PDA

Ver la Versión Completa : Epson TM-T88ii


Ruso777
10-11-2010, 05:09:03
Hola, estoy intentando realizar un corte de papel luego de imprimir en la impresora termica epson TM-T88ii
Podrian enviarme algun ejemplo de como hacer esto en Delphi?

Saludos y gracias

BlueSteel
10-11-2010, 21:42:40
Hola, estoy intentando realizar un corte de papel luego de imprimir en la impresora termica epson TM-T88ii
Podrian enviarme algun ejemplo de como hacer esto en Delphi?

Saludos y gracias

Hola...

Yo tengo una Micro Star... y se setea para que el corte del papel sea automático... revisa si tiene alguna caracteristica similar..

salu2:D:p

Ruso777
10-11-2010, 22:01:06
Hola, gracias por tu respuesta.
Tengo seteada la impresora para que la configuración de papel sea con corte parcial automático.
Cuando imprimo una pagina de prueba, funciona correctamente.
Lamentablemente no logro reproducir este comportamiento desde la aplicación Delphi.

Probé con TPrinter.BeginDoc y TPrinter.EndDoc y tambien con envio directo de texto a la impresora (Assign(file) y Writelns)
El codigo que encontre en los foros (que supuestamente funciona) seria el Writeln(file, #27#105) pero no hay efecto salvo imprimir "caracteres extraños" al final del reporte.

Cañones
10-11-2010, 22:19:51
Hola. Yo ya estuve luchando con esa impresora
Si me esperas en unas horas te mando el comando escape para que haga el corte de papel
También te puedo mandar por mail un pdf con los comandos escapes.
Saludos.

Ruso777
10-11-2010, 22:26:55
Muchisimas gracias, avisame si ves el mail registrado en mi usuario o te lo tengo que enviar por aqui

Saludos

Cañones
10-11-2010, 22:27:52
Hola, estoy intentando realizar un corte de papel luego de imprimir en la impresora termica epson TM-T88ii
Podrian enviarme algun ejemplo de como hacer esto en Delphi?

Saludos y gracias

En este link http://www.clubdelphi.com/foros/showthread.php?t=31186 está la respuesta al final de todo.

Ruso777
11-11-2010, 15:06:16
Muchas gracias por la respuesta.

He probado con esos códigos pero sigue sin funcionarme.
Copio el código utilizado
...
Writeln(file, line);
Writeln(file, #27#105);
System.CloseFile(file);

Saludos

Ruso777
11-11-2010, 15:08:21
Aclaración: en lugar de cortar el papel, luego de la ultima linea que imprimo aparecen 2 caracteres extraños.
Pareciera que en lugar de interpretar el comando, esta tomando el #27#105 como un string adicional a imprimir...

Cañones
11-11-2010, 20:35:38
No pude mandarte las cosas por correo. Ahora estoy en el trabajo y no tengo nada de eso, perp ni bien pueda te paso los camandos escapés y un procedimeinto completo de como imprimo.
Saludos

Cañones
12-11-2010, 04:10:50
Ah´i va. Disculpas por la demora.

procedure TfrmQRArticulos.ver;
var
impresora:TextFile;
sProducto, sStock, sPrecio:string;
begin
ibqArticulos.Close;
ibqArticulos.Open;
// ------------------------------Impresion----------------------------------//
try
AssignFile(Impresora,'LPT1');
rewrite(Impresora);
Writeln(Impresora,#27#64);
//--------------- HEADER --------------------------------//
WriteLn(Impresora,'Fecha: '+DateTimeToStr(Now));
//------------ BODY -----------------//
Writeln(Impresora,#27#33#128'PRODUCTO'#27#33#0+' '+
#27#33#128'STOCK'#27#33#0+#27#33#128' PRECIO'#27#33#0);
//------------------------------------------------------------------------//
ibqArticulos.First;
while not ibqArticulos.Eof do
begin
sProducto:=ibqArticulos.Fields[0].AsString;
sStock:=ibqArticulos.Fields[1].AsString;
sPrecio:=FormatFloat('0.00',ibqArticulos.Fields[2].AsFloat);
Writeln(Impresora,sProducto+sStock+sPrecio);
ibqArticulos.Next;
end;
//------------ FOOTER----------------//
//------------------------ Avance de papel y corte -----------//
//------- aca va el corte. Por debajo queda en la siguiente -----------//
WriteLn(Impresora,'');
WriteLn(Impresora,'');
WriteLn(Impresora,'');
WriteLn(Impresora,'');
Writeln(Impresora,#27#105); //Esto 'CORTA el TICKET'
finally
CloseFile(Impresora); //cerrar el archivo
end;
end;



Cualquier consulta a disposición.

Ruso777
13-11-2010, 05:35:00
Gracias por tu respuesta.
Lamentablemente el problema que tengo con el codigo que me enviaste es que la impresora no usa de manera directa el port LPT1 sino que instala un puerto virtual que mapea al LPT1 (llamado ESDPRT001).
Por lo tanto no puedo realizar la operacionAssignFile(Impresora,'LPT1');
sino que debo usar
AssignPrn(Impresora);

Utilizando esta segunda instruccion el resultado es el mismo, caracteres extraños en lugar del corte.

Probe cambiar el port al LPT1 pero al ejecutar ignora el trabajo de impresion sin dar errores.

Cañones
15-11-2010, 14:35:20
Como? no entendí. La que yo usé solo tenía conexión por lpt.
Lo que hace ese código es imprimir directamente en el puerto. No hace falta driver ni nada.
Cualquier cosa lo vemos.
Saludos.

Ruso777
15-11-2010, 15:50:51
Aclaro un poco mas; cuando instale la impresora, esta se instala en un puerto que crea la instalacion del driver (llamado ESDPRT001).
Leyendo el manual del driver veia que este puerto creado internamente mapea al LPT1 (por lo cual si tengo otra impresora asignada al LPT1, esta impresora no funciona).
Si voy a las propiedades de la impresora, el puerto asignado es el ESDPRT001, intente cambiarlo al LPT1 pero deja de funcionar.
Probe tu codigo utilizando AssignFile(Impresora,'LPT1'); en este caso me dio error I/O 1167 (dispositivo no conectado) lo cual seria logico ya que no hay nada directamente conectado al LPT1.
Probe utilizando AssignFile(Impresora,'ESDPRT001'); y en este caso no dio error pero la impresora no imprime. Es como que ignora lo enviado a traves del puerto o faltaria algun comando que permita realizar la impresion.Saludos

Cañones
15-11-2010, 17:42:03
Ok. En mi caso solo medieron la impresora y nada más para que la haga imprimir con mi sistema.
No use drivers ni nada. Podes probar el código que te pase desinstalando los drivers.
Otra cosa no se me ocurre.
Saludos.

Ruso777
16-11-2010, 01:55:38
En este caso no puedo hacer eso ya que necesito tener a la impresora en red asi que necesito el nombre que obtiene al instalarse para poder mapearla en las maquinas que existen en la red.

Muchas gracias por tu ayuda.

dado
25-11-2010, 21:46:15
Tienes que usar el font de control y enviar algunos caracteres :

Font.Name := 'control';
TextOut(0,200,'g'); // cortar ticket

Busca con google "Epson control font" y encontraras mucha informacion de como controlar TODO acerca de las miniprinters