Ver Mensaje Individual
  #18  
Antiguo 09-06-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
Post

Yo estoy a punto de iniciar un proyecto que incluira estas impresoras y lo había pensado mucho por el problema que tiene nuestro amigo el cual me resulta una completa ironía: Es mas díficil imprimir de la forma más simple.

Por ahí vi que te recomendaro usar secuencias de escape, lo cual me parece es tu mejor solución pero tienes que considerar que:

- con el Writeln de Delphi las secuencias de escape (#27) se descartan antes de llegar a la impresora (más bien lo hace windows) por lo que no importa que tantas secuencias mandes antes del texto, a la impresora solo llega el texto "pelón".

-Tendrás que imprimir directamente a la impresora, pero sin pasar por Windows

Lo puedes hacer de esta forma:
Código Delphi [-]

Procedure PWrite(s:String);
var PT :Integer;
     P   :Pchar;
Begin
   PT := FileOpen('lpt1',fmOpenWrite ); // Abrimos la impresora como un     archivo
   P   := PChar( s ); //convertimos la  cadena a un PChar
   FileWrite(PT,P^,length( s )); //escribimos a la impresora
   FileClose(PT);//cerrar el archivo de la impresora
end;

Uso:

// ..
// Definimos algunas constantes para las secuencias  de escape
const pNewLn    = #10 +#13;      // Salto de linea
         pBold       = #27 + 'E';       // Activar negrita
        pBoldOff     = #27 + 'F';      //Desactivar negrita
        pDouble     = #27 + 'W' +'1';  //Activar doble Ancho
        pDoubleOff = #27 + 'W' +'0'; //Desactivar doble ancho
        pFormSize  = #27 + 'C' +#10;//Definir tamaño de la hoja en líneas (en este caso es 10, pero se puede cambiar por el que necesitemos
        pFF= #12; // Salto de página

begin
  PWrite( pForm );
  PWrite( pBold + 'Pagina 1 ' +pBoldOff);
end;

Es un código muy simple pero de esta forma las secuencias de escape si son pasadas tal cual a la impresora. Ojo, como no estamos usando Windows para ello, no tenemos ninguna función del driver disponible por lo que tendremos que checar por nuestra cuenta si hay papel, tinta, etc. Pero para el caso de impresoras de ticket no es tan dificil.

La colocación de coordenadas la puedes usar con la secuencia de escape correspondiente (no me acuerdo ahorita cual es) hay una para mover la cabeza en X y otra en Y, tambien puedes simular esto enviando saltos de línea para las Y e imprimiendo espacios en blanco para las X.

A mi me funcionó de maravilla y para este tipo de impresión se me hace la forma mas sencilla. Además no importa si tienes el driver o no, de hecho funciona aunque no tengas ninguno instalado en Windows.

Ojala te sirva
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita