PDA

Ver la Versión Completa : Imprimir en una impresora conectada al puerto serie


Motoboy
11-08-2003, 15:58:42
Hola, necesito que alguien me ayude.

Tengo que imprimir en una impresora que está conectada al com2 y no se cómo hacerlo. Me he bajado unos componentes pero siempre hablan de modem. El caso es que no consigo imprimir.

¿Conocéis algún componente para imprimir en una impresora conectada al com2?. ¿sabéis el código que tengo que poner?.

Otra cosa, la impresora es de tickets y está conectada a una portamonedas. Según el manual toda los comando de la impresora viene en hexadecimal. No sé cómo mandarle ni texto ni código en hexadecimal.

Necesito ayuda urgente!!!

delphi.com.ar
11-08-2003, 17:07:06
Aquí tienes un hilo que habla de imprimir en un puerto serie http://www.clubdelphi.com/foros/archivo/viewtopic.php?t=15522, y a simple vista es igual que imprimir en un puerto paralelo.
En este hilo http://www.clubdelphi.com/foros/showthread.php?s=&threadid=2633&highlight=createfile te muestro como escribir en un puerto serie.

Saludos!

Motoboy
11-08-2003, 19:38:34
Voy a intentar hacer una prueba esta noche. Ya comentaré los resultados.


Gracias por todo.

Motoboy
12-08-2003, 09:30:23
Con este código me daba un access violation. Es uno de los hilos que me comentabas, con el otro no me he aclarado.

procedure Tform1.Button1OnClick(sende:Tobject);
Var
i:Integer;
archivo:TextFile;
cadena:string;

begin
Assign(archivo,'COM1');
reset(archivo);
// esta cadena es la misma que se recomienda en el manual de la impresora para lenguaje cobol
cadena:=chr$(27)+chr$(99)+chr$(4+chr$(4);
writeln(archivo,cadena);
writeln('Esta es una prueba de impresión de la función Slip');
end;

Al final he utilizado la opción "tprinter" del delphi y he impreso bien. Qué problema tengo ahora?.

Para abrir el portamonedas tengo que mandarle un código hexadecimal a la impresora (<ESC>pmt1t2). yo utilizo #$1B + ... El problema es que según recuerdo $1B es el escape pero la impresora recibe el código 2E + ...

Puede ser que cómo no tengo nada en el config.sys no esté preparada la página de códigos??????

Abriré algún día el portamonedassss????. Por lo menos he conseguido imprimir. ;)

chutipascal
12-08-2003, 10:38:18
En lugar de querer imprimir directamente en el puerto, instala la impresora en el windows para tener una cola y luego imprimes sobre la cola con algo por el estilo


Pasa el nombre de la cola a printername.....

procedure RawPrinter(PrinterName:String);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
S:=String;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do begin
pDocName := PChar('Impresión de pruebas');
pOutputFile := nil;
pDataType := 'RAW';

end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
S:='HOLA ESTO ES UNA PRUEBA';
WritePrinter(Handle, PChar(S), Length(S), N);
S:='LINEA 2';
WritePrinter(Handle, PChar(S), Length(S), N);
S:='LINEA 3';
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle); // Finaliza Pagina
EndDocPrinter(Handle); // Finaliza Documento
ClosePrinter(Handle); // Cierra el manipulador
end;


De ese modo podras imprimir asumiendo tu el control (los escapes) de la impresora sin complicarte demasiado con la programación en puertos series (que de una versión a otra de W dejas de poder usar formas sencillas de imprimir), además el codigo te sirve para impresoras serie, paralelo y USB, todo un chollo!

Motoboy
12-08-2003, 12:28:57
Hola Chutipascal,

He copiado el código en el Delphi7 pero las funciones OpenPrinter, pDocName, StartDocPrinter, etc que no me chutan. Es posible que el código haya que tocarlo para el delphi 7?.

delphi.com.ar
12-08-2003, 16:17:09
Particularmente prefiero el código de este hilo http://www.clubdelphi.com/foros/sho...ight=createfile .... ¡Y no es porque lo hice yo!

Saludos!

zvf
05-01-2007, 21:23:19
HOLA!!
Estaba viendo el codigo que escribieron arriba, intente correrlo y no he podido, necesita alguna libreria?

Y tambien,
Como hago para instalar la impresora en el windows para tener una cola?
Si no tengo una cola, puedo pasarle a la funcion RawPrinter, el nombre de la impresora.

GRACIAS POR SU ATENCION Y SU AYUDA

SALUDOS!!!