preloader

Now Hiring: Are you a driven and motivated PHP (Laravel) Developer?

News

Portable Bluetooth Thermal Printer Goojprt PT-210

[vc_row lg_spacing=”padding_bottom:30″ md_spacing=”padding_bottom:0″][vc_column][vc_column_text]

Portable Bluetooth Thermal Printer Goojprt PT-210

Version: PT2D-6004

Interfaces: Bluetooth 4.0 (classic/bluetooth low energy), Mini USB

Print method: Line thermal printer

Dot per line: 384 dots/line

Commands: ESC/POS compatible with order sets

Internal characters: ASCII CH, GB18030

Text/Graphic support: english, russian, ukrainian, figure, symbol, chinese, graph, curve, icon pre-stored, 9 barcodes, QR code, PDF417

We had used this printer in some pet projects. We don’t have a full bluetooth spec so do some research.[/vc_column_text][tm_image image=”9413″ lg_spacing=”margin_top:20″ md_spacing=”margin_top:20″][/vc_column][/vc_row][vc_row lg_spacing=”padding_top:60;padding_bottom:60″ md_spacing=”padding_top:30;padding_bottom:30″][vc_column][vc_column_text]

After power on this printer starts advertising bluetooth packets.

As you can see on the screenshot this device supports bluetooth classic and bluetooth low energy protocols.

Advertising packet contains two services:

UUID = 0x18F0 (000018f0-0000-1000-8000-00805f9b34fb) – its a standard battery service

UUID = e7810a71-73ae-499d-8c15-faa9aef0c3f2 – its a custom service

Connect to printer by bluetooth and discover services:[/vc_column_text][tm_image image=”9414″ lg_spacing=”margin_top:20″][/vc_column][/vc_row][vc_row lg_spacing=”padding_top:30;padding_bottom:30″ md_spacing=”padding_top:0;padding_bottom:0″][vc_column][vc_column_text]

There are 4 services:

uuid=”000018f0-0000-1000-8000-00805f9b34fb” (battery)

uuid=”0000fee7-0000-1000-8000-00805f9b34fb” (Custom UUID of Tencent Holdings Limited)

uuid=”e7810a71-73ae-499d-8c15-faa9aef0c3f2″ (Custom printer service)

uuid=”49535343-fe7d-4ae5-8fa9-9fafd205e455″ (ISSC Proprietary Service, UART ISSC dual mode)[/vc_column_text][tm_image image=”9415″ lg_spacing=”margin_top:20;margin_bottom:20″][vc_row_inner][vc_column_inner][vc_column_text]

and characteristics:
(Battery service)

[/vc_column_text][vc_raw_js]JTNDc2NyaXB0JTNFJTBBalF1ZXJ5JTI4ZG9jdW1lbnQlMjkucmVhZHklMjhmdW5jdGlvbiUyOCUyNCUyOSU3QiUwQSUyNCUyOCUyNy50ZXh0X2NvcHlfbGluay0xJTI3JTI5LmNsaWNrJTI4ZnVuY3Rpb24lMjglMjklMjAlN0IlMEF2YXIlMjAlMjR0ZXh0X2NvcHklMjAlM0QlMjAlMjQlMjh0aGlzJTI5JTNCJTBBdmFyJTIwJTI0dGVtcCUyMCUzRCUyMCUyNCUyOCUyMiUzQ2lucHV0JTNFJTIyJTI5JTNCJTBBJTI0JTI4JTIyYm9keSUyMiUyOS5hcHBlbmQlMjglMjR0ZW1wJTI5JTNCJTBBJTI0dGVtcC52YWwlMjglMjR0ZXh0X2NvcHkudGV4dCUyOCUyOSUyOS5zZWxlY3QlMjglMjklM0IlMEFkb2N1bWVudC5leGVjQ29tbWFuZCUyOCUyMmNvcHklMjIlMjklM0IlMEElMjR0ZW1wLnJlbW92ZSUyOCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0xJTI3JTI5LmZhZGVJbiUyODQwMCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0xJTI3JTI5Lmh0bWwlMjglMjJDb3BpZWQlMjIlMjklM0IlMEElN0QlMjklM0IlMEElN0QlMjklM0IlMEElM0MlMkZzY3JpcHQlM0U=[/vc_raw_js][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner][vc_column_text css=”.vc_custom_1685961135244{margin-top: 20px !important;}”]

(Custom UUID of Tencent Holdings Limited)

[/vc_column_text][vc_raw_js]JTNDc2NyaXB0JTNFJTBBalF1ZXJ5JTI4ZG9jdW1lbnQlMjkucmVhZHklMjhmdW5jdGlvbiUyOCUyNCUyOSU3QiUwQSUyNCUyOCUyNy50ZXh0X2NvcHlfbGluay0yJTI3JTI5LmNsaWNrJTI4ZnVuY3Rpb24lMjglMjklMjAlN0IlMEF2YXIlMjAlMjR0ZXh0X2NvcHklMjAlM0QlMjAlMjQlMjh0aGlzJTI5JTNCJTBBdmFyJTIwJTI0dGVtcCUyMCUzRCUyMCUyNCUyOCUyMiUzQ2lucHV0JTNFJTIyJTI5JTNCJTBBJTI0JTI4JTIyYm9keSUyMiUyOS5hcHBlbmQlMjglMjR0ZW1wJTI5JTNCJTBBJTI0dGVtcC52YWwlMjglMjR0ZXh0X2NvcHkudGV4dCUyOCUyOSUyOS5zZWxlY3QlMjglMjklM0IlMEFkb2N1bWVudC5leGVjQ29tbWFuZCUyOCUyMmNvcHklMjIlMjklM0IlMEElMjR0ZW1wLnJlbW92ZSUyOCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0yJTI3JTI5LmZhZGVJbiUyODQwMCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0yJTI3JTI5Lmh0bWwlMjglMjJDb3BpZWQlMjIlMjklM0IlMEElN0QlMjklM0IlMEElN0QlMjklM0IlMEElM0MlMkZzY3JpcHQlM0U=[/vc_raw_js][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner][vc_column_text css=”.vc_custom_1685961206787{margin-top: 20px !important;}”]

