前言

由于之前产品打印的标签为人工输入,可能存在信息错误且不适合大批量操作。所以我进行了前期的研究和总结,完成了任务,并这里做下技术总结,方便后面的人进行开发。

技术总结

斑马打印机的坑

官网:http://www.zebra.gd.cn/

现在主流的工业打印机都支持二次开发的,要么有自己的一套语言要么有一套SDK。第一个坑就是你需要和客服进行大量的沟通,不要因为我们是写代码,就不去沟通。不然后面有一堆坑等着你。

比如这是我找客服,客服给的答案:

斑马打印机支持二次开发 下面介绍常用的几种。

(方法:1)开发指令是用Zpl指令

给各位一个参考1:https://www.cnblogs.com/zh7791/p/6905130.html

参考2:https://blog.csdn.net/bfz_50/article/details/82468621

需要指令的,可以找客服要。

(方法2:)

利用CLodop打印插件,然后调用打印机驱动打印就可以。

(方法3:)

SDK开发包

https://www.zebra.cn/cn/zh/products/software/barcode-printers/zebralink/link-os-sdk.html

不能说一点没有用,那是一点用都没有啊!

第一,我没有空去学习zpl语言,第二他说的用BarTender我找不到那个版本,且存在盗版不安全的角度。最后一个sdk就更是无稽之谈(没有页面)。

我这里还是吐槽下,斑马作为打印机里面的大厂了,网站做的是依托XX。此外还是吐槽下:你买的一般都是经销商代理,有些问题是他们解决不了,他们也能去找官方。

官方售后电话:400-645-6456

ps:这个电话也是难受,等待时间很长,第一次和我对话了是个外国人,我一时间听不懂他在说什么。好在客服质量还行,前期很多问题,都给出了解决方案。

好了,再抱怨,我估计哥几个都要跑了。我这里说一下我踩出来一条路。

ZPL语言

ZPL(Zebra Programming Language)是专门为Zebra打印机设计的一种打印机控制语言。它是一种高级编程语言,允许用户定义标签和条码的布局、格式和内容,以及控制打印机的各种功能,例如字体、打印速度、打印方向等。

ZPL语言具有类似于C语言的语法结构,使用标签和命令来描述打印机的行为和输出。例如,下面是一个简单的ZPL代码示例:

Copy

^XA
^FO50,50^A0N,50,50^FDHello, World!^FS
^XZ

这段代码使用ZPL命令来定义一个打印标签,包含一个文本字符串“Hello, World!”,并指定使用50点字体大小和50点行距。该标签还指定了打印位置和打印方向。

ZPL语言支持多种数据类型和操作符,例如字节数组、字符串、整数和浮点数等。它还提供了丰富的命令和选项,可以用于控制打印机的各种功能和属性。

总之,ZPL语言是一种专门为Zebra打印机设计的打印机控制语言,可以用于定义标签和条码的布局、格式和内容,以及控制打印机的各种功能。它具有类似于C语言的语法结构和丰富的命令和选项,是一个功能强大的打印机编程语言。

zpl的语法你们可以去官网看:https://zebra-my.sharepoint.com/:b:/p/zt6953/EQQjAweCGJFFvVoUcTuQv1kBDKBh75oi30PVJlEYjUdIHw?e=Qbeg1L

我没时间去看,这里可选择斑马自己的官方软件(ZEBRADESIGNER 3)进行标签的生成然后转换成zpl语言。

ZEBRADESIGNER 3

https://www.zebra.com/cn/zh/support-downloads/printer-software/zebra-designer-3-downloads.html

下载安装好了,页面如下

这边你就可以新建啥的操作了



这里需要注意:纸张啥的根据你的实际需要。

比如我这里就生成一个二维码和一段中文



这你需要把选择qr类型不然就是条形码了,在源里面输入你的信息。拖拽到你需要的大小。

这里需要切记,文字需要选择SimSun-ExtB格式,不然显示不了中文。斑马打印机自身不带中文字库(这就是国际大厂?),选择这个字库,它会把文字自动变成图片发送给打印机打印机。

当你设计好后:



点击旁边文件,然后选择存储:

先将XML变成zpl



然后按照我这样设置



完事点击生成文件就可以了

我们用记事本点开生成的文件:

我们这里挑选重点:

XA到XZ 为我们需要的zpl代码

此外这里可以通过简单的操作把这个数字改了就可以生成我们需要的二维码。

用python进行操控

我们拿到zpl语言,那就是python处理字符串的小把戏了

import serial

# 打开串口
ser = serial.Serial('COM1', 9600, timeout=1) # 是打印机可以用串口、网卡等连接开发。我选择用串口了 # 设置ZPL指令
zpl_command = '''
(把刚才生成zpl放进去就行了)
''' # 将ZPL指令转换为字节数组
zpl_bytes = zpl_command.encode('utf-8') # 发送ZPL指令到打印机
ser.write(zpl_bytes) # 关闭串口
ser.close()

后记

这里就简单介绍了怎么二次开发斑马打印机了。你要是乐意也可以和我一样用vue3+django开发一个系统(自动按照规律生成码,存储,查询,删除,修改),方便其他人员使用。



什么你还不会,可以看我之前的文章有说怎么构建一个vue+django项目哦。

其实开发这个系统我也就用2天,但是前期研究和了解打印和简单维修,呜呜呜研究了好久。

