我尝试从Android应用程序将标签打印到我的蓝牙热敏打印机。我设法打印文本,但我无法指定标签的大小
我的材料:
- 蓝牙热敏打印机:here
- 4“x2”标签= 100mmx50mm
- 应用程序:FlashLabelPrintLabel
我的打印机可以检测标签。例如,当我装入纸张时,它会自动对齐以在第一个标签上打印。使用FlashLabel或PrintLabel应用程序,一旦打印文本,打印机就会输出标签。我无法执行以下操作:我的文本打印正确,但标签只出来了一半。在我看来,打印机使用的是TSPL通信协议。是这个吗?如果你想,我反编译了2个工作的应用程序,试图看看它是如何完成的,但没有成功
在这里,我实际上在哪里:
private class PrintTask extends AsyncTask<BluetoothDevice, Void, Void> {
@Override
protected Void doInBackground(BluetoothDevice... devices) {
BluetoothDevice printerDevice = devices[0];
try {
// Establish Bluetooth connection with the printer
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); // UUID for SPP (Serial Port Profile)
bluetoothSocket = printerDevice.createRfcommSocketToServiceRecord(uuid);
bluetoothSocket.connect();
// Get the output stream to send print data
outputStream = bluetoothSocket.getOutputStream();
// Send TSPL commands to set up the label (102mm x 51mm) and print "Hello World" with larger font size
String printData = "SIZE 100 mm,50 mm\nGAP 0 mm,0 mm\nCLS\nTEXT 10 mm,10 mm,\"0\",0,2,2,\"Hello World\"\nPRINT 1,1\n";
// Add escape command
printData += "HOME\n";
printData += "PRINT 1,1\n";
outputStream.write(printData.getBytes());
// Close the Bluetooth connection and output stream
outputStream.close();
bluetoothSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// Display a successful print message
Toast.makeText(MainActivity.this, "Printok", Toast.LENGTH_SHORT).show();
}
}
提前感谢任何愿意花时间帮助我的人。
1条答案
按热度按时间6ie5vjzr1#
好的。最后我发现了我的问题。我没有指定两个标签之间的空间。她的网站解释了TSPL命令:WebSite
这里有一个我的代码的例子,如果它可以帮助别人:
}