Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Caracteres de escape

97 views
Skip to first unread message

Alejandro Hernández

unread,
Dec 17, 2003, 9:20:16 PM12/17/03
to
Hola y gracias por su ayuda.

Quiero enviar cracteres de escape a un impresora para comprimir la letra,
abrir un cajón de dinero con una miniprinter, etc.

El problema es que no me ha salido. Estoy usando el codigo siguiente, que
encontre en intenet

Open Printer.Port For Output As #1
Print #1, Chr(27) & Chr(15)
Print #1, "Hola"
Close #1

El caracter 15 es para comprimir la letra en la imrpesora que utilizo.

Pero no me ha funcionado y me manda un error. No se si sea porque la
impresora la tengo en puerto USB.

espero me puedan ayudar

--
Atentamente

LAFF Alejandro Hernández Cavanillas
GS NegoPro


Hector Santana

unread,
Dec 18, 2003, 8:02:10 AM12/18/03
to
mandalo con un

print.printer "pepe"

print.printer.dendoc

mas facil

"Alejandro Hernández" <ahcava...@sicosoft.org> escribió en el mensaje
news:eHDQ71Qx...@tk2msftngp13.phx.gbl...

Jhonny Vargas P. [MVP]

unread,
Dec 18, 2003, 8:07:50 AM12/18/03
to

Hola Alejandro,

Realiza la siguiente prueba:

Anda a las propiedades de la impresora y setea que se esté imprimiendo por
el puerto de la LPT1 (asignale la impresora a ese puerto en el caso de que
no lo tengas).

Y despues ejecuta el siguiente código.

Open "Lpt1" For Output As #1


Print #1, Chr(27) & Chr(15)
Print #1, "Hola"
Close #1


--
Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile


"Alejandro Hernández" <ahcava...@sicosoft.org> wrote in message
news:eHDQ71Qx...@tk2msftngp13.phx.gbl...

Hector Santana

unread,
Dec 18, 2003, 8:09:23 AM12/18/03
to
Detodas formas y bien pensado, para que quieres hacer eso?
Datecuenta que configurar las letras para tu impresora no es util ya que en
cada impresora se configuran de una forma distinta y si cabias de impresora
no te servira de nada el trabajo realizado

la forma correcta y facil es

cargar el objeto rigtexbox , escribir el texto con negrita, cursiva o lo que
quieras, tambien puedes crear el documento en wor y salvarlo con formato rtf
y luego cargarlo en el rigtextbox y añadir o modificar el texto,luego haces
un "RigTextBox1.SelPrint printer.hDC" y te imprimira el texto con formatos
ten cuidato que en el rigtextbox el parametro predefinido no es el text


"Alejandro Hernández" <ahcava...@sicosoft.org> escribió en el mensaje
news:eHDQ71Qx...@tk2msftngp13.phx.gbl...

Alejandro Hernández

unread,
Dec 18, 2003, 6:27:22 PM12/18/03
to
Gracias por sus respuestas, aunque no son lo que busco. Déjenme expresarme
mejor:

Imaginen que tiene un sistema para punto de venta. Necesitan abrir el cajón
de dinero y para ello deben enviar a la miniprinter un caracter de escape,
por ejemplo
CHR(27) + CHR(7)

Si utililzo :
printer.print CHR(27) + CHR(7) no me funciona y manda imprimir caracteres
raros

Si utilizo :
Open "Lpt1" for output as #1
print #1, CHR(27) + CHR(7)
Close #1
me dicen que debe funcionar, pero como la impresora la tengo conectada por
medio de USB, hago el cambio a:
Open "USB1" for output as #1
print #1, CHR(27) + CHR(7)
Close #1
donde USB1 es el puerto en el que tengo la impresora, pero lo que hace es
crearme un archivo Usb1 en disco.

Espero esto ayude un poco más. De antemano gracias

Eduardo A. Morcillo [MS MVP VB]

unread,
Dec 18, 2003, 11:43:04 PM12/18/03
to
Prueba con esto:

Option Explicit

Private Declare Function OpenPrinter Lib "winspool.drv" _
Alias "OpenPrinterA" ( _
ByVal pPrinterName As String, _
phPrinter As Long, _
pDefault As Any) As Long

Private Declare Function ClosePrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long) As Long

Private Declare Function WritePrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long, _
pBuf As Any, _
ByVal cdBuf As Long, _
pcWritten As Long) As Long

Private Declare Function StartDocPrinter Lib "winspool.drv" _
Alias "StartDocPrinterA" ( _
ByVal hPrinter As Long, _
ByVal Level As Long, _
pDocInfo As Any) As Long

Private Declare Function EndDocPrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long) As Long

Private Declare Function StartPagePrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long) As Long

Private Declare Function EndPagePrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long) As Long

Private Type DOC_INFO_1
pDocName As String
pOutputFile As String
pDatatype As String
End Type

Dim hPrinter As Long
Dim lRes As Long

lRes = OpenPrinter(Printer.DeviceName, hPrinter, ByVal 0&)

If lRes Then
Dim tDI As DOC_INFO_1

tDI.pDocName = "Prueba"

