我試圖從Android應用程序打印Zebra打印機(iMZ 320)的標籤,但它似乎並不理解我的命令行。命令不被斑馬線理解iMZ320
當我嘗試此示例代碼,打印機打印的所有命令的文件,因爲我把它們發送到打印機:
zebraPrinterConnection.write("^XA^FO50,50^ADN,36,20^FDHELLO^FS^XZ".getBytes());
我讀過從斑馬的官方網站的ZPL編程教程,但我無法弄清楚如何使我的打印機正常工作與ZPL命令。
我試圖從Android應用程序打印Zebra打印機(iMZ 320)的標籤,但它似乎並不理解我的命令行。命令不被斑馬線理解iMZ320
當我嘗試此示例代碼,打印機打印的所有命令的文件,因爲我把它們發送到打印機:
zebraPrinterConnection.write("^XA^FO50,50^ADN,36,20^FDHELLO^FS^XZ".getBytes());
我讀過從斑馬的官方網站的ZPL編程教程,但我無法弄清楚如何使我的打印機正常工作與ZPL命令。
斑馬IMZ可以在線打印模式出貨。這意味着它不會解析和解釋您提供的ZPL命令,而是會打印它們。您需要將打印機配置爲ZPL模式而不是行式打印模式。以下命令應該這樣做:
! U1 SETVAR「device.languages」「ZPL」
注:在某些情況下,你可能需要將語言設置爲「hybrid_xml_zpl」,而不僅僅是「ZPL」
請注意,您需要包括一個換行符字符(或回車)在這個命令的末尾。您可以使用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
或者,您可以通過您的應用程序發送上面列出的命令,而不是通過Zebra Setup Utilities。但是,您必須在字符串的末尾附加'\ r \ n' –
最後,Zebra的「客戶服務」與我聯繫,他們向我解釋說,您必須在CPCL和ZPL中發送文本命令,但他們的信息是s複雜和無用,我仍然無法打印任何格式良好的東西。謝謝任何方式:) – Darknoe
發現它!您需要將setvar設置爲「hybrid_xml_zpl」,因爲它以行式打印模式提供,並且設置爲「zpl」不起作用。 https://km.zebra.com/kb/index?page=content&id=SO8503&actp=LIST_RECENT – jaime
如果你想打印簡單的文本,你可以發送正常的「原始」數據通過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;
}
我需要格式化文本和打印圖像,打印機是不理解我的命令與您的代碼既:( – Darknoe
它打印原始文本如果設置爲「line_print」模式,這並不是大多數人想要的,Zebra的默認設置看起來既沒有意思也沒有意義,在QLn220中,我必須發送一個命令,以便在任何時候命令都不會關閉發送到它!Bizarro! –
請reopen.I不認爲這個問題應該被關閉。我正在iOS上使用Zebra iMZ320。我也想到了,當我這樣做時,如果不重新打開,我會在評論中發佈一個答案。 – jaime
K,將我的回答添加爲對jason下面答案的評論。 – jaime
謝謝你的祕密。我不知道是誰關閉了我的帖子,我也認爲它不應該關閉。 – Darknoe