Delphi - TSU

 
Vista:

TSU

Publicado por Yair2003 (1 intervención) el 28/09/2004 03:41:24
Hola como estan.

Mi nombre es Adrián. Soy novato en esto de la programación en Delphi y tengo
el siguiente problema.
Estoy tratando de imprimir unas sentencias de escape a una impresora térmica
Datamax con el siguiente
código:

PrinterSetupDialog1.Execute;
//Impriime
if PrintDialog1.Execute=True Then
begin
with Printer do
begin

MiString := Chr(2) + 'L' + Chr(13) + Chr(10);
MiString := MiString + 'H07' + Chr(13) + Chr(10);
MiString := MiString + '1e62100011000050590PCS' + Chr(13) + Chr(10);
MiString := MiString + 'E' + Chr(13) + Chr(10);

AssignPrn(MyFile);
Rewrite(MyFile);

Writeln(MyFile,Chr(2) + 'L' + Chr(13) + Chr(10) );
Writeln(MyFile,'H07' + Chr(13) + Chr(10) );
Writeln(MyFile,'1e62100011000050590PCS' + Chr(13) + Chr(10) );
Writeln(MyFile,'E' + Chr(13) + Chr(10)); *)

Write(MyFile, MiString);
System.CloseFile(MyFile);

lo que da como resultado algo como esto:
L
H07
1e62100011000050590PCS
E
Que se supone al enviarlo a la impresora térmica debe imprimir un código de
barras, pero no es así ya que el resultado que imprime son las mismas
cadenas, esto lo se porque guarde las sentencias en un archivo de terxo y lo
mande a imprimir desde MSDOS y si imprimime el código. Supuse entonces que
probablemente Delphi estaba tomando las sentencias como gráficos, por lo que
utilize un componente RichEdit y consu propiedad de PlainText:=True, algo
como esto:

RichEdit1.PlainText := True;
RichEdit1.Text := '' + 'L' + Chr(13) + Chr(10) + 'H07' +
Chr(13) + Chr(10) + '1e62100011000050590PCS' +
Chr(13) + Chr(10) +'E' + Chr(13) + Chr(10);
RichEdit1.Print('Ejemplo');

Pero obtuve el mismo resultado, de que no imprime el código pero si las
sentencias como texto enb la etiqueta.

Alguien podría decirme como puedo enviar estas cadenas para que sean
tratadas como texto puro y pueda imprimir el código de barras desde mi
aplicación o me pueden indincar de que otra forma puedo mandar a imprimir
estas sentencias ...

Espero que me puedan ayudar, por que me estoy desespendao y no hayo la
solucción.

De antemano Gracias.

AMR
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:TSU

Publicado por Juan Carlos Rodríguez (7 intervenciones) el 28/09/2004 10:17:31
¿Qué tipo de conexión tiene la impresora? Imagino que la conexión es por puerto en serie, ya que es lo habitual en las impresoras de tickets. Y la segunda pregunta, ¿Cómo has configurado la impresora en windows? No conozco la impresora, pero si es una impresora de ticket NO debes configurarla como impresora de texto en Windows, sino que debes enviar lo comandos directamente al puerto en serie.

Para esto último, debes seguir los siguientes pasos:

1. Abrir el puerto de comunicaciones con CreateFile (API de Windows)
2. Enviar los caracteres con TransmitCommChar (API de Windos)
3. Cerrar el puerto.

También puedes buscar algún componente que acceda al puerto en serie y pasar de la API de Windows. Seguro que alguno gratuito habrá por ahí.

A mi me pasaba lo mismo hasta que me dí cuenta del error. En MSDOS te funciona porque envía la información directamente al puerto en serie, en lugar de ser windows el que administre la impresión.

Un saludo, Juan Carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:TSU

Publicado por Diego Romero (636 intervenciones) el 28/09/2004 12:19:12
Windows SIEMPRE usa el modo gráfico para imprimir lo que sea, esta característica se la da el propio driver de la impresora. El que te imprima las cadenas literales que le envías es obvio porque Windows separa lo que quieres imprimir de los caracteres de control de la propia impresora, no importa cómo se lo envíes.
Lo que te sugiero es que obligues a Windows a saltarse el driver de la impresora y enviar caracteres directamente. Se puede hacer usando APIs pero mejor si álguien más ya lo ha hecho, y de hecho alguien ya lo hizo:
http://www.torry.net/pages.php?id=193
(TRawPrint)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar