B4J Library jSD: Bluetooth Printer

Star-Dust

Expert
Licensed User
BT_Printer library allows you to print text and image to a bluetooth thermal printers
It is similar to the BT_Printer library for Android (BLE_Printer for iOS), and implementations, events and methods are almost identical.
We are working to have the same library for all platforms. On iOS it will be different because it uses BLE, but we will try to standardize the use.

This version requires an activation code. If you do not have a code then it will work in DEMO mode and you will only be able to print every 4 minutes.

Dependence: jBluetooth

jSD_BT_Printer

Author:
Star-Dust
Version: 0.05

  • BT_Printer
    • Events:
      • BluetoothIsDisabled
      • ConnectedToPrint (Success As Boolean)
      • DataReceived (Buffer() As Byte)
      • DiscoveryFinished
      • DiscoveryNewPrinter (Name As String, MacAdress As String)
      • DiscoveryNoDeviceFound
      • ErrorDiscovery
      • SendingError (Mac As String)
    • Fields:
      • AStream As AsyncStreams
    • Functions:
      • AddBuffer_ArrayByte (B As Byte()) As String
      • AddBuffer_BarCode (Code As String) As String
      • AddBuffer_Bitmap (Bmp As Image, ShiftLeft As Int) As String
      • AddBuffer_List_Write (list As List) As String
      • AddBuffer_List_WriteLine (list As List) As String
      • AddBuffer_Tab (ArrayTab As Int()) As String
      • AddBuffer_Write (Text As String) As String
      • AddBuffer_WriteLine (Text As String) As String
      • Class_Globals As String
      • ClearBuffer As String
      • Close As String
      • Connected As Boolean
      • flushAllAndClose As String
      • Initialize (CallBack As Object, EventName As String, EncodingType As String, CodeActivation As String) As String
        Initializes the object. You can add parameters to this method if needed.
      • IsInitialized As Boolean
        Verifica se l'oggetto sia stato inizializzato.
      • SearchNewPrinter As String
      • SelectFromMac (Mac As String) As String
      • SendBufferToPrinter
  • ESC_POS
    • Fields:
      • BoldOff As String
      • BoldOn As String
      • DoubleOff As String
      • DoubleOn As String
      • FontA_Bold As String
      • FontA_DoubleHight As String
      • FontA_DoubleWide As String
      • FontA_DoubleWideHeight As String
      • FontA_Normal As String
      • FontB_Bold As String
      • FontB_DoubleHeight As String
      • FontB_DoubleWide As String
      • FontB_DoubleWideHeight As String
      • FontB_Normal As String
      • Horizzontal As String
      • InitializePrinter As String
      • NoUnderline As String
      • QueryErrorCauses As String
      • QueryOfflineCauses As String
      • QueryPaperStatus As String
      • QueryPrinterStatus As String
      • Underline1 As String
      • Underline2 As String
      • Vertical As String
    • Functions:
      • Process_Globals As String
  • Encoding
    • Fields:
      • Chinese As String
      • ChineseS As String
      • Code_PC437 As Int
      • Code_PC850 As Int
      • Code_PC857 As Int
      • Code_PC858 As Int
      • Code_PC860 As Int
      • Code_PC863 As Int
      • Code_WPC1252 As Int
      • DOS_Latin_1 As String
      • IBM_PC As String
      • ISO8859 As String
      • UTF8 As String
      • Windows1252 As String
    • Functions:
      • Process_Globals As String


Stampa.png
upload_2019-3-12_14-44-41.png
 

Attachments

Last edited:

Star-Dust

Expert
Licensed User
Update rel 0.02

  • Now you can print images.

To get the activation code (to have the complete functions) contact me in private
 

vvg

Member
Licensed User
Update rel 0.02

  • Now you can print images.

To get the activation code (to have the complete functions) contact me in private
Is this the update of your library what i m trying for?
Can i use it for b4a?
If so, as you said how contact you privately?
Private message means private conversation in b4a community site or your email? Pl provide email if necessary to contact u on email.
 

Star-Dust

Expert
Licensed User
This section of the forum is dedicated to B4J
 

Star-Dust

Expert
Licensed User
Update rel 0.03

Inserted an example to print characters with another font using XUI.
B4X:
Printer.AddBuffer_Writeline("TEST PRINTER")
Printer.AddBuffer_Writeline("_____________")
Printer.SendBufferToPrinter
Printer.ClearBuffer
Printer.AddBuffer_Bitmap(CreateImage(Chr(0xF209),xui.CreateFontAwesome(60)),0)
Printer.AddBuffer_Bitmap(CreateImage(Chr(0xF17B),xui.CreateFontAwesome(60)),0)
Printer.SendBufferToPrinter

B4X:
Sub CreateImage(Text As String,Font As B4XFont) As Image
    Dim Can As B4XCanvas
    Dim V As B4XView = xui.CreatePanel("")
    V.SetLayoutAnimated(0,0,0,120,120)
 
    Can.Initialize(V)
    Can.DrawRect(Can.TargetRect,xui.Color_White,True,1)
    Can.DrawText(Text,Can.TargetRect.CenterX,Can.TargetRect.CenterY,Font,xui.Color_Black,"CENTER")
    Can.Invalidate
    Return Can.CreateBitmap
End Sub
RESULT
OtherFont.png
 

Star-Dust

Expert
Licensed User
Update rel 0.04
 

Bob Spielen

Active Member
Licensed User
Helo SD, I have a BlueBamboo Model P25-M printer. Executing the example it crashes.
When I comment the lines where the example Adds a BitMap it works fine. What could it be that
the printer does not print the images?
Thanks in advance for you advice....
 

Star-Dust

Expert
Licensed User
It would be helpful for me to see the error message
 

Bob Spielen

Active Member
Licensed User
To speed up processing I just placed the command: Printer.SelectFromMac("00:08:1B:95:42:BD") in B4A and the flow goes to Printer_ConnectedToPrint (Success As Boolean) as true.
The question here is related to B4J, where (Printer.SelectFromMac("00081B9542BD")) it doesn't work, I have to search first. Is it possible to connect directly without have to search the device?
 

Star-Dust

Expert
Licensed User
To speed up processing I just placed the command: Printer.SelectFromMac("00:08:1B:95:42:BD") in B4A and the flow goes to Printer_ConnectedToPrint (Success As Boolean) as true.
The question here is related to B4J, where (Printer.SelectFromMac("00081B9542BD")) it doesn't work, I have to search first. Is it possible to connect directly without have to search the device?
Make sure the string that the Mac contains is correct and formatted correctly. I see you didn't put a colon in B4J.

However I will run tests to verify.
 
Top