2013-04-18 28 views
5

Sto provando a stampare un'etichetta da un'app Android su una stampante Zebra (iMZ 320) ma sembra che non comprenda la mia riga di comando.Comando non compreso da Zebra iMZ320

Quando provo questo codice di esempio, la stampante stampa tutti i comandi per la carta come li mando alla stampante:

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

Ho letto il tutorial di programmazione ZPL dal sito ufficiale di Zebra, ma io non riesco a capire come far funzionare bene la mia stampante con i comandi ZPL.

+4

prega reopen.I non credo che questa domanda avrebbe dovuto essere chiuso. In questo momento sto lavorando con Zebra iMZ320 su iOS. Lo sto capendo anche io, quando lo farò, invierò una risposta nel commento se questo non viene riaperto. – jaime

+0

K, ho aggiunto la mia risposta come commento sulla risposta di Jason in basso. – jaime

+1

Grazie Jaime. Non so chi ha chiuso il mio post, penso anche che non dovrebbe essere chiuso. – Darknoe

risposta

6

La Zebra IMZ spedire in modalità di stampa linea. Ciò significa che non analizzerà e interpreterà i comandi ZPL che hai fornito, ma piuttosto li stamperà. È necessario configurare la stampante in modalità ZPL anziché in modalità stampa in linea. Il seguente comando dovrebbe farlo:

! U1 setvar "device.languages" "zpl"

Nota: In alcuni casi potrebbe essere necessario impostare la lingua "hybrid_xml_zpl" invece di "zpl"

Si noti che è necessario includere una nuova riga carattere (o ritorno a capo) alla fine di questo comando. È possibile utilizzare le utilità di configurazione di Zebra per inviare comandi direttamente alla stampante attraverso la sua prospettiva di "comunicazione", disponibile premendo il pulsante "comunicazione" nella schermata principale.

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

ZPL Manuale pagina 705 (dettagli comando come quello di cui sopra): https://support.zebra.com/cpws/docs/zpl/zpl_manual.pdf

+0

In alternativa, puoi inviare il comando che ho elencato sopra tramite la tua app invece che tramite Zebra Setup Utilities. Dovresti tuttavia aggiungere un '\ r \ n' alla fine della stringa. –

+1

Finalmente il "servizio clienti" di Zebra mi ha contattato e mi hanno spiegato che devi inviare comandi di testo in CPCL e immagini in ZPL, ma le loro informazioni sono s o complicato e inutile che non riesco ancora a stampare nulla con un buon formato. Grazie in ogni modo :) – Darknoe

+2

TROVATO IT! È necessario impostare su "hybrid_xml_zpl" perché viene fornito nella modalità di stampa in linea e l'impostazione su "zpl" non funziona. https://km.zebra.com/kb/index?page=content&id=SO8503&actp=LIST_RECENT – jaime

1

Se si desidera stampare un testo semplice, è possibile inviare normali dati "grezzi" tramite il socket BT alla stampante Zebra e lo stamperà! Non è necessario utilizzare la libreria di stampa Zebra.

basta eseguire questo codice nel task asincrone per stampare due righe di testo normale:

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

Ho bisogno di formattare il testo e stampare le immagini, la stampante non capisce i miei comandi neanche con il codice :( – Darknoe

+0

Stampa il testo non elaborato se impostato sulla modalità "line_print", non è quello che la maggior parte delle persone desidera. Le impostazioni predefinite di Zebra sembrano insensate o prive di senso: con QLn220, devo inviare un comando in modo che non si spenga in qualsiasi momento Bizarro! –