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
print.printer "pepe"
print.printer.dendoc
mas facil
"Alejandro Hernández" <ahcava...@sicosoft.org> escribió en el mensaje
news:eHDQ71Qx...@tk2msftngp13.phx.gbl...
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...
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...
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
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
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...
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...
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...
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...
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...
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...