我正在尝试从Android应用程序打印标签到Zebra打印机(iMZ 320),但它似乎不理解我的命令行。
当我尝试这个示例代码时,当我将它们发送到打印机时,打印机将所有命令打印到纸上:
zebraPrinterConnection.write("^XA^FO50,50^ADN,36,20^FDHELLO^FS^XZ".getBytes());
我从Zebra的官方网站上阅读了ZPL编程教程,但是我不知道如何让我的打印机使用ZPL命令正常工作。
Zebra iMZ可能以行打印模式发货。这意味着它不会解析和解释您提供的ZPL命令,而是将它们打印出来。您需要将打印机配置为ZPL模式,而不是行打印模式。下面的命令可以做到:
!U1 setvar"设备"。语言"zpl"
注意:在某些情况下,您可能必须将语言设置为"hybrid_xml_zpl"而不仅仅是"zpl"
注意,您需要在该命令的末尾包含一个换行符(或回车符)。您可以使用Zebra Setup Utilities通过其"通信"透视图直接向打印机发送命令,点击主屏幕上的"通信"按钮即可。
Zebra Setup Utilities: http://www.zebra.com/us/en/products-services/software/manage-software/zebra-setup-utility.html
ZPL手册第705页(如上面列出的详细命令):https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf
如果你想打印简单的文本,你可以通过BT插座发送正常的"原始"数据到Zebra打印机,它将打印它!你不需要使用Zebra打印库。
在异步任务中运行这段代码打印两行纯文本:
protected Object doInBackground(Object... params) {
//bt address
String bt_printer = "00:22:58:31:85:68";
String print_this = "Hello Zebra!rThis is second line";
//vars
BluetoothSocket socket = null;
BufferedReader in = null;
BufferedWriter out = null;
//device from address
BluetoothDevice hxm = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(bt_printer);
UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
try {
//create & connect to BT socket
socket = hxm.createRfcommSocketToServiceRecord(applicationUUID);
socket.connect();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write(print_this);
out.flush();
//some waiting
Thread.sleep(3000);
//in - nothing, just wait to close connection
in.ready();
in.skip(0);
//close all
in.close();
socket.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}