Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir en una impresora conectada al puerto serie (https://www.clubdelphi.com/foros/showthread.php?t=2874)

Motoboy 11-08-2003 16:58:42

Imprimir en una impresora conectada al puerto serie
 
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 18:07:06

Aquí tienes un hilo que habla de imprimir en un puerto serie http://www.clubdelphi.com/foros/arch...c.php?t=15522, y a simple vista es igual que imprimir en un puerto paralelo.
En este hilo http://www.clubdelphi.com/foros/show...ght=createfile te muestro como escribir en un puerto serie.

Saludos!

Motoboy 11-08-2003 20:38:34

Voy a intentar hacer una prueba esta noche. Ya comentaré los resultados.


Gracias por todo.

Motoboy 12-08-2003 10: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 11: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

Código:

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 13: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 17: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 22: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!!!


La franja horaria es GMT +2. Ahora son las 14:48:33.

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