PDA

Ver la Versión Completa : Imprimir etiqueta con codigos escape


comba
17-07-2006, 19:55:02
Hola a todos

Siempre he utilizado para imprimir etiquetas con su codigo de barras y demas, quickreport y delphi 6. Hasta ahora todo funcionaba bien.

Pero ahora tengo que hacerlo através de los codigos de escape de la impresora. (Zebra Lp 2844).

Tengo los códigos en un fichero txt.

FK"*"
N
B60,8,0,2C,3,8,232,N,"0000001231542361416795001001"
A100,254,0,4,1,1,N,"000000-000000-1416795001-123564"
A540,300,0,3,1,1,N,"C.POSTAL"
.
.

Pero no se como enviarselo a la impresora.
He buscado por muchos sitios incluyendo el manual de programación de dicha impresora pero no encuentro como enviar una linea y que la impresora la interprete.

Es verdad que si desde ms-dos le digo print etiqueta.txt me la imprime pero por el puerto LPT1 y tengo la necesidad de imprimirla por el USB.

Si alguién me puede dar una pista. Gracias.

nemesio
17-07-2006, 20:09:12
Si buscas en los foros, vas a encontrar hilos que hablan de como eviar un texto a una impresora por un puerto USB. Una de las que recuerdo haber leído es que compartas la impresora y luego en vez de escribir el Puerto, colocas el nombre que tiene la impresora compartida.

Suerte.

comba
17-07-2006, 23:23:52
Ya lo intenté pero no me funcionó.

Gracias.

nemesio
18-07-2006, 00:55:42
Bueno, yo he impreso de esa manera y me ha funcionado. Déjame hacer unas pruebas y cualquier cosa te aviso.

Suerte.

basti
18-07-2006, 01:01:20
Puedes usar el procedimiento AssignPrn y sacando el nombre de TPrinter:


var
f : textfile;

begin
pr := TPrinter.Create;
printer.PrinterIndex := pr.Printers.IndexOf('aquí el nombre de la impresora');
AssignPrn(f);
Rewrite(f);

write(f, 'lo que quieras imprimir');


closeFile(f);
pr.free;
end;

comba
03-08-2006, 19:43:04
De esta forma envío el archivo con los códigos de escape y funciona muy bien y muy rápido.


procedure TForm2.PrintFile(const sFileName: string);
const
iBufferSize = 32768;
var
Count, BytesWritten: Cardinal;
hPrinter, hDeviceMode: THandle;
sDevice : array[0..255] of char;
sDriver : array[0..255] of char;
sPort : array[0..255] of char;
DocInfo: TDocInfo1A;
f: File;
pBuffer: Pointer;
begin
Printer.PrinterIndex := etiqueta.ItemIndex ;
Printer.GetPrinter(sDevice, sDriver, sPort, hDeviceMode);
if not WinSpool.OpenPrinter(@sDevice, hPrinter, nil) then
exit;
DocInfo.pDocName := 'Etiqueta;
DocInfo.pDatatype := 'RAW';
DocInfo.pOutputFile := nil;

if StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
begin
WinSpool.ClosePrinter(hPrinter);
exit;
end;
if not StartPagePrinter(hPrinter) then
begin
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
exit;
end;
System.Assign(f, sFileName);
try
Reset(f, 1);
GetMem(pBuffer, iBufferSize);
while not eof(f) do
begin
Blockread(f, pBuffer^, iBufferSize, Count);
if Count > 0 then
begin
if not WritePrinter(hPrinter, pBuffer, Count, BytesWritten) then
begin
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
FreeMem(pBuffer, iBufferSize);
exit;
end;
end;
end;
FreeMem(pBuffer, iBufferSize);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
finally
System.Closefile(f);
end;
end;

procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
PrintFile('C:\........\fichero.txt');
end;

PepeLolo
05-08-2006, 12:11:49
Hola a todos

Siempre he utilizado para imprimir etiquetas con su codigo de barras y demas, quickreport y delphi 6. Hasta ahora todo funcionaba bien.

Pero ahora tengo que hacerlo através de los codigos de escape de la impresora. (Zebra Lp 2844).

Tengo los códigos en un fichero txt.

FK"*"
N
B60,8,0,2C,3,8,232,N,"0000001231542361416795001001"
A100,254,0,4,1,1,N,"000000-000000-1416795001-123564"
A540,300,0,3,1,1,N,"C.POSTAL"


uff.., que pena, :o he utilizado esa impresora hece un mes en un proyecto en el curro, si el lunes me lo recuerdas te adjunto el código.:)

un saludo.