Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Epson TM-T88ii (https://www.clubdelphi.com/foros/showthread.php?t=70775)

Ruso777 10-11-2010 05:09:03

Epson TM-T88ii
 
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

Cita:

Empezado por Ruso777 (Mensaje 381892)
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

Epson TM-T88ii
 
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

Epson TM-T88ii
 
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

Cita:

Empezado por Ruso777 (Mensaje 381892)
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

Epson TM-T88ii
 
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

Procedimiento
 
Ah´i va. Disculpas por la demora.
Código Delphi [-]
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.[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]Saludos[/font]

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


La franja horaria es GMT +2. Ahora son las 23:55:30.

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