Zebra EPL2 编程语言编程指南
Zebra EPL2(ELTRON® Programming Language) 官方编程手册,面向标签打印机开发者,完整定义EPL2 命令语法、参数、格式与使用规则,支持文本、一维条码、二维条码(QR/DataMatrix/PDF417/Aztec/MaxiCode)、图形、线条、表单存储、变量 / 计数器、RTC 时钟等打印要素,提供SGD(Set/Get/Do)配置指令与有线 / 无线网络参数,覆盖串口 / 并口 / 以太网 / 无线设置、错误码、内存管理、字符集(含中日韩),适用于 G-Series、2844、3842 等桌面打印机,核心用于标签模板设计、批量打印、变量打印、自动化控制。
EPL2 核心命令体系
1. 图像与页面控制
命令 功能 关键参数
N 清空图像缓存 无
q 设置标签宽度(dots) 0~65535
Q 设置标签长度 + 间距 长度、间距、偏移
R 设置参考原点(X,Y) 左右边距、上下边距
Z 设置打印方向 T = 正向 / B = 反向
P 执行打印 份数、套数
xa 自动检测标签尺寸 无
2. 文本打印(A 命令)
功能:打印文字,支持内置字体 1–5、亚洲字体 8–9(中日韩)
语法:A x,y,旋转,字体,宽倍率,高倍率,反色,"内容"
支持:变量、计数器、RTC 时间 / 日期(TT/TD)、表达式计算
3. 条码打印
一维条码(B 命令)
支持:Code 39/128、EAN-8/13、UPC-A/E、Codabar、ITF、Postnet 等
二维条码(b 命令)
QR Code、Data Matrix、PDF417、Aztec、MaxiCode、Aztec Mesa
PDF417 支持 Macro PDF 超大数据拆分
4. 图形与线条
命令 功能
LO/LE/LW 黑 / 异或 / 白线条
LS 斜线
X 方框
GM/GG/GK 存储 / 调用 / 删除 PCX 图形
GW 直接写入二进制图形
5. 表单、变量与计数器
表单存储:FS(保存)→ FE(结束)→ FR(调用)→ FK(删除)
变量(V):支持 00~99,最大99 字符,左 / 右 / 居中对齐
计数器(C):0~9,步进 ±1~9,用于序列号打印
AUTOFR:开机自动运行表单,实现脱机打印
6. 打印机系统配置
命令 功能
S 打印速度(1~6 ips)
D 打印浓度(0~15)
Y 串口设置(波特率 / 校验 / 数据位 / 停止位)
O 硬件选项(切刀、剥离、传感器)
f 切刀位置微调
C 立即切纸
^@ 打印机复位
^default 恢复出厂设置

SGD(Set/Get/Do)配置指令
格式:! U1 setvar/getvar/do "参数" "值"
核心用途:
setvar:设置网络、串口、打印模式
getvar:查询固件、IP、里程、状态
do:执行动作(清洁切刀、传感器校准)
支持:
网络:IP、DHCP、FTP、HTTP、SNMP、TELNET
无线:SSID、安全、漫游、信号
里程计:总打印长度、打印头寿命、介质计数
字符集与多语言支持
拉丁字符:Code Page 437/850/852/1252
亚洲双字节:
简体中文 GBK 936
日文 Shift-JIS 932
韩文 949
命令:I 选择代码页;i 设置亚洲字符间距;oR 替换欧元符号
错误与状态报告
^ee:立即返回错误码
常见错误:
00:无错误
01:语法错误
03:条码数据长度错误
07:缺纸 / 色带
11:打印头开启
US/UT:启用串口错误回传(ACK/NACK)
内存管理
M:分配表单 / 图形 / 软字体内存
FI/UE/UG:查询表单 / 字体 / 图形信息
FK/GK/EK:删除表单 / 图形 / 软字体
关键问题与答案
问题 1:EPL2 中最核心的标签模板结构是什么?最少需要哪些命令?
答案:最简模板固定结构为:N → q(宽度)→ Q(长度)→ 内容(A/B/X 等)→ P(打印)必须用 N 清空缓存,用 q/Q 定义纸张,最后用 P 输出。示例:Nq400Q200,24A50,50,0,1,1,1,N,"Hello Zebra"P1
问题 2:EPL2 如何实现序列号连续打印?计数器与变量的区别是什么?
答案:
计数器(C 命令):专用于数字递增 / 递减,0~9 号,支持步进,适合流水号。
变量(V 命令):可存任意字符串,00~99 号,用于产品名、批次等自定义内容。
用法:表单内先定义 V/C,打印时用 ? 传入数据,引用方式为 V01 / C1。
问题 3:EPL2 与 SGD 指令的关系是什么?分别用于什么场景?
答案:
EPL2:用于标签内容设计(文字、条码、图形、表单)。
SGD:用于打印机系统配置(IP、速度、浓度、网络、状态查询)。
两者可共存但必须分开发送,不能写在同一行;SGD 以 ! U1 开头,EPL2 直接命令开头。
