Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   imprimir por LPT1 (http://www.forosdelweb.com/f29/imprimir-por-lpt1-542482/)

joormar 20/12/2007 05:54

imprimir por LPT1
 
Hola a todos.

Estoy realizando una aplicación en c# para imprimir tickects de caja y necesito saber como puedo imprimir por LPT1.

He visto que en visual basic hay una sentencia "shell" para realizar esta operación pero no sé como se hace en c#.

he probado de 2 formas:
- intentando imprimir directamente en lpt1
- creando un fichero e intentándolo imprimir después.

Gracias de antemano

cesar_nava 20/12/2007 15:58

Re: imprimir por LPT1
 
Si tienes la impresora correctamente detectada y configurada en tu PC, puedes emplear la clase PrintDocument.

La funcion principal de la sentencia Shell de Visual Basic, no es imprimir, sino ejecutar otros procesos o programas. Su equivalente en .Net (ya sea Visual Basic .Net o C#) es la clase Process.

joormar 21/12/2007 01:46

Re: imprimir por LPT1
 
Gracias por la respuesta.

Me habían dicho que no era necesario configurar la impresora y por eso mis problemas. Una vez configurada ya he podido imprimir.

Al principio he utilizado una clase que encontré en http://www.foromsn.com/Version_Imprimible.php?Id=178209 pero me amontonaba las líneas y la he descartado. Si alguien sabe la razón....
Así que decidí hacerlo de otra forma en la que imprimo las líneas correctamente. No queda tan bonito pero me sobra.

Ahora, después de imprimir el ticket, tengo que abrir la caja física. El comando a utilizar es carácter escape seguido de (char)27p04. No estoy seguro de si es p04 o p0,4 pero he probado de las 2 formas.
También he probado poniendo el comando completo utilizando la sintaxis (char)nº y en ningún caso abre la caja. Esa sentencia la he puesto desde la consola de comandos ms-dos (directamente y a través de un fichero txt) y el cajón se abre pero desde el código de visual no.

Si alguien puede ayudarme estaría muy agradecido.

Aquí pongo el código utilizado:


private void button1_Click(object sender, EventArgs e)
{

string textoAImprimir = "1 Texto a imprimir\r\n";
textoAImprimir += "2 Texto a imprimir\r\n";

textoAImprimir += (char)27 + "p0,4"; //comandos para abrir el cajón físico

PrintAString(textoAImprimir);
}

#region "Impresion"
private Font printFont;
private string printString;

public void PrintAString(string data)
{
PrintDocument pd = new PrintDocument();
printFont = new Font("Courier", 10);

printString = data;
pd.PrintPage += new PrintPageEventHandler(PrintPage);
pd.PrinterSettings.PrinterName = "ticket";
pd.Print();
}

private void PrintPage(object sender, PrintPageEventArgs e)
{
float xp = 10;
float yp = 20;
e.Graphics.DrawString(printString, printFont, Brushes.Black, xp, yp, new StringFormat());
}
#endregion



Un saludo a tod@s.

Foskiton 22/12/2007 12:15

Re: imprimir por LPT1
 
Hola joormar
Me da que tienes que enviar al puerto el comando space ( (char)27p04 ) no imprimirlo, al menos eso creo, y la forma correcta de hacerlo seria utilizando las clases que se encuentran en el namespace System.Net (bueno te lo he dicho de memoria, creo q se llama asi)
Donde encontraras clases de puertos, redes etc.

Saludos.

ArielS 14/02/2009 13:34

Respuesta: imprimir por LPT1
 
Hola Joomar, quisiera saber si serías tan amable de postearme algo de código respecto a la impresión en puerto LPT1. Necesito imprimir a una impresora matricial con códigos esc. Si podés comentame también cómo configuraste la impresora ya que en este post haces un comentario al respecto. Muchas gracias

OpenSoft 09/09/2009 07:22

Respuesta: imprimir por LPT1
 
joormar, te quedo agradecido por el código que posteas... muy útil.


La zona horaria es GMT -6. Ahora son las 10:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.