(ISSC Proprietary Service)

[/vc_column_text][vc_raw_js]JTNDc2NyaXB0JTNFJTBBalF1ZXJ5JTI4ZG9jdW1lbnQlMjkucmVhZHklMjhmdW5jdGlvbiUyOCUyNCUyOSU3QiUwQSUyNCUyOCUyNy50ZXh0X2NvcHlfbGluay0zJTI3JTI5LmNsaWNrJTI4ZnVuY3Rpb24lMjglMjklMjAlN0IlMEF2YXIlMjAlMjR0ZXh0X2NvcHklMjAlM0QlMjAlMjQlMjh0aGlzJTI5JTNCJTBBdmFyJTIwJTI0dGVtcCUyMCUzRCUyMCUyNCUyOCUyMiUzQ2lucHV0JTNFJTIyJTI5JTNCJTBBJTI0JTI4JTIyYm9keSUyMiUyOS5hcHBlbmQlMjglMjR0ZW1wJTI5JTNCJTBBJTI0dGVtcC52YWwlMjglMjR0ZXh0X2NvcHkudGV4dCUyOCUyOSUyOS5zZWxlY3QlMjglMjklM0IlMEFkb2N1bWVudC5leGVjQ29tbWFuZCUyOCUyMmNvcHklMjIlMjklM0IlMEElMjR0ZW1wLnJlbW92ZSUyOCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0zJTI3JTI5LmZhZGVJbiUyODQwMCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy0zJTI3JTI5Lmh0bWwlMjglMjJDb3BpZWQlMjIlMjklM0IlMEElN0QlMjklM0IlMEElN0QlMjklM0IlMEElM0MlMkZzY3JpcHQlM0U=[/vc_raw_js][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner][vc_column_text css=”.vc_custom_1685961271511{margin-top: 20px !important;}”]

(Custom printer service)

[/vc_column_text][vc_raw_js]JTNDc2NyaXB0JTNFJTBBalF1ZXJ5JTI4ZG9jdW1lbnQlMjkucmVhZHklMjhmdW5jdGlvbiUyOCUyNCUyOSU3QiUwQSUyNCUyOCUyNy50ZXh0X2NvcHlfbGluay00JTI3JTI5LmNsaWNrJTI4ZnVuY3Rpb24lMjglMjklMjAlN0IlMEF2YXIlMjAlMjR0ZXh0X2NvcHklMjAlM0QlMjAlMjQlMjh0aGlzJTI5JTNCJTBBdmFyJTIwJTI0dGVtcCUyMCUzRCUyMCUyNCUyOCUyMiUzQ2lucHV0JTNFJTIyJTI5JTNCJTBBJTI0JTI4JTIyYm9keSUyMiUyOS5hcHBlbmQlMjglMjR0ZW1wJTI5JTNCJTBBJTI0dGVtcC52YWwlMjglMjR0ZXh0X2NvcHkudGV4dCUyOCUyOSUyOS5zZWxlY3QlMjglMjklM0IlMEFkb2N1bWVudC5leGVjQ29tbWFuZCUyOCUyMmNvcHklMjIlMjklM0IlMEElMjR0ZW1wLnJlbW92ZSUyOCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy00JTI3JTI5LmZhZGVJbiUyODQwMCUyOSUzQiUwQSUyNCUyOCUyNy5jb3B5X2xpbmtfbWVzcy00JTI3JTI5Lmh0bWwlMjglMjJDb3BpZWQlMjIlMjklM0IlMEElN0QlMjklM0IlMEElN0QlMjklM0IlMEElM0MlMkZzY3JpcHQlM0U=[/vc_raw_js][vc_column_text css=”.vc_custom_1685960633765{margin-top: 20px !important;margin-bottom: 20px !important;}”]

To print a text we try to use characteristic uuid=”bef8d6c9-9c21-4c9e-b632-bd58c1009f9f” but in fact write operation is not available for this characteristic.

[/vc_column_text][/vc_column_inner][/vc_row_inner][tm_image image=”9416″ lg_spacing=”margin_top:20;margin_bottom:20″][vc_column_text]We able to print a text using another characteristic uuid=”49535343-8841-43f4-a8d4-ecbe34729bb3″ (ISSC Transparent RX)

You could prepare commands manually or use a library. For example:

“com.github.anastaciocintra:escpos-coffee:4.1.0”

To print “CITRUSDEV” you should convert this text into UTF-8 hex bytes (ASCII table) and add LF CR in hex (new line)


//text.toByteArray(Charsets.UTF_8)

val bytes = byteArrayOf(0x43, 0x49, 0x54, 0x52, 0x55, 0x53, 0x44, 0x45, 0x56, 0x0A, 0x0D)

val characteristic: BluetoothGattCharacteristic = bluetoothGatt.getService(serviceUUID).getCharacteristic(characteristicUUID)

characteristic.value = bytes

characteristic.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE

bluetoothGatt.writeCharacteristic(characteristic)[/vc_column_text][tm_image image=”9417″ lg_spacing=”margin_bottom:20;padding_top:17″][vc_column_text]

You could set different text style, alignment, font size or print image by sending ESC command (0x1B) and params.

[/vc_column_text][tm_image image=”9418″ lg_spacing=”margin_top:20;margin_bottom:20″][vc_column_text]Authored by Maksym Baidala.[/vc_column_text][/vc_column][/vc_row]