斑马条形码打印机(ZPL语言完成条形码的打印)

Posted

篇首语:捐躯赴国难,视死忽如归。本文由小常识网(cha138.com)小编为大家整理,主要介绍了斑马条形码打印机(ZPL语言完成条形码的打印)相关的知识,希望对你有一定的参考价值。

斑马条形码打印机(ZPL语言完成条形码的打印)

近期因为项目的需求,需要使用到打印机来打印业务相关的条形码和其他信息,由于之前有操作其它打印机的经验,Leader就安排我来做这个了(凑哦,这能说我是懵逼的么)。于是就开始了我的探索之旅啦,不对,是踩坑之旅,总的来说还是蛮顺利的,这里就稍微总结一下经验。

ZPL(Zebra Programming Language)是斑马公司自主设计的语言(斑马公司的业务主要是制作斑马条形码打印机)。如今大部分条码打印机都是能够识别ZPL指令的,我们能够用ZPL指令编写一个模板,然后将自己主动生成的条形码值(字符串)依照一定格式格式化成新的字符串。然后将这些内容传入打印机就可以。

下面是ZPL语言的含义:

^XA——开始标签格式

^LH0,0——打印的原点位置

^F0203,203——文本开始位置

^ADN,30,30——字体类型与大小

^FDExampleString——打印正文字符串,FD后为打印的内容

^FS ——无特殊含义,一般用在一段指令段的结尾

^XZ ——结束标签格式

^BY2.0,3.0——条码线条的粗细

^B7N,5,3,,,N ——二维码的长宽比

^BCN,120,Y,N,N,A——条形码的高度

了解上面的这些指令之后就可以写一个完整的指令,来打印条形码。

^XA^LH10,10^FO90,60^ADN,20,10^BY2.0,3.0^BCN,120,Y,N,N,A^FDL000001^FS^XZ


打印结果

除了上面的指令之外,当然还需要指令的发出者——后台代码,这里我是用Android(Java代码)实现的,下面贴出代码,希望能给有需要的人一些参考。

import com.tao.admin.loglib.Logger;import com.zebra.sdk.comm.BluetoothConnection;import com.zebra.sdk.comm.Connection;import com.zebra.sdk.comm.ConnectionException;import com.zebra.sdk.comm.TcpConnection;import com.zebra.sdk.printer.PrinterLanguage;import com.zebra.sdk.printer.ZebraPrinter;import com.zebra.sdk.printer.ZebraPrinterFactory;import com.zebra.sdk.printer.ZebraPrinterLanguageUnknownException;public class PrinterHelper private static ZebraPrinter printer; private static Connection printerConnection; public static void printStr(final String printStr) //新开线程中执行打印操作 new Thread(new Runnable() @Override public void run() printer = connect(); if (printer != null) sendLabel(printer,printerConnection,printStr); else disconnect(printerConnection); ).start(); public static ZebraPrinter connect() printerConnection = null; try int port = Integer.parseInt("9100"); //和打印机1对1匹配 printerConnection = new TcpConnection("10.240.161.228", port); catch (NumberFormatException e) Logger.e("Printer Error 1", e.getMessage()); return null; try printerConnection.open(); catch (ConnectionException e) Logger.e("Printer Error 2-1", e.getMessage()); PrinterHelper.disconnect(printerConnection); ZebraPrinter printer = null; if (printerConnection.isConnected()) try printer = ZebraPrinterFactory.getInstance(printerConnection); PrinterLanguage pl = printer.getPrinterControlLanguage(); catch (ConnectionException e) Logger.e("Printer Error 2-2", e.getMessage()); printer = null; PrinterHelper.disconnect(printerConnection); catch (ZebraPrinterLanguageUnknownException e) Logger.e("Printer Error 3", e.getMessage()); printer = null; PrinterHelper.disconnect(printerConnection); return printer; private static void sendLabel(ZebraPrinter printer,Connection printerConnection,String printStr) try byte[] configLabel = getConfigLabel(printer,printerConnection,printStr); printerConnection.write(configLabel); if (printerConnection instanceof BluetoothConnection) String friendlyName = ((BluetoothConnection) printerConnection).getFriendlyName(); catch (ConnectionException e) Logger.e("Printer Error 2-3", e.getMessage()); finally disconnect(printerConnection); /** * 发送打印指令到打印机 * @return */ private static byte[] getConfigLabel(ZebraPrinter printer,Connection printerConnection,String printStr) PrinterLanguage printerLanguage = printer.getPrinterControlLanguage(); byte[] configLabel = null; if (printerLanguage == PrinterLanguage.ZPL) Logger.e("Print Language","ZPL"); configLabel = ("^XA^LH10,10^FO90,60^ADN,20,10^BY2.0,3.0^BCN,120,Y,N,N,A^FD"+printStr+"^FS^XZ").getBytes(); else if (printerLanguage == PrinterLanguage.CPCL) Logger.e("Print Language","CPCL"); String cpclConfigLabel = "! 0 200 200 406 1\\r\\n" + "ON-FEED IGNORE\\r\\n" + "BOX 20 20 380 380 8\\r\\n" + "T 0 6 137 177 TEST\\r\\n" + "PRINT\\r\\n"; configLabel = cpclConfigLabel.getBytes(); return configLabel; public static void disconnect(Connection printerConnection) try if (printerConnection != null) printerConnection.close(); catch (ConnectionException e) Logger.e("Printer Error 2-4", e.getMessage());

