Zebra ZPL Datamatrix 码 ^BX 语法说明
语法格式
^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^修改前缀。
规则
- ^FH 作用域:从^FH开始,到^FS结束,仅作用当前^FD段
- _XX:XX 为 2 位十六进制字节,例如 _E6 代表 0xE6 字节
- 中文推荐使用 UTF-8 编码,将中文转为 UTF8 字节,再写成_XX序列
- 原始不可打印二进制(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。
常用注意事项
- 模块 h 选型:300DPI 打印机,h≥6dot 可读性较好;203DPI 推荐≥4dot;太小容易打印糊、扫描失败
- c,r 写 0:绝大多数业务直接写0,0,交给打印机自动选择最小 DM 符号,不手动硬编码行列
- 转义字符 g:不要依赖默认~,GS1 场景固定_避免不同固件版本行为不一致
- ECC 0~140 已淘汰,医药 UDI、电子标、追溯码一律 ECC200
- DataMatrix 本身不带人眼可读文本,如需文字,额外用^A0添加
- 中文编码: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 十六进制