标签设备

Zebra ZPL Datamatrix 码 ^BX 语法说明

Admin2026年10月14日

语法格式

^BXo,h,s,c,r,f,g,a

紧跟 ^BX 后面用逗号分隔参数;参数可留空用逗号占位,末尾不填则使用默认值;条码数据放在后面 ^FDxxx^FS

参数 名称 取值说明
o 旋转方向 Orientation N 正常 (0°);R 顺时针 90°;I 180° 倒置;B 270°(从下往上读)
默认:继承 ^FW 设置
h 模块单元高度 (dot) 单个 DM 码小黑方块的边长,1~ 标签宽度;0 / 留空则读取^BY模块高度
s ECC 纠错等级 Quality 0,50,80,100,140,200
新项目必须用 200 (ECC200,Reed-Solomon);0~140 是旧卷积编码,仅封闭场景使用
c 列数 Columns 9~49;ECC0~140 只能奇数;ECC200 只能偶数;填0自动适配数据选择符号尺寸
r 行数 Rows 9~49;填0自动适配数据选择符号尺寸
f Format ID 字符集 仅 ECC0~140 生效,ECC200 忽略
1: 纯数字 + 空格
2: 大写字母数字 + 空格
3: 字母数字 + . , - / 符号
4: 同 2
5:7 位 ASCII
6: 完整 8bit ISO(默认)
g 转义控制字符 Escape char 默认 ~;GS1-DM 强烈建议设为_
仅 ECC200 生效,用于嵌入 FNC1 等特殊控制序列
_1 = FNC1
a 宽高比 Aspect Ratio 新增参数(新版固件)
1= 正方形 (默认);2= 矩形 DataMatrix

重点:ECC200 是工业 / UDI/GS1 标准,推荐固定 s=200,c=0,r=0,g=_,让打印机自动选择 DM 符号尺寸

最简基础示例(正方形 DM)

^XA
^FO50,50^BXN,7,200,0,0,,_
^FDABC123456^FS
^XZ

  • ^FO50,50:条码左上角坐标 x=50,y=50
  • ^BXN,7,200,0,0,,_:N 正常方向,模块 7dot,ECC200,行列自动,format id 留空,转义符下划线_
  • ^FDABC123456^FS:DM 承载数据

GS1 DataMatrix 示例(带 FNC1)

^XA
^FO50,50^BXN,7,200,0,0,,_
^FD_101069012345678921SN123456^FS
^XZ

_1 代表 FNC1,GS1 前缀,后面跟随 AI + 数据

矩形 DataMatrix(a=2,固件要求 V53.16.5Z 以上)

^XA
^FO50,50^BXN,6,200,16,8,,_,2
^FDRECT-DM-TEST^FS
^XZ

^FH 十六进制转义说明(中文 / 二进制)

^FH 开启十六进制转义模式,放在 ^FD 之前。_ 作为十六进制前缀,_XX 代表一字节十六进制值。

注意:^BX 的 g 参数(DM 内部转义符)和 ^FH 的前缀不要冲突;推荐^FH使用默认_,若冲突可通过^FH^修改前缀。

规则

  1. ^FH 作用域:从^FH开始,到^FS结束,仅作用当前^FD段
  2. _XX:XX 为 2 位十六进制字节,例如 _E6 代表 0xE6 字节
  3. 中文推荐使用 UTF-8 编码,将中文转为 UTF8 字节,再写成_XX序列
  4. 原始不可打印二进制(0x00,0x01 等控制字符)也使用_XX写入

示例 1:DM 包含中文(UTF8,^FH)

原始文字:测试中文123 UTF8 字节序列:E6 B5 8B E8 AF 95 E4 B8 AD E6 96 87 31 32 33 转为 ZPL:_E6_B5_8B_E8_AF_95_E4_B8_AD_E6_96_87123

^XA
^FO50,50^BXN,7,200,0,0,,_
^FH^FD_E6_B5_8B_E8_AF_95_E4_B8_AD_E6_96_87123^FS
^XZ

示例 2:二进制数据(含控制字符)

写入二进制:0x00 0x0A ABC ZPL:_00_0AABC

^XA
^FO50,50^BXN,7,200,0,0,,_
^FH^FD_00_0AABC^FS
^XZ

示例 3:GS1 + 中文混合(FNC1 + UTF8 中文)

FNC1:_1(DM 内部转义,由 ^BX 的 g=_控制),和 ^FH 的_共存,注意区分

^XA
^FO50,50^BXN,7,200,0,0,,_
^FH^FD_1010690123456789_E6_B5_8B_E8_AF_95^FS
^XZ

说明:

  • _1:DM 码内 FNC1(^BX 的 g 参数定义)
  • _E6_B5_8B...:^FH 十六进制转义,UTF8 中文字节

前缀冲突处理

当业务同时大量使用 DM 内部_1(FNC1) + ^FH 十六进制_XX,部分固件解析歧义。解决:修改 ^FH 前缀为^

^FH^,^FD^E6^B5^8B^E8^AF^95^FS

^FH^,:设置 ^FH 转义前缀为^,不再使用_,_仅留给 DM 内部 FNC1 _1。

常用注意事项

  1. 模块 h 选型:300DPI 打印机,h≥6dot 可读性较好;203DPI 推荐≥4dot;太小容易打印糊、扫描失败
  2. c,r 写 0:绝大多数业务直接写0,0,交给打印机自动选择最小 DM 符号,不手动硬编码行列
  3. 转义字符 g:不要依赖默认~,GS1 场景固定_避免不同固件版本行为不一致
  4. ECC 0~140 已淘汰,医药 UDI、电子标、追溯码一律 ECC200
  5. DataMatrix 本身不带人眼可读文本,如需文字,额外用^A0添加
  6. 中文编码:Zebra 打印机 DM 推荐 UTF8+^FH,不要使用 GBK,不同固件对 GBK 兼容性差

常见坑

  • 参数逗号位置不能错,跳过参数必须保留逗号占位:^BXN,7,200,0,0,,_ 这里 f 参数为空,两个连续逗号
  • 旧固件不支持矩形 DM(a 参数),会忽略 a,强制正方形
  • 数据超出当前行列容量时,打印机报错或截断;c=0,r=0 自动扩容
  • 同时使用^FH _XX和 DM _1 FNC1 时,部分固件会混淆下划线含义,优先改用^FH^,更换 ^FH 前缀规避歧义
  • 不要直接在 ^FD 写原始中文,打印机固件编码不一致会乱码,必须使用 ^FH+UTF8 十六进制