调用打印机打印条形码:PrinterHelper.printStr("L000001");

注意:1,打印机必须要和发指令的设备(比如手机,扫描机)联网,可以通过wifi或者蓝牙,建议使用蓝牙,因为比较稳定。

2,使用上面代码记得导入相关的jar包(在build.gradle里加入api files('libs/ZSDK_ANDROID_API.jar')的dependency)。


码字不易,如果觉得有帮助,一定要给我点赞哟~~

不然信不信我砸了你家灯,半夜偷亲你 ( ̄ε  ̄) !!!

相关参考

斑马专用碳带厂(斑马条形码打印机打印不清晰怎么办)

  斑马条形码打印机是比较知名的打印机品牌,在使用的时候,有的客户遇到打印不清晰,不清晰的情况,是怎么办呢?斑马打印可以打印各类条形码标签材质,好标签能让你的产品锦上添花。条形码打印机打印出来的条形码...

条码机打印不清晰(斑马条形码打印机打印不清晰怎么办)

  斑马条形码打印机是比较知名的打印机品牌,在使用的时候,有的客户遇到打印不清晰,不清晰的情况,是怎么办呢?斑马打印可以打印各类条形码标签材质,好标签能让你的产品锦上添花。条形码打印机打印出来的条形码...

斑马彩色带。黑色带(如何选购条斑马碳带)

1、条形码碳带有针眼(气泡):由于油墨没有涂均造成。会造成打印效果不清晰。 2、斑马碳带起皱:由于分切时张力控制系统出现问题,会导致在条形码碳带上的某一小块区域打印无字。 3、条形码碳带有空白:由于光膜未处...

条形码打印计价秤设置(广州远景达:斑马条码打印机,条码打印不干胶标签,你了解多少?)

...纸质地致密、均匀,有很好的内部强度和透光度,是制作条形码标签的常用材料。其常用的颜色有蓝色、白色。面纸背部涂的就是粘胶剂,它一方面保证底纸与面纸的适度粘连,另一方面保证面纸被剥离后,又能与粘贴物具有结...

斑马便携式打印机(斑马打印机---170XI4 300DPI)

...应用而设计.斑马170XI4条码打印机生产带清晰文字、清晰条形码和精密对准的详细标签。斑马170XI4条码打印机行业中非常先进的RFID功能。斑马170XI4条码打印机专为大容量、关键任务标签应用而设计。斑马170XI4条码打印机生产带清...

斑马600dpi打印机(斑马打印机---170XI4 300DPI)

...应用而设计.斑马170XI4条码打印机生产带清晰文字、清晰条形码和精密对准的详细标签。斑马170XI4条码打印机行业中非常先进的RFID功能。斑马170XI4条码打印机专为大容量、关键任务标签应用而设计。斑马170XI4条码打印机生产带清...

怎么打印属于自己的条码(普通打印机如何打印条形码)

条码打印机可以打印条形码,普通打印机一样可以打印条形码,只需要在条码打印软件中生成条形码,设置好标签的大小,就可以钟在条码打印软件中选择普通打印机打印条形码了。 打开条码打印软件,新建标签,选择普通打...

条形码打印机怎么装纸(条码打印机怎样打印多列条形码)

...下手。接下来就给大家介绍下在条码打印软件中设计多列条形码的步骤:在条码打印软件中新建一个标签,选择打印机,软件里面的纸张尺寸需要根据标签纸的实际尺寸进行设置,点击下一步。设置标签行列为1行3列,点击下一...

怎样用打印机打印条码(条码打印软件如何生成跳号条形码)

...今天就给大家介绍一下如何用中琅条码打印软件生成跳号条形码。在中琅条码打印软件中新建一个空白标签,选择打印机并自定义设置标签纸张尺寸(如60*40),点击下一步设置行列为2行2列(标签纸张以及行列都根据自己的实...

流水号打印机(条码打印机怎样打印多列条形码)

...下手。接下来就给大家介绍下在条码打印软件中设计多列条形码的步骤:在条码打印软件中新建一个标签,选择打印机,软件里面的纸张尺寸需要根据标签纸的实际尺寸进行设置,点击下一步。设置标签行列为1行3列,点击下一...