Spanish Codigo de barras ESC/P

Rosarito

New Member
Hola, buenas tardes, verán acabo de cambiar una impresora matricial OKI Pacemark 3410 por una EPSON FX-2190 ... El punto es que tengo un .txt el cual contiene acuses con información de clientes y un código de barras con el número de orden , este código de barras se imprime gracias a unas secuencias de escape, pero al enviarlo a la nueva impresora no se imprime dicho código, solo los números, ya busque por todos lados pero no encuentro la solución, podrían ayudarme :(

NOTAS:
La impresora emula en ESC / P & IBM PPDS
El manual de la impresora indica el Código de control para imprimir código de barras con comandos ESC / P es el: ESC (B y para imprimir siguiente con IBM PPDS es: ESC [f, ESC [p
La configuración de la impresora indica que la emulación que tiene seleccionada es ESC / P
Imprimo mediante cmd con un tipo

[código] ESC DLE A BS STX EOT SOH STX STX SOH ESC DLE B BEL <DATOS DE CODIGO DE BARRAS> [/ código]

Adjunto txt de ejemplo
 

Attachments

  • acuse.txt
    6.3 KB · Views: 18

Bladimir Silva Toro

Active Member
Licensed User
Hola @Rosarito

Si tu impresora es por conexion LAN si lo puedes hacer desde B4A.

Aqui te dejo el codigo

B4X:
Sub Process_Globals
    Dim TMT20II As Socket 'Network library
    Dim AStreams As AsyncStreams 'RandomAccessFile library
End Sub

Sub Activity_Create(FirstTime As Boolean)
    TMT20II.Initialize("TMT20II")
    TMT20II.Connect("192.168.0.100", 9100, 0) '100=Printer address, 9100=Port number (please look up port number)
End Sub

Sub TMT20II_Connected (Successful As Boolean)
    Log(Successful)
    If Successful Then
        AStreams.Initialize(TMT20II.InputStream, TMT20II.OutputStream, "AStreams")
        CallSub(Null, SendToPrinter)
    End If
End Sub

Sub SendToPrinter
    Dim SendMsg As String

    SendMsg = Chr(27) & Chr(61) & Chr(1) 'Select EPSON printer
    AStreams.Write(SendMsg.GetBytes("UTF8"))

    SendMsg = "Hello, this is a test print" 'Send this line to the EPSON printer
    AStreams.Write(SendMsg.GetBytes("UTF8"))

    SendMsg = Chr(27) & Chr(100) & Chr(2) 'Line feed
    AStreams.Write(SendMsg.GetBytes("UTF8"))

    SendMsg = Chr(27) & Chr(109) 'Partial cut receipt paper
    AStreams.Write(SendMsg.GetBytes("UTF8"))
End Sub

Si es conexion USB o LPT no creo que lo puedas hacer.
 

oparra

Well-Known Member
Licensed User
comentarios:

Tener presente que los parámetros del socket existe timeout y si es 0 la espera de conexión puede ser eterna.

es mejor controlar el timeout y capturar el estado antes de imprimir.

ejemplo B4A y B4J:
B4X:
Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
    
    'Network library
    Private PrinterZebra As Socket
    Private PrinterIP As String = "192.168.0.100"
    Private PrinterPort As Int = 9100
    Private PrinterTimeOut As Int = 600
    
End Sub

Public Sub Initialize
    PrinterZebra.Initialize("PrinterZebra")
End Sub

Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
End Sub

Private Sub Button1_Click
    Dim Text As String = File.ReadString(File.DirAssets, "label.txt")
    Wait For (SendFileToPrinter(Text)) Complete (Success As Boolean)
    If Success Then Return
    xui.MsgboxAsync("Error en la conexion con impresora", "Advertencia")
End Sub

Private Sub SendFileToPrinter(ZPL As String) As ResumableSub
    PrinterZebra.Connect(PrinterIP, PrinterPort, PrinterTimeOut)
    Wait For PrinterZebra_Connected (Successful As Boolean)
    If Not(Successful) Then Return False
    
    Dim AStreams As AsyncStreams
    AStreams.Initialize(PrinterZebra.InputStream, PrinterZebra.OutputStream, "AStreams")

    For Each Command As String In Regex.Split(Chr(13) & Chr(10), ZPL)
        AStreams.Write(Command.GetBytes("UTF8"))
    Next
        
    PrinterZebra.Close
    Return True
End Sub
 

Attachments

  • TEST.zip
    15.5 KB · Views: 15

oparra

Well-Known Member
Licensed User
ref:
 

oparra

Well-Known Member
Licensed User
Preguntas:

1. tu app ya se conecta a la impresora ?

2. tu app se conecta a traves de ?
1634789302629.png

3. El setup de la impresora dice que emulas esc/p?
1634789410207.png

4. Tu impresión de código de barra es a través de una imagen o comandos ?

1634789536046.png
 

Rosarito

New Member
Preguntas:

1. tu app ya se conecta a la impresora ?

2. tu app se conecta a traves de ?
View attachment 120577
3. El setup de la impresora dice que emulas esc/p?
View attachment 120578
4. Tu impresión de código de barra es a través de una imagen o comandos ?

View attachment 120579
Es a travez de comandos, específicamente con secuencias de escape
1636070023741.png

Este es el codigo que utilizaba en la OKIDATA para imprimir codigo de barras en ella se utilizan los comandos ESC DLE A pero en la epson es: ESC(B segun el manual Pero aunque cambio este comando
1636070139908.png

no me imprime el código de barras , solo los números, el manual me indica que este es el formato pero no se como utilizar las secuencias de escape
1636070226216.png
 

oparra

Well-Known Member
Licensed User
Sube un ejemplo B4X de como estas enviando los comandos a la impresora
 
Top