PDA

Ver la Versión Completa : Me da error en la clase pprinterinfo2


fanon
28-05-2003, 15:48:58
Hola de nuevo, he intentado usarlo, pero me da error en la clase pprinter info2, donde la defines o que unidad tiene que usar, gracias. Sabes algun otro metodo aparte??. salu2

cadetill
28-05-2003, 16:44:10
Hola fanon

Me ha costado entender que esto venia del otro hilo en el que te conteste, intenta poner los mesajes en el mismo hila ;)

Esto lo tienes definido en la unit WinSpool

Espero te sirva

fanon
28-05-2003, 16:54:15
Hola de nuevo, muchas gracias por tu ayuda, pero necesito una cosa mas. Como le paso los parametros, porque no me aclaro como debo hacerlo, y otra cosa mas, como puedo imprimir un fichero de texto por ella??, mucha gracias, espero no agobiarte con tanta pregunta. un salu2.

cadetill
28-05-2003, 17:02:13
un ejemplo de llamada


AddImpresora( 'EPSON_GEN', 'LPT1:', 'Generic / Text Only', 'winprint' );


Para imprimir por ella, tendras que recorrer las impresoras instaladas hasta que des con ella, buscando por el nombre que le has asignado (en el ejemplo EPSON_GEN). Añade Printers en el uses de tu form


var i : integer;
begin
i := 0;
while (Printer.Printers[i] <> 'EPSON_GEN') and
(i < Printer.Printers.Count - 1) do
inc(i);
if i < Printer.Printers.Count - 1 then
Printer.PrinterIndex := i;
end;


Espero te sirva

fanon
28-05-2003, 17:52:00
Lo siento, pero me rayo un puñao con ese codigo que me mandaste, no puedo hacerlo funcionar. Lo que tengo que hacer es mandarle al COM2 un fichero de texto. La movida que ya te explique, que tengo un visor lcd y para inicializarlo necesito crear una impresora generica/texto y seguidamente imprimir por ella, una vez hecho esto, me va de p.m, pero apago el ordenador y me toca hacerlo de nuevo. Tienes algun truco que pueda servirme??. Yo he pensado coger la impresora en tiempo de ejecucion con el GetPrinter y luego mandarle un fichero .txt cualquiera q tenga en el disco, y luego destruirlo, pero no se utilizar estos comandos, sabrias decirme algo??, stoy ya desesperado. gracias.salu2

cadetill
28-05-2003, 18:05:38
jejeje, bueno, tranquilo, busquemos otras alternativas.

Si coges el asistente para impresoras e instalas tu impresora Generic Text Only en el sistema y luego la utilizas para tus propositos te serviria? Asi no tendrias que instalarla cada vez en el sistema

Otra alternativa es la que te comentaba en el otro hilo, la del codigo de escape del visro. Lo has mirado en la documentacion?

Tambien podrias mirar de utilizar algun componente de acceso a los Com como el TCommPortDriver (es el que yo utilizo para hacer precisamente lo que tu quieres hacer, "imprimir" en un visor LCD). Hay muchos y muchos son free, mira en Torry's a ver (creo que este era free, ahora no recuerdo)

Ya nos diras alguna cosa al respecto

fanon
28-05-2003, 18:32:48
Hola, eso es lo que quiero hacer, instalarla en windows, y luego solamente tener que mandarle un fichero de texto en tiempo de ejecucion, de todas maneras, me he bajado el tcomport y al instalarlo me da error en esta linea:
WriteFile( FComPortHandle, DataPtr^, nToSend, nSent, nil ); y me pone lo siguiente:
[Error] ComDrv32.pas(845): Types of actual and formal var parameters must be identical,

Sabes porque da ese error, yo trabajo en delphi 6 y el componente creo q ponia hasta el 3, sera por eso??.

Bueno, de todas maneras, dime como puedo enviarle un fichero de texto en tiempo de ejecucion y a ver si asi funciona, pk los codigo de escape que me pone en el manual, al introducirlos me salen simbolos raros, no se pk puede ser, pero pongo el codigo de inicializar le visor y no sale nada. Se los paso asi:
AssignFile(LCD,'COM2');
Rewrite(LCD);
Writeln(LCD,#27+#81+#65+' Bienvenido a...'+#13);
Writeln(LCD,#27+#81+#66+' *** Mark'+#96+'s *** '+#13);
CloseFile(LCD);
y me salen los simbolos raros. salu2.

cadetill
28-05-2003, 19:04:59
Hola

Te he enviado un correo con el componente que yo utilizo (el Delphi 6) y que trae una demo. Miratelo a ver que te parece

Espero que ahora si que si ;)

Por cierto, yo utilizo esta funcion para imprimir el los visores LCD.
Nota : los visores que yo utilizo tienen 2 lineas, por lo que un parametro de la funcion es la linea en la que quiero escribir

Parametros de la funcion:
* Puerto : TCommPortDriver -> componente de acceso a puerto serie
* Text : string --> texto que queremos que salga por el visor
* Linea : integer --> 1 o 2 (linea en la que queremos escribir)
* BorraContenido : boolean --> si true, borra TODO el contenido del visor antes de imprimir en el, sino, SOLO borra la linea en la que queremos escribir


procedure MissatgeDisplay(Puerto : TCommPortDriver; Text : string; Linea : integer;
BorraContenido : boolean);
var tmp : string;
begin
// Si no está conectado, no hacemos nada
if Puerto.Connected then
begin
if length(Text) > 20 then
Text := copy(Text, 1, 20);
if BorraContenido then
begin
// Borramos contenido del Visor
tmp := chr(12);
Puerto.SendString(tmp);
tmp := chr(31) + chr(36) + chr(1) + chr(1) + ' ';
Puerto.SendString(tmp);
tmp := chr(31) + chr(36) + chr(1) + chr(2) + ' ';
Puerto.SendString(tmp);
end;
case Linea of
1 : begin
tmp := chr(31) + chr(36) + chr(1) + chr(1) + ' ';
Puerto.SendString(tmp);
tmp := chr(31) + chr(36) + chr(1) + chr(1) + Text;
end;
2 : begin
tmp := chr(31) + chr(36) + chr(1) + chr(2) + ' ';
Puerto.SendString(tmp);
tmp := chr(31) + chr(36) + chr(1) + chr(2) + Text;
end;
end;
// Escribimos texto
Puerto.SendString(tmp);
end;
end;


Ejemplo de llamada


begin
MissatgeDisplay(CommPortDriver1, 'Hola mundo!!!', 1, true);
end;