impresión de un ticket de venta |
Responder |
Autor | ||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Tema: impresión de un ticket de venta Enviado: 28/Julio/2021 a las 21:50 |
|
Hola buen día. Estoy haciendo un sistema en el que necesito imprimir un Ticket de venta (no se como se llama en España pero es el recibo que te dan las tiendas al comprar algo). Estoy programando en VBA Access. Realicé un informe le di el tamaño necesario etc. El problema es que al imprimir, me deja, al final un buen pedazo de papel en blanco, supongo que respetando un tamaño de papel. La impresora es térmica (POS Printer) e imprimo en un pedazo de rollo térmico.
Algún día, no hace mucho, programé en VBA de Excel un punto de venta y al seleccionar la impresora térmica, automáticamente ponía un tamaño de papel personalizado e imprimía el ticket perfectamente y del tamaño necesario.Yo suponía que en Access pararía lo mismo, pero no fue así. ¿Alguien me puede orientar que puedo hacer? He buscado la palabra ticket en el foro pero sin éxito. Gracias de antemano por su ayuda. |
||
GFAP
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14023 |
Enviado: 28/Julio/2021 a las 23:28 | |
Bájate el programa de consulta del foro off-line, ahí seguro que hay información.
Hace mucho que no toco una impresora de tickets, pero el truco está en abrirla directamente, no a través de un informe, e ir escribiendo las líneas. La cuchilla de corte es otro tema, que que no quede mucho papel en blanco por detrás el truco estaba en darle la orden de corte dos o tres líneas antes del final del ticket, así se ajustaba el papel al máximo.
|
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 30/Julio/2021 a las 03:56 | |
Gracias Jesus.
Estoy trabajando con este código: Private Type DocInfo pDocName As String pOutputFile As String pDatatype As String End Type Private Declare PtrSafe Function ClosePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare PtrSafe Function EndDocPrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare PtrSafe Function EndPagePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare PtrSafe Function OpenPrinter Lib "winspool.drv" Alias _ "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _ ByVal pDefault As Long) As Long Private Declare PtrSafe Function StartDocPrinter Lib "winspool.drv" Alias _ "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _ pDocInfo As DocInfo) As Long Private Declare PtrSafe Function StartPagePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare PtrSafe Function WritePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, _ pcWritten As Long) As Long Public Function RawPrint(strData As String, ByVal SelectedPrinter As String) Dim defprt As Printer Dim lhPrinter As Long Dim lReturn As Long Dim lpcWritten As Long Dim lDoc As Long Dim sWrittenData As String Dim mDocInfo As DocInfo lReturn = OpenPrinter(SelectedPrinter, lhPrinter, 0) If lReturn = 0 Then MsgBox "The Printer is not recognized." Exit Function End If mDocInfo.pDocName = "ZPl" mDocInfo.pOutputFile = vbNullString mDocInfo.pDatatype = vbNullString lDoc = StartDocPrinter(lhPrinter, 1, mDocInfo) Call StartPagePrinter(lhPrinter) sWrittenData = strData lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _ Len(sWrittenData), lpcWritten) lReturn = EndPagePrinter(lhPrinter) lReturn = EndDocPrinter(lhPrinter) lReturn = ClosePrinter(lhPrinter) End Function Sub x() Call RawPrint("esto es una prueba", "\\DESKTOP-76ULVKL\POS58 10.0.0.6") End Sub Cuando lo ejecuto no hace nada. No marca error pero no imprime nada. tuve que modificar lo de ptrsafe para que corra en maquina de 64 bits. lo corro linea a linea pero desconozco cuál es el error. tampoco estoy seguro si este código funciona con puertos USB. Y por más que bueco no encuentro nada. |
||
GFAP
|
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 30/Julio/2021 a las 04:07 | |
También intenté con este otro código sin obtener algún resultado:
Sub imprimeDirecto() Open "\\DESKTOP-76ULVKL\POS58 10.0.0.6" For Output As #1 Print #1, "Hola" Print #1, Chr$(12) Close #1 End Sub ni con este: Sub imprimeDirecto() Open "USB001" For Output As #1 Chr$(12) genera un salto de página Print #1, "Hola" Print #1, Chr$(12) Close #1 End Sub ¿con la api de windows es posible mandar al puerto USB? ¿Debe funcionar cualquier impresora con esa api? Lo malo es que en todos los lugares donde busco dan terminado el tema con alguno de estos códigos. como si en realidad funcionaran. ¿estaré haciendo algo mal? |
||
GFAP
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14023 |
Enviado: 30/Julio/2021 a las 09:05 | |
Esto último es el camino a seguir ... he buscado lo que tenía en un programa antediluviano ... no es que esté muy depurado pero funciona:
Editado por Mihura - 30/Julio/2021 a las 09:05 |
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 02/Agosto/2021 a las 08:44 | |
Hola Jesús, sigo intentando. Me di cuenta que me lo manda a un archivo llamado USB001 en "documentos" y como trabajo en otra carpeta no lo había visto.
intente con USB1 e igual. Ahora intente redireccionar un puerto LPT1 con NET USE LPT1: \\DESKTOP-76ULVKL\POS58 /PERSISTENT:YES pero marca error en: Open "LPT1" For Output As #1 Caramba tiene que haber algo Gracias por atenderme |
||
GFAP
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14023 |
Enviado: 08/Agosto/2021 a las 20:06 | |
Perdón por la demora pero estuve desconectado unos días.
Yo he usado las siguientes maneras de escribir directamente en la impresora: Open "Lpt1" For Output As #1 Open "USB0001" For Output As #1 Open "\\PC1\Nombre impresora" As #1 A tener en cuenta: - a la hora de escribir hay que incluir el carácter de escape dónde corresponda @+I = Chr$(27) + "I" - USB0001 es EXACTAMENTE el nombre del puerto que tiene asignado la impresora - en la tercera opción, lo que se hace es compartir una impresora en windows y usar el nombre EXACTO con el la que la vemos entrando a través del entorno de red Yo desde la distancia, y el tiempo que hace que no me 'pego' con una ... mucho más no te puede decir |
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 04/Septiembre/2021 a las 00:02 | |
Hola Jesús. Resolví parcialmente el problema dando de alta una impresora genérica de texto. El problema es que solo imprime texto y ni el tamaño de la letra he podido modificar. Pero como buen informático he de ganar esta batalla. Ahora la tengo pausada pero en unos días continúo con los intentos. Te agradezco la atención que me has brindado, y cuando tenga algo te escribo para contarte. Si tu encuentras algo que creas me sirve, ¿me lo haces saber? Gracias.
|
||
GFAP
|
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 04/Septiembre/2021 a las 00:10 | |
De tu última aportación, el problema es que me crea un archivo llamado USB001 (de tipo texto) y en el escribe líneas como las siguientes:
@!8hola1 e!ahola2 ahola3 a Cli: hola4 >> hola5 hola6J V ed V Que son los textos y "comandos escape" que deberían llegar a la impresora pero en lugar de eso llegan al archivo de texto. Y no logro que llegue a la impresora. |
||
GFAP
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14023 |
Enviado: 04/Septiembre/2021 a las 10:04 | |
¡Agrrrr! ... faltaba eso, ni me acordaba de que había que hacerlo ... El tamaño de letra lo tienes que cambiar con los códigos de escape de la impresora, estos suelen ser los mismos para todas las impresoras. Y sí ... si sigues con ello lo conseguirás ...
|
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 29/Noviembre/2021 a las 08:45 | |
Hola Jesús, después de dejar por un tiempo de intentarlo ayer me metí y por fin logre hacer lo que necesitaba. La solución la comparto para que otros la puedan tomar de aquí.
Esto sirve para impresoras GPrint China y creo que también las xPrint En access o Excel en algún modulo: Sub yy() Open "\\DESKTOP-66ULVKK\POS58" For Output As #1 Print #1, Chr$(27) & Chr$(64) ' Reinicializa Impresora Print #1, Chr$(29); Chr$(33); Chr$(17) ' Para Titulo Print #1, "RWJ SA DE CV" Print #1, Chr$(27) & Chr$(64) ' Tamaño por default Print #1, "Calle Oro 205" Print #1, "Colonia Leon II" Print #1, "Leon Guanajuato" Print #1, "--------------------------------" Print #1, "Cantidad / Producto" Print #1, " PU / Total" Print #1, "--------------------------------" Print #1, " 2 Coca cola Ligth 1 litro" Print #1, " 20.50 $ 41.00 " Print #1, Chr$(10) 'Salto de línea Print #1, Chr$(29); Chr$(33); Chr$(1) 'Otro tamaño de letra Print #1, " TOTAL $ 41.00 " Print #1, Chr$(27) & Chr$(64) 'Configuración inicial Print #1, Chr$(10) Close #1 End Sub "\\DESKTOP-66ULVKK\POS58" ===> Nombre de la computadora (DESKTOP-66ULVKK) y de la impresora (POS58) La impresora ¡¡¡¡ TIENE QUE ESTAR COMPARTIDA !!!! eso me fallaba debe estar en el puerto USB correcto (Propiedades de impresión) (panel control => Dispositivos e impresoras => La impresora que usas, en mi caso POS58 click derecho => propiedades de impresora => Puerto y también uso compartido ahí mismo. |
||
GFAP
|
||
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 29/Noviembre/2021 a las 08:50 | |
ahhh y no es necesario imprimir en una impresora Genérica.
Jesus, gracias por haber sido paciente conmigo y por tu ayuda. De verdad lo aprecio. Gonzalo Se Puede cerrar el Hilo. |
||
GFAP
|
||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14023 |
Enviado: 29/Noviembre/2021 a las 09:07 | |
Gracias a ti por la respuesta.
Un saludo.
|
||
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |