PDA

Ver la Versión Completa : Delphi puerto paralelo


Mariolarr
23-07-2007, 09:00:27
Hola, soy nueva en el foro, así que espero que mi pregunta sea clara, a ver...
Me gustaria saber como puedo mandar a imprimir por puerto paralelo de una impresora términa el contenido de una ristra(donde un texto viene expresado por 121100102800760HOLA), algun componente que sea necesario, no se...
es la impresion de etiquetas. No se si me he expresado con claridad.
Gracias de antemano. ;)

ElDioni
23-07-2007, 10:12:22
http://www.clubdelphi.com/foros/showthread.php?t=34872&highlight=impresion+directa

afxe
23-07-2007, 10:19:15
Este es un ejemplo simple para que empieces:

procedure Imprime;
var
PT: integer;
P : PChar;
begin
PT := FileOpen('LPT1', fmOpenWrite);
if PT > 0 then begin
P := 'Prueba de impresion' + #10 + #13;
FileWrite(PT, P^, Length(P));
P := #12; // Salto de página
FileWrite(PT, P^, Length(P));
FileClose(PT);
end else begin
ShowMessage('No he podido acceder a la impresora.');
end;
end;



Esto manda caracteres a la impresora directamente, es decir, impresión en modo texto, a la antigüa usanza, usando la unidad printers imprimirás en modo gráfico, más lento, pero te dará más posibilidades.

Te hará falta echar un ojo a la función CharToOem para que se te impriman bien algunos caracteres, por la diferencia de la tabla de caracteres entre windows y las impresoras.

Saludos.

Mariolarr
23-07-2007, 10:37:00
Gracias pero creo que no me habeis entendido chicos porque lo que quiero no es imprimir el texto que contiene un fichero ni el de una ristra sino la interpretacion del contenido, por ejemplo 121100105650140REMITENTE, imprimira remitente en las coordenadas indicadas (x,y) con el tipo y tamaño de fuente indicados (con la numeración), ... Se que con puerto serie un componente que funciona es TConPort pero en puerto paralelo no se.

Gracias ;)

MaMu
23-07-2007, 19:29:19
Gracias pero creo que no me habeis entendido chicos porque lo que quiero no es imprimir el texto que contiene un fichero ni el de una ristra sino la interpretacion del contenido, por ejemplo 121100105650140REMITENTE, imprimira remitente en las coordenadas indicadas (x,y) con el tipo y tamaño de fuente indicados (con la numeración), ... Se que con puerto serie un componente que funciona es TConPort pero en puerto paralelo no se.

Gracias ;)

Tendrias que explicar mas:


121100105650140REMITENTE


La longitud del numero es siempre fija?
Las coordenadas salen de ese mismo numero?
De que se compone ese numero, como se genera?

Saludos

afxe
25-07-2007, 09:28:07
Con el TComPort puedes abrir también el puerto RS232, es decir, el puerto paralelo, no obstante, con el ejemplo que te puse anteriormente abres el puerto y envias caractes por dicho puerto, tal y como lo haría el TComPort. No obstante, Mamu tiene razón: ¿Qué significan esos números?

Con las impresoras nos podemos comunicar con varios lenguajes: xIBM, Modo Epson, PCL-5, PCL-6, etc... Normalmente, los drivers de windows evitan que tengamos que aprendernos todos esos lenguajes para sacar el mayor rendimiento a una impresora. Si tu "ristra" de números tienen algún significado para tu impresora (que lo dudo, pues no se parece a ninguno de los lenguajes que yo conozca, aunque no los conozco todos), abriendo el puerto (como te indiqué o con el TComPort) y enviándo dichos caracteres tu impresora los debe saber "interpretar" e imprimir correctamente.

Pero si la impresora no es capaz de interpretar esos números, tendrás que interpretarlos tú por ella, es decir, tendrás que usar el ejemplo del Dioni y usar el Canvas de la Printer para "dibujar" una interpretación de esos números, ya que por lo que comentas (posicionamiento (x,y), tipo de letra, tamaño de letra...) estamos hablando de impresión en modo gráfico.

De todas maneras, me uno a la duda de Mamu: ¿De donde han salido y qué significan esa ristra de números?

Saludos.