编程玩转“标签打印机”_米乐体育(中国)平台官网下载

首页 > 米乐体育APP登录 > Datamax 条码打印机

编程玩转“标签打印机”

来源:米乐体育APP登录    发布时间:2023-12-03 17:54:37

  本篇内容主要以我个人的视角讲述在工业场景中使用或接触过的为参与生产的“物体”(原料、辅料、工具、半成品、制成品)打标所使用的设备。内容主要涉及这些设备的介绍、选型原则、基本应用、定制化软件集成、线体自动化集成等方面的经验与思考。

  再挖个坑,之后还有在标签打印和识别的基础上的全局应用场景——生产全流程追溯。

  热敏标签打印机:是通过打印头的探针在有特殊涂层的浅色标签纸上加热导致涂层编程深色从而形成有效的内容的打印机。

  热转印标签打印机:是通过打印头的探针施加热力和压力将墨带上的着色层转移到浅色标签纸上从而形成有效的内容的打印机。

  喷墨打印机:有多种可选技术(热气泡喷墨、微电压喷墨等)让墨从存储位置(硒鼓,墨盒)以微小的点着落在目标物体上,这个物体可能是标签纸,也可能是丝绸布料,木头陶瓷等。

  激光打标机或镭雕机:通过高温激光烧结物体表明产生黑色内容或以更大能量的激光对物体表明上进行切割,镂刻出需要呈现在物体表面的内容。

  总结一下,如果打印目标是纸质标签可选:热敏、热转印、喷墨,如果打印目标是产品本身或金属件可选:喷墨、镭雕。

  首先声明,对标签的坐标系统的理解请不要全盘接收我下面的描述,因为不同设备厂商的打印机系统研发人员对于标签的坐标体系会有自己的理解。以下内容仅代表我自己的理解,遇到具体的打印机时,请在打印机的手册中找相关说明信息。

  我将一个标签的坐标按照以下内容做理解(白色为标签,灰色为承载标签的纸带):

  常见的标签是卷状且标签之间有间隔,但也有标签之间没有间隔而是由点断式分割线分割两个标签的耗材样式,这些有“分隔”的介质统称为非连续介质(外观及细节图来自斑马打印机说明手册)。

  另外一种标签材质是连续成卷介质,这种标签在固定宽度的情况下可变的控制标签的长度,由打印机的裁切功能自行切断,或手工撕开(外观图来自斑马打印机说明手册)。

  最后一种是折叠式介质,只是材质安装方法不同,在软件应用中与非连续成卷介质一样(外观和安装图来自斑马打印机说明手册)。

  图像每英寸长度内的像素点数。目前常用的打印机dpi参数转换如下:203dpi = 每毫米8个点,300dpi = 每毫米12个点,600dpi = 每毫米24个点。点是打印机输出的最小单位(即没办法实现打半个点这种需求~手动苦笑)

  通常指的是被打标对象上内容显示的深度和浓度。换句话说就是,热敏和热转印的打印头加大输出功率,喷墨加大磨流量,激光加大输出能量。

  指打印头打印的快慢,如果速度过快,可能会导致内容很浅(速度和浓度像是天平的两端,偏向一端另一端就会受影响)。

  部分打印机具备的附加功能,通过拨片和回卷纸带,将标签揭起来,方便人拿取或方便配套的机械装置实现自动贴标。

  通常是自动的。前一个标签输出完成时,打印机会停留在上一个标签与出口裁纸线对齐,此时下一个标签的坐标0点已超越了打印头。因此当下一次打印触发时,会先将当前标签回车到打印头和坐标原点再开始打印。所以,批量打印时通过控制打印机连续打印减少回撤可以轻松又有效提高打印速度。避免打印机“一抽一抽的打印,还贼慢”。

  很多打印机即支持热敏又支持热转印,所以要对打印机进行设置当前使用的是那种模式。

  当使用标准的标签软件进行打印时,在打印机设置中能够正常的看到这部分参数,通常是有默认值的。但懂得这些参数的意义会让你能够越来越好的使用打印机。

  当软件采用原始命令控制住打印机时,常常要我们开发人员在软件部署时,直接上手调试这些参数,以求让打印的标签达到最佳效果,所以更应该了解这部分打印机参数。

  在工业场景中,通常需要以更加便捷的方式来使用标签打印机,比如:自动识别并调用标签模板,动态组合数据,响应光电传感器,自动贴标等,并且需要这些功能以无人值守的方式自动执行,从而降低人工成本,提高执行效率。

  基于以上要求,目前支持的最好的是BarTender的软件生态。在工业场景做系统集成时,根据实际需要考虑软件系统与BarTender软件的集成和调用方案同样能实现目的。不过,一定要记得为BarTender的授权买单。

  当然,我们还可以根据打印机的通信标准,设计开发自己的打印机通信组件,完美的集成在自家的管理软件中。可以根据项目的使用场景进行定制和优化,是自由度最高的一种实现方案(如果有自己的开发团队,这也是最低成本方案)。

  ——我写本篇文章的初衷就是想介绍定制开发所需要的相关知识和实现方案,接下来,进入正题吧。

  目前市场上的打印机所支持的接入方式有:USB,串口,LPT,RJ45,WIFI。选购标签打印机时,标配是USB口或USB口+串口,其他接口通常为可选配件。其中WIFI接口为手持移动打印机所特有的接口(少数台式打印机也具备)。比如:人员可以拿着手持打印机在WIFI覆盖的库房中,保持与系统软件的通信,随时打印需要的内容。

  在工业场景中,我使用最多的是USB、串口、RJ45(网口属于RJ45标准),具备者三种接口的打印机无论是单独使用,还是与自动化线体集成都能够满足通信和操作要求。

  USB和串口在组网时,需要直接接入最近的电脑主机(USB和串口是可以通过转换器材和路由等进行组网,但稳定性和性能会阶梯式下滑)。而RJ45的入网方式相对来说就更为灵活,在多主机共享打印机的场景中也具有额外的优势的。接口外观见下图:

  设备厂家和软件厂家(BarTender)基于不重复造轮子的考虑,通常会要求调用打印机的电脑上安装打印机厂家的驱动,然后软件中集成打印机厂家提供的SDK完成开发,最终实现对标签打印机的控制。

  而我在进行组件设计时,第一考虑的就是基于打印机标准协议的命令集进行开发,绕开所有对第三方环境的依赖,直接与打印机对话,开发一个纯粹的标签打印机控制组件。这样的组件在使用时,可以不需要下载打印机驱动(),不需要考虑SDK与打印机型号的适配,还不需要忍受打印机驱动和SDK设计的缺陷和特意留下的限制。

  对基于SDK进行开发的知识我不再进行赘述,看懂SDK手册,会调API的人都可以轻松上手,只是最终实现效果需要看研发人员自己理解的深度和投入的精力了,如果你选择了这种方案,也请你先别划走,直接跳到下方第七节了解一下图元相关内容,有助于你对SDK内部实现方式的理解。

  其中,研究标签打印机协议,是为了将图元转化为标签打印机可以解读的命令。研究图元,则是为了尽最大所能做到从标签设计到输出标签的所见即所得。计算机网络不重要,这里仅需要最浅显的一点知识就足够了。

  其他协议类似,都是通过对图元的描述形成命令,打印机收到命令后,将命令重新绘制为图像内容然后进行打印。

  也许在看这篇文章的朋友中,有些人的角色是项目经理。本文后半段的内容,开发人员才会关心,但是你既然看到这儿了,我提供一个技术要求较低,无须进行大量开发就能完成一些模板固化且内容可定制的标签打印方案。

  通过使用标签管理工具(比如:Zebra Designer 3),配置一个固定的模板。

  在标签管理工具中点击打印,进入标签打印页面,选择打印到文件,执行打印。

  找到其中数据部分,编制特殊字符替代数据内容,将代替后的文件作为资源文件(比如第26行命令,用[code_number]代替一维码的数据)。

  让开发人员写个小程序,获取需要打印的数据,然后调用被你改造过的模板中的内容,通过字符替换后得到最终打印命令。

  字体和字号只能使用目标打印机原生提供的字体和字号,建立模板时,尽量选择字号调整大小而不要拖动调整字的大小。

  条码/二维码也只能使用目标打印机原生支持的,可以多试几次,确保生成的原命令。

  标签内容包含中文时,需要测试多种打印机自带的字体,直到找到能原文输出中文的为止。

  一旦数据有调整,也必须修改作为模板源头的资源文件,还需要对应的调整数据替换代码。

  图元是图形元素的简写。标签中的所有输出内容都可以认为是图元,在计算机图形学中任何展现的内容都是由计算机像素组成。而在标签打印中,任何展现的内容都是由打印机输出的最小色块组成的图形的集合。所以充分了解标签打印机对图元的处理原理,是开发打印机控制组件必须掌握的知识。

  标签由原始信息转化为图形所经过的物理路径是:计算机-打印机-标签。无论原始信息是什么类型,为了打印标签,最终一定需要将信息转化为图形等。开发在进行功能实现时,可以结合实际情况和需求选择是在计算机中进行转换还是由打印机进行转换。但根据原始信息和选择的技术方案不同,存在如下图三种图像转换技术线路。

  :原始信息为位图(或由其他图片格式转换为位图),计算机使用打印机的图片打印命令传递给打印机,并由打印机完成打印。

  :原始信息未非图片的其他信息(比如文字,数字,线条,条码等),计算机将其在内存中绘制成图形,再转换为位图。计算机使用打印机的图片打印命令传递给打印机,并由打印机完成打印。

  :原始信息为非图片的其他信息,计算机将其按打印机命令的不同类型分别组成命令块。计算机将命令块发送给打印机。打印机接受到命令块后在打印机内部绘制成图形,然后进行打印输出。

  以上三条线路各有优劣,在开发标签打印机组件时,建议同时实现了三种技术线路,根据现场情况调整组件的参数配置进行线路切换,以达到最佳实现效果。

  标签中通常会添加企业logo、产品合格章等图片信息,将图片作为一个图元来讲解是没什么问题的,但我却将它放在第一位来讲解,可能让正在阅读的你感觉到突兀。继续看下去你可能就理解图片在标签打印机中的重要性了。如果用一句话来形容的话,应该是——万物皆可图片。

  文字可以在计算机内存中绘制后,以位图的形式作为原始信息通过调用打印机的图片命令组成命令块。

  线、方框、圆、椭圆、条码、二维码等所有会放在标签上的图元都可以先在计算机中转化为位图,再将其当做位图进行打印。

  所以,这里就存在一个比较极端的方案:无论标签中包含什么信息,我们都将其在计算机内存中绘制成完整标签,再将其整体转换为位图,让打印机以打印图片的形式输出标签。

  这看起来是一个非常可行的方案,但是却被一个现实的问题所束缚——计算机把这张位图传输给标签打印机时,需要巨量的命令块。下图可以看到,是一个图片打印的代码块举例:

  上述例子如果是在203DPI的标签打印机上打印的,则右侧标签中输出的图形的宽度是:10mm,高度为1mm。如果以这个量级描述一个常用普遍大小的标签:50cm*40cm,则上述例子中的图形描述部分需要暴涨约5000倍。因此这样的方案是在考验计算机和打印机之间的命令传输以及挑战标签打印机的内存容量。

  那么,把信息转为图片处理就只有缺点没有优点吗?你要这样想就又被骗了!我只是对整个标签转为位图打上了疑问(实际上,我还是实现了这个方案),而将单个信息转换为位图,是我也是很多标签管理软件采用的方案。这种方案的优点,将在每种图元中进行说明。

  截图例子中已经有很清楚的调用例子。其中比较重要的两个命令的参数说明如下:

  字符集:每一种自然语言转换到计算机中都有其所对应的至少一套计算机便编码的字符集,而现在标签内容存在多种语言是一件很普遍的事情,所以选择标签打印机字符集时通常我们需要选择支持unicode字符集的打印机。目前,我遇到的标签打印机几乎都支持。

  文字的字体:以我们最熟悉的中文为例,使用《office word》切换字体时可选的字体列表应该够鼠标划拉好一会儿。那么设想以下,如果你费劲心力设计了一个标签,甚至请专业人士对标签模板进行了美观设计,然后在使用时,发现效果最好的方案中选择的字体,恰好是标签打印机无法支持的,那多郁闷!

  当然,很多厂家通过发布独立的软件工具,可以用来给打印机加装字体库。但在使用便捷方面依然无法与计算机或打印机原生自带字体库相比。

  文字的大小:计算机系统中的文字的大小是阶梯的而不是平滑的,如果你需要的文字大小恰好是某两个字号之间的文字大小,是不是很令人郁闷?

  所以我们的方法就是:调用当前计算机的字体库将需要处理的文字内容在内存中绘制出来,并按照标签模板中的长宽要求对绘制出的图元进行缩放。然后再将图元转化为位图,将文字作为图片进行打印。

  提一句:在进行文字转换为位图的图像处理时,请注意转换为位图后,系统对位图的内存对齐会导致黑边,编程优化可解决。

  方框有长和宽,如果长度小到一定程度让方框的左边和右边重合,那就是竖线。同样,如果宽度小到一定程度让方框的上边和下边重合,那就是横线。

  条形码是一维码中的一种,特指一维码中的Code128编码。但一维码目前共有不少于35种码制。码制不同,支持的字符集也是不一样的,但大体上可以认为只支持数字,字母和极少部分符号。

  由于条形码的码制规则的限定,条形码的y方向长度是比较灵活的,但x方向长度是阶梯式调整的,如果标签设计时,对于条形码的x方向长度没有非常严格的要求,请尽量使用打印机自带的条码命令进行打印。

  因为,自己实现条形码的目标是解决能随意调整条形码的x方向的长度(但这存在导致条形码信息失真的风险,遇到过几次,但未来得及进行深入的研究),却需要实现常用的十多种码制的条形码的生成算法,初期阶段性价比不高。

  二维码有很多,目前标签中最常用的是QRCode和DMCode。目前常用的文字,数字,字母,符号等都可以放入二维码中。当然,标签打印在处理二维码时,同样会遇到类似一维码的问题。但二维码因为其形状,在标签中需要严格定制大小的情况原比条形码要多的多。

  在客户要求较为宽松的环境下,直接使用打印机自带的二维码生成命令是最好的选择。

  一旦客户对于二维码的尺寸有严格的固定要求,比如:标签上自带一个正方形要求二维码在可变内容的情况下必须自动缩放到与正方形大小重叠时,就需要自己开发或调用二维码生成库并对二维码进行严格的尺寸缩放后,以位图的方式控制标签打印机进行打印。

  除了上述情景外,我多次遇到过客户要求对二维码中的色块或整个二维码形状进行变形以达到产品防伪效果的特殊需求,这样的需求只能是自己生成二维码时,对二维码进行特殊处理并转化为位图才能达到目的。目前未听说过有哪个标签打印机支持该功能。

  这里我说的序列是特指同时打印多个标签时,标签中某一个或某几个内容存在自增计数的情况。在ZPL II中是有专用的命令和处理方式的。

  ZPL语言 属于我自定义分类中的——关键字命令集。显然其也具备命令之间嵌套和组合使用的能力。需要研发人员花一定的时间消化ZPL II 命令后灵活运用。是可以琢磨出很多骚操作的!

  上述图元皆可转为图片,只要发现通过调用打印机的原生命令无法得到让你满意的效果,那就通过在计算机内存中绘制后转为位图后再调用打印机以图片的方式进行打印。你只需要记得,这个方案是以挑战计算机和打印机的通信以及打印机内存为前提的。

  如果只对有效信息部分进行位图转化操作,可以去除标签上空白部分在命令块中占据的空间。

  ——之后部分为功能设计、数据建模、开发实操内容和自动化集成,是否公布,还在考虑中,请谅解。