2013-04-18 33 views
5

Ich versuche, ein Etikett von einer Android-App auf einen Zebra-Drucker (iMZ 320) zu drucken, aber es scheint meine Befehlszeile nicht zu verstehen.Befehl wird von Zebra nicht verstanden iMZ320

Wenn ich versuche, diesen Beispielcode, der Drucker druckt alle Befehle auf dem Papier, wie ich sie an den Drucker senden:

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

ich die ZPL-Programmierung Tutorial von Zebra offiziellen Website gelesen haben, aber ich Ich kann nicht herausfinden, wie ich meinen Drucker mit ZPL-Befehlen in Ordnung bringen kann.

+4

Bitte reopen.I glaube nicht, dass diese Frage geschlossen werden soll. Ich arbeite gerade mit dem Zebra iMZ320 auf iOS. Ich erkläre das auch, wenn ich das mache, werde ich im Kommentar eine Antwort posten, wenn das nicht wieder geöffnet wird. – jaime

+0

K, fügte meine Antwort als Kommentar zu Jasons Antwort unten hinzu. – jaime

+1

Danke jaime. Ich weiß nicht, wer meinen Post geschlossen hat, ich denke auch, dass es nicht geschlossen werden sollte. – Darknoe

Antwort

6

Das Zebra IMZ in Zeile Druckmodus versenden kann. Dies bedeutet, dass die von Ihnen bereitgestellten ZPL-Befehle nicht analysiert und interpretiert werden, sondern gedruckt werden. Sie müssen den Drucker im ZPL-Modus anstatt im Zeilendruckmodus konfigurieren. Der folgende Befehl sollte es tun:

! U1 setvar „device.languages“ „zpl“

Hinweis: In einigen Fällen können Sie die Sprache einstellen müssen „hybrid_xml_zpl“ statt nur „zpl“

Beachten Sie, dass Sie benötigen eine neue Zeile schließen Zeichen (oder Wagenrücklauf) am Ende dieses Befehls. Sie können die Zebra Setup Utilities verwenden, um Befehle direkt über die Kommunikationssicht an den Drucker zu senden, die Sie über die Schaltfläche "Kommunikation" auf dem Hauptbildschirm aufrufen können.

Zebra Setup Utilities: http://www.zebra.com/us/en/products-services/software/manage-software/zebra-setup-utility.html

ZPL-Handbuch Seite 705 (Details Befehl wie die oben genannten): https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf

+0

Alternativ können Sie den Befehl, den ich oben aufgelistet habe, über Ihre App senden, anstatt über die Zebra Setup Utilities. Sie müssen jedoch ein '\ r \ n' am Ende der Zeichenfolge anhängen. –

+1

Schließlich kontaktierte mich der "Kundenservice" des Zebras und sie erklärten mir, dass Sie Textbefehle in CPCL und Bilder in ZPL senden müssen, aber ihre Informationen sind s o kompliziert und nutzlos, dass ich immer noch nichts mit einem guten Format drucken kann. Danke irgendwas :) – Darknoe

+2

GEFUNDEN! Sie müssenvar auf "hybrid_xml_zpl" setzen, weil es im Zeilendruckmodus ausgeliefert wird und die Einstellung "zpl" nicht funktioniert. https://km.zebra.com/kb/index?page=content&id=SO8503&actp=LIST_RECENT – jaime

1

Wenn Sie einfachen Text drucken möchten, können Sie normale "rohe" Daten über BT-Buchse an Zebra-Drucker senden und es wird gedruckt! Sie müssen die Zebra-Druckbibliothek nicht verwenden.

Führen Sie einfach diesen Code in async Aufgabe zwei Zeilen Klartext drucken:

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

gehen Ich muss Text formatieren und Bilder drucken, der Drucker versteht nicht meine Befehle mit Ihrem Code weder :( – Darknoe

+0

Es druckt die roher Text, wenn er auf "line_print" eingestellt ist, was aber nicht die meisten Leute wollen. Die Standardeinstellungen von Zebra erscheinen entweder gedankenlos oder unsinnig. Mit dem QLn220 muss ich einen Befehl senden, damit er sich nicht jedes Mal ausschaltet –

Verwandte Themen