用Python操控斑马打印机的技术总结的更多相关文章

  1. python实现斑马打印机网络打印

    最近一个礼拜调研了下斑马打印机怎样实现网络打印. 缘起: 之前实现打印方式是直接使用USB接口连接PC,使用串口通讯提供一套打印服务,在系统界面配置相关参数,即可调用打印服务: 后来业务需求变化,现场 ...

  2. 基于C#在WPF中使用斑马打印机进行打印【转】

    原文链接:http://ju.outofmemory.cn/entry/132476 最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来.苦苦折腾了两天,总算有所收获,就 ...

  3. 吉特仓库管理系统- 斑马打印机 ZPL语言的腐朽和神奇

    上一篇文章说到了.NET中的打印机,在PrintDocument类也暴露一些本质上上的问题,前面也提到过了,虽然使用PrintDcoument打印很方便.对应条码打印机比如斑马等切刀指令,不依赖打印机 ...

  4. C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)【转】

    原文地址:http://blog.csdn.net/ldljlq/article/details/7338772 在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇 ...

  5. 斑马打印机网卡ZebraNet配置(有线)

    实图: 抽象图: 说明: 1.并口,用于连接斑马打印机一端 2.网络连接状态指示灯 3.打印状态指示灯 4.测试按钮,在连接打印机的情况下,按下此键,会打印出网卡信息. 5.网线接口 按下测试按钮之后 ...

  6. 斑马打印机的安装调试,生成PDF

    1.  我使用的斑马打印机GK888T.有问题打客服,耐心等待.售后电话4006456456得到了解决. 2.  我遇到的问题是打印一张之后指示灯变为红灯,时好时坏.解决方案,长按指示键,待指示灯连续 ...

  7. 斑马打印机客户端GET和POST,以及后端两种打印方式。

    斑马打印机客户端GET和POST,以及后端两种打印方式. 背景环境:打印机安装在客户端外网.当用户登录时,通过ajax取服务器数据,返回打印机命令,然后客户端通过JS发送给斑马打印机. 1.使用Get ...

  8. 史上最全的用Python操控手机APP攻略!建议收藏!

    ​最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. ​ ...

  9. 斑马打印机和欧姆龙CP1H串口通信打印

    欧姆龙CP1HPLC和斑马打印机通信 1. PLC 1.1PLC型号 CP1H 1.2通信方式 232通信,使用232扩展卡槽CP1W-CIF01. CP1W-CIF01是RS232选件板,通信距离最 ...

  10. Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|

    内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...

随机推荐

  1. openwrt开发使用-arping

    前言 IP冲突引起的网络异常,可以通过检查IP是否冲突,排除故障.我们可以用一些工具进行检查,例如arp-scan.arping软件进行查看. 这里使用arping进行检查设备的MAC地址,通过查查看 ...

  2. MySQL大量脏数据,如何只保留最新的一条?

    因为系统的一个Bug,导致数据库表中出现重复数据,需要做的是删除重复数据且只保留最新的一条数据. 具体场景是这样的 有张订单关联额外费用表,而且一个订单号(order_no)记录只能关联同一个费用(c ...

  3. RabbitMQ详解(下)

    一:序 通过<RabbitMQ详解(上)>一文中,我们可以知道RabbitMQ的一些基本的原生用法,如交换机的创建及消息的投递,但是在企业中我们大部分都是把RabbitMQ集成到Sprin ...

  4. S5PV210 | 裸机汇编LED流水灯实验

    S5PV210 | 裸机汇编LED流水灯实验 目录 S5PV210 | 裸机汇编LED流水灯实验 开发板: 1.原理图 2.Datasheet相关 3.代码 3-1.代码实现(流水灯,仅作演示) 3- ...

  5. 2022-09-04:以下go语言代码输出什么?A:不能编译;B:45;C:45.2;D:45.0。 package main import ( “fmt“ ) func main() {

    2022-09-04:以下go语言代码输出什么?A:不能编译:B:45:C:45.2:D:45.0. package main import ( "fmt" ) func main ...

  6. 2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文。arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来。返回需要至少多少张贴纸可以完成这个任务。例子:str= "babac",arr = {"ba","c","abcd"}。a + ba + c 3 abcd + abcd 2 abcd+ba 2。所以返回2。

    2021-02-18:给定一个字符串str,给定一个字符串类型的数组arr,出现的字符都是小写英文.arr每一个字符串,代表一张贴纸,你可以把单个字符剪开使用,目的是拼出str来.返回需要至少多少张贴 ...

  7. idea 查看scala源代码

    使用idea编写spark程序,想要查看源代码,点进去是compiled code private[sql] def this(sc : org.apache.spark.SparkContext) ...

  8. 【Python笔记】第一章Python基本语法

    嗨你好,我是AllenMi, 这是我学习北京理工大学的<Python语言程序设计>第一张笔记. 写笔记的目的一方面在于记录自己一步一步学习Python的内容, 另一方面也希望能够帮助到他人 ...

  9. 深入理解 python 虚拟机:花里胡哨的魔术方法

    深入理解 python 虚拟机:花里胡哨的魔术方法 在本篇文章当中主要给大家介绍在 cpython 当中一些比较花里胡哨的魔术方法,以帮助我们自己实现比较花哨的功能,当然这其中也包含一些也非常实用的魔 ...

  10. Spectre.Console-实现自己的CLI

    引言 最近发现自己喜欢用的 Todo 软件总是差点意思,毕竟每个人的习惯和工作流不太一样,我就想着自己写一个小的Todo 项目,核心的功能是自动记录 Todo 执行过程中消耗的时间(尤其面向程序员), ...