StartDocPrinter hPrinter, 1, tDI
StartPagePrinter hPrinter

WritePrinter hPrinter, ByVal Chr$(27) & Chr$(7), 2, 0

EndPagePrinter hPrinter
EndDocPrinter hPrinter

ClosePrinter hPrinter

Else
Err.Raise &H80070000 Or Err.LastDllError
End If

--
Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Alejandro Hernández

unread,
Dec 19, 2003, 6:16:26 PM12/19/03
to
Edurado,

Gracias por tus comentarios pero no me funcionó.

Tengo instalada una Epson C42UX, en esa estoy haciendo pruebas tratando de
comprimir la letra. una vez logrado esto lo demás es sustituir los
caracteres deseados ¿no?

La impresora hace ruido y como que quiere imprimir pero nunca lo hace, ¿que
podrá ser?

Gracias

--
Atentamente

LAFF Alejandro Hernández Cavanillas
GS NegoPro

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:##rLbqexD...@TK2MSFTNGP09.phx.gbl...

José Manuel Agüero

unread,
Dec 19, 2003, 7:05:02 PM12/19/03
to
Hola, alejandro:

Quizá no sea este el caso, pero los códigos menores de 32 suelen ser de control y no es necesario anteponer el código de escape:
'\\\
Open "LPT1:" For Output As #1
Print #1, Chr(15); 'Activar letra comprimida.
Print #1, "Hola";
Print #1, Chr(18); 'Desactivar letra comprimida.
Print #1, Chr(9); "Hola" 'Ponemos un tabulador antes del texto.
'VB añadirá un salto de línea porque no hemos puesto el punto y coma al final.
Print #1, Chr(7); 'Pitar ( no todas las impresoras lo hacen).
Print #1, Chr(12); 'Expulsar la hoja.
Close #1
'///

"Alejandro Hernández" <ahcava...@sicosoft.org> escribió en el mensaje news:eHDQ71Qx...@tk2msftngp13.phx.gbl...

Alejandro Hernández

unread,
Dec 22, 2003, 3:24:47 PM12/22/03
to
Gracias José,

Lo has probado en impresoras que no estén en LPT1 o LPT2, por ejemplo en
USB?

Gracias por tu apoyo

--
Atentamente

LAFF Alejandro Hernández Cavanillas
GS NegoPro

"José Manuel Agüero" <jmaguero_vodafone.es> escribió en el mensaje
news:etOmqzox...@TK2MSFTNGP11.phx.gbl...

José Manuel Agüero

unread,
Dec 22, 2003, 8:13:24 PM12/22/03
to
Hola, Alejandro:

Lo de enviar caracteres directamente a la impresora es cada vez más complicado.
Los modelos baratos disminuyen los componentes electrónicos, incluyendo las tablas de tipos de letra y mucha de la lógica de control, pasando a depender totalmente del controlador instalado en el PC.
A las impresoras USB se les añade el hecho de que el sistema no soporta el envío de datos directamente al puerto, sino sólo al controlador. A este respecto quizá sea útil el artículo "CÓMO: Enviar datos sin formato a una impresora usando la API Win32 desde Visual Basic": http://support.microsoft.com/default.aspx?scid=kb;EN-US;154078

Para impresoras conectadas a USB, el método implementado en ese artículo es probablemente mejor que el tradicional: compartir la impresora y capturar un puerto LPT mediante el comando "net use" para la impresora local. Me explico:
-Compartimos nuestra impresora USB con el nombre "IMPR1" (por ejemplo).
-Escribimos en una consola de comandos: "net use lpt1: \\NombreDelPC\IMPR1".
-Usamos el puerto LPT1: de la manera usual.

Saludos.


"Alejandro Hernández" <ahc...@sicosoft.org> escribió en el mensaje news:OvUqOmMy...@TK2MSFTNGP11.phx.gbl...

Alejandro Hernández

unread,
Dec 23, 2003, 1:15:09 PM12/23/03
to
GRas por tus comentarios,

hice las pruebas que me comentanste per no me funcionó,

si logré direccionar la impresora al puerto LPT1, pero no imprimió los
caracteres y el codigo de
http://support.microsoft.com/default.aspx?scid=kb;EN-US;154078 no imprime.

Voy a instalar otra impresora, directo en el puerto lpt1 para ver si es
problema de la impresora con la que estoy trabajando.

Gracias

--
Atentamente

LAFF Alejandro Hernández Cavanillas
GS NegoPro
"José Manuel Agüero" <jmaguero_vodafone.es> escribió en el mensaje

news:eWbN1HPy...@TK2MSFTNGP09.phx.gbl...

Alejandro Hernández

unread,
Dec 29, 2003, 11:26:47 AM12/29/03
to
Gracias por su apoyo,

Ya lo probé con una imprsora de matriz conectada a LPT1 y si funcionó, donde
no ha funcionado es en la USB.

Gracias

--
Atentamente

LAFF Alejandro Hernández Cavanillas
GS NegoPro

"Alejandro Hernández" <ahcava...@sicosoft.org> escribió en el mensaje
news:eHDQ71Qx...@tk2msftngp13.phx.gbl...

0 new messages