מדפסת תרמית ניידת Bluetooth Goojprt PT-210
גרסה: PT2D-6004
ממשקים: Bluetooth 4.0 (classic/bluetooth low energy), Mini USB
שיטת הדפסה: מדפסת תרמית שורתית
נקודות לכל שורה: 384 נקודות/שורה
פקודות: תואם ESC/POS עם ערכות פקודות
תווים פנימיים: ASCII CH, GB18030
תמיכה בטקסט/גרפיקה: אנגלית, רוסית, אוקראינית, מספרים, סמלים, סינית, גרפים, עקומות, אייקונים מובנים, 9 ברקודים, QR code, PDF417
השתמשנו במדפסת זו בכמה פרויקטים ניסיוניים. אין לנו מפרט Bluetooth מלא ולכן ביצענו מחקר עצמאי.

לאחר ההפעלה, המדפסת מתחילה לשדר חבילות Bluetooth.
כפי שניתן לראות בצילום המסך, המכשיר תומך בפרוטוקולי Bluetooth Classic ו-Bluetooth Low Energy.
חבילת השידור מכילה שני שירותים:
UUID = 0x18F0 (000018f0-0000-1000-8000-00805f9b34fb) – זהו שירות סוללה סטנדרטי
UUID = e7810a71-73ae-499d-8c15-faa9aef0c3f2 – זהו שירות מותאם אישית
התחברו למדפסת באמצעות Bluetooth ובצעו גילוי שירותים:

ישנם 4 שירותים:
uuid=”000018f0-0000-1000-8000-00805f9b34fb” (סוללה)
uuid=”0000fee7-0000-1000-8000-00805f9b34fb” (UUID מותאם אישית של Tencent Holdings Limited)
uuid=”e7810a71-73ae-499d-8c15-faa9aef0c3f2″ (שירות מדפסת מותאם אישית)
uuid=”49535343-fe7d-4ae5-8fa9-9fafd205e455″ (שירות קנייני ISSC, UART ISSC dual mode)
ומאפיינים:
(שירות סוללה)
[code language=”xml”]
<service uuid="000018f0-0000-1000-8000-00805f9b34fb">
<characteristic uuid="00002af0-0000-1000-8000-00805f9b34fb">
<descriptor configure="CCCD"/>
<property name="NOTIFY"/>
</characteristic>
<characteristic uuid="00002af1-0000-1000-8000-00805f9b34fb">
<permission name="WRITE"/>
<property name="WRITE"/>
<property name="WRITE_WITHOUT_RESPONSE"/>
</characteristic>
</service>
[/code]
(UUID מותאם אישית של Tencent Holdings Limited)
[code language=”xml”]
<service uuid="0000fee7-0000-1000-8000-00805f9b34fb">
<characteristic uuid="0000fec8-0000-1000-8000-00805f9b34fb">
<descriptor configure="CCCD"/>
<property name="INDICATE"/>
</characteristic>
<characteristic uuid="0000fec7-0000-1000-8000-00805f9b34fb">
<permission name="WRITE"/>
<property name="WRITE"/>
<property name="WRITE_WITHOUT_RESPONSE"/>
</characteristic>
</service>
[/code]
(שירות קנייני ISSC)
[code language=”xml”]
<service uuid="49535343-fe7d-4ae5-8fa9-9fafd205e455">
<characteristic uuid="49535343-1e4d-4bd9-ba61-23c647249616"> <!– ISSC Transparent TX –>
<descriptor configure="CCCD"/>
<property name="NOTIFY"/>
</characteristic>
<characteristic uuid="49535343-8841-43f4-a8d4-ecbe34729bb3"> <!– ISSC Transparent RX –>
<permission name="WRITE"/>
<property name="WRITE"/>
<property name="WRITE_WITHOUT_RESPONSE"/>
</characteristic>
<characteristic uuid="49535343-aca3-481c-91ec-d85e28a60318"> <!– ISSC Air Patch –>
<descriptor configure="CCCD"/>
<permission name="WRITE"/>
<property name="WRITE"/>
<property name="NOTIFY"/>
</characteristic>
</service>
[/code]
(שירות מדפסת מותאם אישית)
[code language=”xml”]
<service uuid="e7810a71-73ae-499d-8c15-faa9aef0c3f2">
<characteristic uuid="bef8d6c9-9c21-4c9e-b632-bd58c1009f9f">
<descriptor configure="CCCD"/>
<property name="NOTIFY"/>
</characteristic>
<characteristic uuid="bef8d6c9-9c21-4c9e-b632-bd58c1009f9f">
<!– NOTE: Write is declared but not actually supported –>
<permission name="WRITE"/>
<property name="WRITE"/>
<property name="WRITE_WITHOUT_RESPONSE"/>
</characteristic>
</service>
[/code]
כדי להדפיס טקסט ניסינו להשתמש במאפיין uuid=”bef8d6c9-9c21-4c9e-b632-bd58c1009f9f”, אך בפועל פעולת הכתיבה אינה זמינה עבור מאפיין זה.

הצלחנו להדפיס טקסט באמצעות מאפיין אחר uuid=”49535343-8841-43f4-a8d4-ecbe34729bb3″ (ISSC Transparent RX)
ניתן להכין פקודות ידנית או להשתמש בספרייה. לדוגמה:
“com.github.anastaciocintra:escpos-coffee:4.1.0”
כדי להדפיס “CITRUSDEV” יש להמיר את הטקסט לבייטים הקסדצימליים בפורמט UTF-8 (טבלת ASCII) ולהוסיף LF CR בהקסה (שורה חדשה)
[code language=”java”]
// 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)
[/code]
ניתן להגדיר סגנונות טקסט שונים, יישור, גודל גופן או להדפיס תמונה באמצעות שליחת פקודת ESC (0x1B) ופרמטרים.

נכתב על ידי Maksym Baidala.