Ayuda Impresion Directa en LPT1 desde VB.NET

18/12/2006 - 18:30 por Camilo A. Villa N. | Informe spam
Hola necesito realizar impresion desde VisualBasic.NET en una impresora
EPSON TMU-220PD (Las que se utilizan en los POS o TPV para impresion de
Tickets)

Encontre un codigo en VB 6.0 que dice:
Private Sub Command1_Click()

Open "LPT1" For Output As #1

Print #1, Chr(27) & "W" & Chr(1); "Hola, mundo" & Chr(27) & "W" &

Chr(0) 'Imprime en ancho doble

Print #1, Chr(15) & "Nro. de boleta" & Chr(17) 'Imprime condensado

Close #1

End Sub

Pero necesito traducirlo a VB.NET por que se requiere que sea la impresion
de esta forma, ya que el objeto PrintDocument que es el que se utiliza
ultimamente me imprime demasiado lento y el tiempo es algo que preocupa a la
empresa para la cual trabajo...

Si alguien sabe como traducir este tipo de codigo a .NET...

Gracias

Camilo Villa Naranjo.

P.D.
Esta es la primera vez en mi experiencia laboral que tengo que imprimir
algo, todas las aplicaciones en las que me he desempenado hasta el momento
no habian requerido de mi este tipo de conocimientos, pero hoy si... y no se
donde y como abordarlo... ayudenme...

Preguntas similare

Leer las respuestas

#1 Carlos Gómez
18/12/2006 - 19:39 | Informe spam
Yo tengo una solucion, un tanto chapuza, pero que funciona bien. La uso
en general como remedio para cuando una impresora de tickets se niega a
imprimir. Lo que quiero imprimir, lo guardo en un archivo de texto
plano y lo lanzo a lo bruto mediante msdos o como quiera que se llame
ahora.


Shell("print /d:LPT1 " & directorioDeTrabajo & "\temp.txt")

Obviamente, si quieres imprimir dibujos, colores o cualquier otra cosa,
esto no vale. Pero para salir del paso mientras encuentro el problema
es perfecto.

Ah, ten cuidado con los enter (chr(13)), que las impresoras de ticket
no los interpretan como salto de linea. Tienes que cambiarlos por
chr(10)
Respuesta Responder a este mensaje
#2 Carlos Gómez
18/12/2006 - 19:55 | Informe spam
Yo tengo una solucion, un tanto chapuza, pero que funciona bien. La uso
en general como remedio para cuando una impresora de tickets se niega a
imprimir. Lo que quiero imprimir, lo guardo en un archivo de texto
plano y lo lanzo a lo bruto mediante msdos o como quiera que se llame
ahora.


Shell("print /d:LPT1 " & directorioDeTrabajo & "\temp.txt")

Obviamente, si quieres imprimir dibujos, colores o cualquier otra cosa,
esto no vale. Pero para salir del paso mientras encuentro el problema
es perfecto.

Ah, ten cuidado con los enter (chr(13)), que las impresoras de ticket
no los interpretan como salto de linea. Tienes que cambiarlos por
chr(10)
Respuesta Responder a este mensaje
#3 Carlos Gómez
18/12/2006 - 20:20 | Informe spam
Yo tengo una solucion, un tanto chapuza, pero que funciona bien. La uso
en general como remedio para cuando una impresora de tickets se niega a
imprimir. Lo que quiero imprimir, lo guardo en un archivo de texto
plano y lo lanzo a lo bruto mediante msdos o como quiera que se llame
ahora.


Shell("print /d:LPT1 " & directorioDeTrabajo & "\temp.txt")

Obviamente, si quieres imprimir dibujos, colores o cualquier otra cosa,
esto no vale. Pero para salir del paso mientras encuentro el problema
es perfecto.

Ah, ten cuidado con los enter (chr(13)), que las impresoras de ticket
no los interpretan como salto de linea. Tienes que cambiarlos por
chr(10)
Respuesta Responder a este mensaje
#4 Eduardo
18/12/2006 - 20:49 | Informe spam
Camilo:
Mira por lo que tu pones supongo que es un impresor fiscal, creo que
trabajan por puerto serie y debes buscar el respectivo control ocx
por lo menos asi lo e visto hacer con EPSON TMU 220 AF y visual fox.
Saludos
Espero que te sirva.




"Camilo A. Villa N." escribió en el mensaje
news:
Hola necesito realizar impresion desde VisualBasic.NET en una impresora
EPSON TMU-220PD (Las que se utilizan en los POS o TPV para impresion de
Tickets)

Encontre un codigo en VB 6.0 que dice:
Private Sub Command1_Click()

Open "LPT1" For Output As #1

Print #1, Chr(27) & "W" & Chr(1); "Hola, mundo" & Chr(27) & "W" &

Chr(0) 'Imprime en ancho doble

Print #1, Chr(15) & "Nro. de boleta" & Chr(17) 'Imprime condensado

Close #1

End Sub

Pero necesito traducirlo a VB.NET por que se requiere que sea la impresion
de esta forma, ya que el objeto PrintDocument que es el que se utiliza
ultimamente me imprime demasiado lento y el tiempo es algo que preocupa a
la empresa para la cual trabajo...

Si alguien sabe como traducir este tipo de codigo a .NET...

Gracias

Camilo Villa Naranjo.

P.D.
Esta es la primera vez en mi experiencia laboral que tengo que imprimir
algo, todas las aplicaciones en las que me he desempenado hasta el momento
no habian requerido de mi este tipo de conocimientos, pero hoy si... y no
se donde y como abordarlo... ayudenme...

Respuesta Responder a este mensaje
#5 Rodrilobo
19/12/2006 - 05:04 | Informe spam
Amigo esta es tu solucion:

=Imports System.IO 'Al inicio del formulario

'Luego se declaran las siguientes variables

Public Declare Auto Function CreateFile Lib "kernel32.dll" (ByVal
lpFileName _
As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As
Integer, _
ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition
As _
Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile
As _
IntPtr) As IntPtr

Const GENERIC_WRITE As Int32 = &H40000000
Const OPEN_EXISTING As Int32 = 3

'Ahora se crea un Procedimiento almacenado que crea algunos parametros
de impresion

Private Function GetStreamWriter(ByVal port As String) As StreamWriter
Dim hFich As IntPtr = CreateFile(port, GENERIC_WRITE, 0,
IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
Dim stream As New FileStream(hFich, FileAccess.Write)
Dim writer As New StreamWriter(stream)
Return writer
End Function

'Ahora para imprimir haces esto

Private Sub Imprime()

Dim lpt1 As StreamWriter = GetStreamWriter("LPT1")

'WRITELINE (" Tu texto") lo que hace es escribir lo que le pongas entre
parentesis
'y luego crea una linea debajo de esta.

'WRITE ("Tu texto") va a escribir lo que esta en el parentesis y
seguira
'esperando en la misma linea. ejemplo

lpt1.WriteLine(" HOLA AMIGOS ")

'Recibiras:
'==' HOLA AMIGOS
'
'==
lpt1.Write("HOLA AMIGOS ")
lpt1.Write("COMO ESTAN")

'Recibiras:
'=='HOLA AMIGOS COMO ESTAN
'==

Creo que con eso funcionara... lo utilizo con una TMU-220A en Visual
Basic 2005




Ing. Rodrigo Lobo Alvarado
Costa Rica. 20 años
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida