2013-04-18 26 views
5

我試圖從Android應用程序打印Zebra打印機(iMZ 320)的標籤,但它似乎並不理解我的命令行。命令不被斑馬線理解iMZ320

當我嘗試此示例代碼,打印機打印的所有命令的文件,因爲我把它們發送到打印機:

zebraPrinterConnection.write("^XA^FO50,50^ADN,36,20^FDHELLO^FS^XZ".getBytes()); 

我讀過從斑馬的官方網站的ZPL編程教程,但我無法弄清楚如何使我的打印機正常工作與ZPL命令。

+4

請reopen.I不認爲這個問題應該被關閉。我正在iOS上使用Zebra iMZ320。我也想到了,當我這樣做時,如果不重新打開,我會在評論中發佈一個答案。 – jaime

+0

K,將我的回答添加爲對jason下面答案的評論。 – jaime

+1

謝謝你的祕密。我不知道是誰關閉了我的帖子,我也認爲它不應該關閉。 – Darknoe

回答

6

斑馬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

+0

或者,您可以通過您的應用程序發送上面列出的命令,而不是通過Zebra Setup Utilities。但是,您必須在字符串的末尾附加'\ r \ n' –

+1

最後,Zebra的「客戶服務」與我聯繫,他們向我解釋說,您必須在CPCL和ZPL中發送文本命令,但他們的信息是s複雜和無用,我仍然無法打印任何格式良好的東西。謝謝任何方式:) – Darknoe

+2

發現它!您需要將setvar設置爲「hybrid_xml_zpl」,因爲它以行式打印模式提供,並且設置爲「zpl」不起作用。 https://km.zebra.com/kb/index?page=content&id=SO8503&actp=LIST_RECENT – jaime

1

如果你想打印簡單的文本,你可以發送正常的「原始」數據通過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; 
} 
+1

我需要格式化文本和打印圖像,打印機是不理解我的命令與您的代碼既:( – Darknoe

+0

它打印原始文本如果設置爲「line_print」模式,這並不是大多數人想要的,Zebra的默認設置看起來既沒有意思也沒有意義,在QLn220中,我必須發送一個命令,以便在任何時候命令都不會關閉發送到它!Bizarro! –