斑马打印机本身就有支持条码和二维码的指令,在最开始没有通读文档的时候根本不清楚哪些指令是支持,哪些不支持。最开始的设想是将条码,二维码都生成图片格式,然后将图片使用ZPL指令打印出来,无赖图片打印出现了问题。
打印条形码(128码) ZPL_DrawBarcode(int px, int py, int width, int ratio, int barheight, string barcode) { sReturn = ; return string.Format(sReturn, px, py, width, ratio, barheight, barcode); }
打印条形码(128码)
打印二维码 ZPL_DrawQRCode(int px, int py, int cl, int bch, string qrCode) { StringBuilder sb = new StringBuilder(); sb.AppendFormat(, px, py); sb.Append(); sb.AppendFormat(, qrCode); return sb.ToString(); }
打印二维码二维码本身是支持中文的,但是在斑马打印机上怎么处理二维码的中文还未能够研究透,如果有了解的可以告知一下处理方式
五. 图片打印
单独讲解图片打印,在网上找了很多的代码讲解图片打印的,我也Copy过一分来打印。网上的案例也千篇一律,不过可以善意的提醒一下这段代码是存在问题的,打印的效果并不尽如人意。从百度中搜索到ZPL打印图片大致可以了解到如下信息:
1. 首先把图片保存到打印机的内存中
2. 斑马打印机支持.GRF 后缀的图形文件
3. 如何使用ZPL加载图片文件
4. 如何生成.GRF 文件资源
在上文中提到了指令^DG 指令:
~DG(下载图象)执行以下功能。
直接截图文字来说明问题了,不在废话描述,在推荐的文章中可以看到如上解释说明
^DGR:ZONE.GRF,4534,2443,{0},^LH0,0^FO5,60^XGR:ZONE.GRF^FS
大抵类似如此的指令用于生成图片的打印。根据网上的算法打印图片效果并不是很好这里建议使用改文档中提到的工具生成指令代码:
?url=BUPacTQF-XN4Yy7A0D_7BQBYXokbBGU9BsUMs0IujxLcUT0GSjj1eTGLizPpoMNp7Ssc1cdcnNsjOOucGXsbZgB7toPRxW3467z9VQ-KBOq&qq-pf-to=pcqq.c2c
public string ZPL_DrawImage(int px, int py, int cl, int bch, string path) { StringBuilder sb = new StringBuilder(); sb.Append(); sb.Append(); return sb.ToString(); }
根据文档中的说明生成了一个图形ZPL代码指令,此举也是无奈,官网文档上的算法写了一个转换算法,但是并没有奏效,有待继续研究,暂且此种方式来处理。
六. 串口调用打印机
SerialPort ports = new SerialPort(); ports.BaudRate = 9600; ports.PortName = this.Com; ports.Open(); ports.WriteLine(GetCommand()); ports.Close();
串口调用打印机就非常简单了,将转化得到的指令通过串口的方式发送到打印机即可,PortName是打印机连接的串口. 如果不知道串口的通畅情况,可以在网上下载一个串口监测工具来监测串口的当前状态,同时也可以用来简单的测试串口数据。
斑马打印机中使用ZPL打印仍然有很多东西没有弄明白,但是基本的打印效果已经满足需求了,后续还有待加强处理. 在开发吉特仓储管理系统的过程中遇到最多的也就是斑马打印机了,其实很少去使用指令来驱动打印,基本都会使用第三方的软件或者自己使用PrintDocument来实现. 本文主要记录一些斑马ZPL指令遇到的一些问题,便于以后工作中更好更快的去处理问题。
吉特仓储管理系统经过长时间的开发和修正,在后续的过程中会有更多的客户来使用,前不久编写了一份简单的文档供参考:
<<吉特仓储管理系统产品说明文档>>
吉特仓储管理系统开源地址: https://github.com/hechenqingyuan/gitwms
有仓库管理系统相关需求,或者想要了解吉特仓储管理系统的可以联系QQ 821865130 或者Q群: 88718955, 142050808
留下的问题希望明白之人指点:
(1) ZPL打印二维码支持中文
(2) 打印图片处理