Friday, December 22, 2017

Zebra斑马打印机中打印QR码时如何设置大小

        在标签打印中,斑马Zebra打印机可以说是非常流行的,可以说是占据着垄断地位;同时在二维码的世界里,随着智能机的普及,如今QR码是越来越流行了。QR码更多的是在互联网应用中普及,虽然在工业领域没有互联网应用中那么普及,但现在也是越来越流行了。在实际使用中,你会惊奇地发现到目前为止(2017/12/20),Zebra对QR码的支持还不是那么完美――无法直接设置QR码大小。不用怀疑,确实不支持,否则笔者也不会挑这个话题了。

        斑马打印机,我们通常都是用的ZPL(Zebra Programming Language)。其中对于QR码支持的指令如下图所示:其主指令是BQ,参数分别有a,b,c,d,e,其中只有参数c (magnification factor)有一定的调节大小的作用,但是这个作用是非常有限的。顾名思义,这个参数是设置放大倍数的,而且只支持1到10,而且不支持小数。其本意也只是用于适配不同精度的打印机的,并不是用来设置条码大小的。

         斑马打印机对于QR码的大小,目前的主要依据是条码的内容。也就是说,条码内容越长,越多,其原声QR码就越大。
       针对这个局限性现提出3或者4种"解决"办法,打引号的意思是这几种办法都并不算完美。
        第一种,对于条码内容大小固定的QR码,可以首先使用上面提到的magnification factor这个参数来调节。如果正好能调整到期望的大小或者接近期望大小,那么恭喜你,这是最简单的办法,简单的同时其弊端也是显而易见的――不能保证都适用,而且凑出来的大小并不精确。
        第二种,对于条码内容大小固定或相差不大的QR码,使用空格或其他不可见的字符来填充,直到填充到期望的大小。当然同时也可以配合第一种方法一起调整。这个办法谈不上简单,也算不上复杂,但是还是能解决一部分问题。弊端也是显而易见的――多余的字符可能会影响QR码的读取与解析,另外就是也影响了条码的解析度,QR码单位面积内所包含的字符越多,其线条越精细,对于扫码设备的解析精度要求越高,同理也适用于打印机。
        第三种,也是对于条码内容大小固定或相差不大的QR码,使用指令MU来放大调节整个标签,也可以跟第一种方法配合着调整。如下图所示,MU指令一共有3个参数,a,b,c。这个放大原理是重新虚拟一个打印精细度,比如我们通常所说的300DPI或600DPI(dot per inch),是指每英寸单元打印的像素点。虚拟放大之后,自然也就调整了QR码的大小了。其弊端也是显而易见的――这种放大后的打印精度会降低,而且这个调整是全局的,是对整个条码标签的调整,无法只针对QR部分进行调整。
        第四种,堪称一种最完美的办法,当然也是最复杂的一种办法了。原理就是通过第三方软件或API生成一个指定大小与格式的QR码图片,然后通过打印机调用图片来进行打印。这种方法当然也就从根本上解决了问题,不限制条码内容大小。弊端当然也是显而易见的――一个"第三方"既可以说是没有限制也可以说是不确定的限制,因为限制来源于第三方。至于如何通过LabVIEW生成QR码图片,也是另外一个话题了。有兴趣了解的,可以在文后留言,后面可以写相关的话题。
        打印图片的指令分别有IL(Image Load), IM(Image Move)以及IS(Image Save)等等操作,详细指令参数可参考编程手册。

        斑马打印机缺乏对QR码大小的直接设置支持,已经在斑马的开发者论坛上被用户吐槽过多次了,现在也已经引起了官方的注意。但愿在不久的将来,官方能够完善对于QR码的支持,毕竟现在QR码越来越流行了,无论互联网还是工业界。大家如果有什么想法,也欢迎在文后的评论中留言交流或者邮件交流。
        

------
本文转载自微信公众号LabVIEW-Jobs(LabVIEW伯乐), 关注二维码关注公众号。

More information click here