Spanish [SOLUCIONADO] IMPRIMIR EN IMPRESORA ETIQUETAS BROTHER

Edu Portu

Member
Licensed User
Longtime User
Buenas tardes,

Tengo una impresora de etiquetas BROTHER QL-820NWB en la que tengo que imprimir desde mi APP.

He probado con este codigo y parece que conecta (salta el evento BrootherPrinter_Connected)

CONEXION:
    'Variables para imprimir Bluetooth
    Dim btAdmin As BluetoothAdmin
    Dim BrotherQL820NWB As Serial
    Dim printer As TextWriter
  
    ...
  
    btAdmin.Initialize("BlueTeeth")
    BrotherQL820NWB.Initialize("BrotherPrinter")
    BrotherQL820NWB.Connect("QL-820NWB4149")

Pero luego en el evento BrootherPrinter_Connected no se como enviar los comandos adecuados para escribir un texto

IMPRESION:
Sub BrotherPrinter_Connected (Success As Boolean)
    If Success Then
        Log("Imprimiendo...")
        printer.Initialize(BrotherQL820NWB.OutputStream)
        printer.WriteLine("PRUEBA")
        printer.Flush
        Log("Impresion finalizada.....")
        printer.Close
        BrotherQL820NWB.Disconnect
    End If
End Sub

Pone "imprimiendo..." e "impresion finalizada" pero no hace nada, si alguien me puede guiar se lo agradeceria.
 
Last edited:

TILogistic

Expert
Licensed User
Longtime User
Pruebe esto si su impresora esta configurada para comando ESC/POS:

Manual:

manuales:
 

TILogistic

Expert
Licensed User
Longtime User
MANUAL Guía del usuario


1666338518868.png


Pagina 29
1666338599590.png
 
Last edited:

Edu Portu

Member
Licensed User
Longtime User
Pruebe esto si su impresora esta configurada para comando ESC/POS:

Manual:

manuales:
He probado el ejemplo de con esta clase y pasa lo mismo, cuando seleeciono pone "Connect successfully", pero luego ninguna de las teclas imprime nada...

CORRECCIÓN - Habia que configurar dentro del menu de la impresora el modo ESC/POS (estaba en modo plantillas P-Touch). Ahora el ejemplo si que imprime, sigo investigando, muchas gracias.
 
Last edited:

TILogistic

Expert
Licensed User
Longtime User
CORRECCIÓN - Habia que configurar dentro del menu de la impresora el modo ESC/POS (estaba en modo plantillas P-Touch). Ahora el ejemplo si que imprime, sigo investigando, muchas gracias.
Puedes cambiar por código con comando ESC/POS esta en el manual

1666380069836.png
 
Last edited:

TILogistic

Expert
Licensed User
Longtime User
Nota:
La clase que te recomendé no tiene todos los comandos de todas las impresoras, solo las generales o comunes de impresoras que usan comandos ESC/POS

Pero, el autor dejo expuestas la funciones para que envíes comandos ESC/POS que necesites enviar:

Verifica la clase:
B4X:
' Send the contents of an array of bytes to the printer
' Remember that if the printer is expecting text the bytes will be printed as characters in the current code page
Public Sub WriteBytes(data() As Byte)
    If Connected Then
        Astream.Write(data)
    End If
End Sub

' Send the string to the printer in IBM437 encoding which is the original PC DOS codepage
' This is usually the default codepage for a printer and is CodePage = 0
' Beware of using WriteString with Chr() to send numeric values as they may be affected by Unicode to codepage translations
' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenation with other string data
Public Sub WriteString(data As String)
    WriteString2(data, "IBM437")
End Sub

' Send the string to the printer in the specified encoding
' You also need to set the printer to a  matching encoding using the CodePage property
' Beware of using WriteString2 with Chr() to send numeric values as they may be affected by codepage substitutions
' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenatipon with other string data
Public Sub WriteString2(data As String, encoding As String)
    Try
        If Connected Then
            Astream.Write(data.GetBytes(encoding))
        End If
    Catch
        Log("Printer error : " & LastException.Message)
        AStream_Error
    End Try
End Sub

PD:
Es muy buena impresora, es una de las que me gusta, es similar a las impresoras Zebras.
 
Last edited:

Edu Portu

Member
Licensed User
Longtime User
Nota:
La clase que te recomendé no tiene todos los comandos de todas las impresoras, solo las generales o comunes de impresoras que usan comandos ESC/POS

Pero, el autor dejo expuestas la funciones para que envíes comandos ESC/POS que necesites enviar:

Verifica la clase:
B4X:
' Send the contents of an array of bytes to the printer
' Remember that if the printer is expecting text the bytes will be printed as characters in the current code page
Public Sub WriteBytes(data() As Byte)
    If Connected Then
        Astream.Write(data)
    End If
End Sub

' Send the string to the printer in IBM437 encoding which is the original PC DOS codepage
' This is usually the default codepage for a printer and is CodePage = 0
' Beware of using WriteString with Chr() to send numeric values as they may be affected by Unicode to codepage translations
' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenation with other string data
Public Sub WriteString(data As String)
    WriteString2(data, "IBM437")
End Sub

' Send the string to the printer in the specified encoding
' You also need to set the printer to a  matching encoding using the CodePage property
' Beware of using WriteString2 with Chr() to send numeric values as they may be affected by codepage substitutions
' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenatipon with other string data
Public Sub WriteString2(data As String, encoding As String)
    Try
        If Connected Then
            Astream.Write(data.GetBytes(encoding))
        End If
    Catch
        Log("Printer error : " & LastException.Message)
        AStream_Error
    End Try
End Sub

PD:
Es muy buena impresora, es una de las que me gusta, es similar a las impresoras Zebras.
Si, ese era el problema, que los codigos ESC/POS eran genericos y no los concretos de la BROTHER... Una vez cambiados los codigos por los especificos ha funcionado correctamente.

Muchas gracias.
 
Top