如何使用斑马^BC指令打印各种code128条形码?
最近用指令做一个打印Code128和DataMatrix,指令为:
^XA^JMA^LL180^PW660^MD10^RP2^PON^LRN^LH10,0^FO20,147^AFN,26,13^FDZ007203149 - ZS565-110-001-1^FS^FO20,92^BY3,3,50^BCN,50,N,N,N,A^FDZ007203149FS^FO20,92^BY3,2,4,50^BCN,50,Y,N,N,A^FD1100705042001FS^FO480,5^BXN,6,200^FDZ007203149,1100705042001,ZS565-110-001-1,ABCD1234^FS^PQ1^XZ
//开始命令符,设置打印纸张大小、打印的浓度,打印的速度,条码出于纸张的坐标
^XA^JMA^LL180^PW660^MD30^PR2^PON^LRN^LH10,0
^XA:标签格式^XA开始
^JM:设置每毫米点数(取决打印头)
^LL:设置标签长度
^PW:设置标签宽度
^MD:设置标签深度
^PR:设置打印速度
^PO:设置打印方向
^LR:设置标签反转('Y'/'N')
^LH:设置标签起点
//设置字体格式
^FO20,147^AFN,26,13^FDZ007203149 - ZS565-110-001-1^FS
^A命令的格式:
^Af,o,h,w
^A | = | 缩放/点阵字体 | |
f | = | 字体名 | |
默认值:0(CG Triumvirate Bold Condensed) | |||
其他值:A-Z,0-9(打印机的任何字体,包括下载字体,EPROM中储存的,当然这些字体必须用^CW来定义为A-Z,0-9) | |||
0 | = | 字体方向 | |
默认值:^FW默认值或上一个^FW的值。 | |||
其他值: | N = 正常 (Normal) | ||
R = 顺时针旋转90度(Roated) | |||
I = 顺时针旋转180度(Inverted) | |||
B = 顺时针旋转270度 (Bottom) | |||
h | = | 字符高度 | |
曲线字体: | |||
默认值: | 15点或上一次^CF的值。 | ||
可接受的值: | 10-1500点 | ||
点阵字体: | |||
默认值: | 指定点阵字体的标准高度 | ||
其他值: | 标准高度高度的整数倍,2-10。 | ||
w | = | 字符宽度 | |
曲线字体: | |||
默认值: | 12点或上一次^CV的值,也可以显示为0 | ||
可接受的值: | 10-1500点 | ||
点阵字体: | |||
默认值: | 指定点阵字体的标准宽度 | ||
其他值: | 标准高度高度的整数倍,2-10。 |
//设置一维码Code128的格式
^FO52,90^BY2,3,50^BCN,50,N,N,N,A^FD$SN^FS
^FO:设置字段位置
^BY:条码字段默认参数设置
^BC:Code128,()
^FD:Field Data数据字段,限制100字符
^FS:字段分隔,表示字段定义结束
^A:缩放/点阵字体
^BY命令的格式:
^Byw,r,h
^BY | = | 改变条码默认参数 |
w | = | 模块(窄条)宽 |
开机初始化值:2点 可接受的数值:1-10点 | ||
r | = | 宽条与窄条的比例 |
开机初始化值:3.0 可接受的数值:2.0到3.0,0.1的增量(对固定比例的条码无效) | ||
h | = | 条码高度 |
开机初始化值:10点 可接受的数值:1点到标签高度。 |
^BC命令的格式:
^BCo,h,f,g,e,m
^BC | = | Code 128条码 | |
o | = | 字体方向 | |
默认值:^FW默认值或上一个^FW的值。 | |||
其他值: | N = 正常 (Normal) | ||
R = 顺时针旋转90度(Roated) | |||
I = 顺时针旋转180度(Inverted) | |||
B = 顺时针旋转270度 (Bottom) | |||
h | = | 条码高度 | |
默认值:由^BY设置 其他值:1到9999点 | |||
f | = | 打印注释行 | |
默认值: Y = 打印(Yes) 其他值:N = 不打印(No) | |||
g | = | 将注释行打印在条码上方 | |
默认值: N = 不打印在条码上方 其他值: Y = 打印在条码上方 | |||
e | = | 打印UCC校验位 | |
默认值:Y = 打印(Yes) 其他值:N = 不打印(No) | |||
m | = | 模式 | |
默认值:N = 不选择模式 其他值:U = UCC匹配模式。(^FD或^SN后必须有19位数字。)用FNC1值自动选择C子集。 版本16.3.0版本有效: A = 自动模式。自动模式将分析收到的数据并自动决定选取最佳的压缩方式。^FD可以用全部ASCII字符。打印机将确定是否变化子集。四个及以上的数字将自动变化为C子集。 |
//设置二维码Data Matrix的格式
^FO485,8^BXN,6,200^FDZ2007203419,1100705042001,ZS565-110-001-1,ABCD1234^FS
^BX Data Matrix 条码 说明: ^BX 命令可以创建二维,它由由一个分布着多个小方块的正方形图案组成。 格式: ^BXo,h,s,c,r,f,g,a
//结束命令符
^PQ1^XZ
^PQ:设置打印数量
^XZ:标签格式以^XZ结束
一、斑马^BC指令的描述
code128是一种高密度、可变长、连续的字母数字符号。它的目的是编码复杂的产品标识。每个code128字符,包括六个要素:三个条和三个空。
● ^BC支持一个固定打印比率。
● 数据(^FD)受限于标签的宽度。
斑马^BC指令格式如下:
^BCo,h,f,g,e,m
这里:
① ^BC = Code128条形码
② o = 方向
默认值:当前^FW的设置
N = 正常
R = 顺时针旋转90度
I = 倒转180度
B = 镜像
③ h = 条形码高度 默认值:由^BY来设置
其他值:1dot 到 9999dots
④ f = 打印释义行
默认值:Y =Yes
其他值:N =No
⑤ g = 条码上打印释义行
默认值:N =No
其他值:Y =Yes
⑥ e = UCC校验位
默认值:N =No
其他值:Y =Yes
⑦ m = 模式,N、U、A、D可选
默认值:N =没有模式可选
其他值:U =UCC模式,(^FD或^SN语句必须包括19个数字,它也可以包含有效的字母),C字符集中的FNC1将被自动选择使用;在^FD或^SN语句中超出19位的多余位数将被滤掉,而低于19位数字的,将在右侧增加0补充至19位。
其他值:A =Automatic模式,Automatic模式分析发送来的数据,并自动确定最佳的分配方法;完整的ASCII字符集都可以用使用在^FD语句中,打印机将决定什么时候转变字符子集,四个或者更多的数字位将导致自动转换为C字符集。
其他值:D =新模式(F/W为x.11.x版本或以上),●将允许处理带应用程序标识符或不带应用程序标识符的UCC/EAN;●代码以FNC1开始标识一个UCC/EAN128条形码;●打印机将自动去掉括号和空格进行编码,但括号和空格在释义行可见;●打印机将自动判断,如果需要一个校验位,计算出来,并打印它;●自动调整释义行
二、code128条形码子集
code128码有三个字符的子集。在每个子集中都有106个编码打印字符,每个字符集最多可以有三个不同的含义,这取决于所使用的字符子集。三个code128字符子集分别被称为:●子集A;●子集B;●子集C
子集可以通过下述两种方法之一进行选择:
Ⅰ.在与该条形码关联的字符串数据(^FD)中,使用一个特殊的调用代码。
Ⅱ.将所需的启动代码放在的数据开始的位置。如果没有启动代码输入,子集B将被使用。
要改变一个条形码内的子集,在相应的数据串点上放置适当的调用代码,新的子集将保持有效,直到出现了其他的调用代码。 (例如,在子集C中,使用一个“>7”数据改变到A的子集),下表显示了code128三个子集的调用代码和开始字符代码。
① 子集A和子集C的规则
code128的子集A和子集C在数据字符串中需要通过双位数来进行编程,00-99。在子集A中,每个双位数来作为一个单字符编码到条形码中;子集C是直接被打印的。
② 子集B的规则
子集B是直接作为ASCII文本编程的,除了大于94的和一些特殊字符(^ > ~)外,而这些字符必须通过调用代码来进行编程。
③ code128字符集
④ UCC/EAN-128符号体系
应用标识符数据UCC/EAN-128,是一种code128码的变体,专门保留为EAN和UCC使用,它的目的不是用于零售网点的数据扫描。
UCC/EAN-128有很多优势,它是当今最完整的字母数字一维条码,使用三种不同的字符集(A,B,C)有利于完整的对128个ASCII字符进行编码;code128条形码是最紧凑的线性条码;字符集C可以使双密度模式来代表的数字数据,在这种模式下,两个数字用一个符号字符代表以节省宝贵的空间。
UCC/EAN-128条码始终包含一个特殊的非数据字符被称为功能1(FNC1),它跟在条码的起始字符后。它使扫描器和处理软件能够自动识别UCC/EAN-128和其他条码符号,随后只处理相关数据。
UCC/EAN-128条码是由静止区、一个code128的起始字符A,B或C、1个FNC字符、数据(应用程序标识符加上数据字段)、校验字符、停止字符和一个尾随的静止区来组成。
UCC/EAN,UCC/128有几种方式来听取它所使用的代码。这取决于所使用的应用程序标识符代码。
下面是UCC应用标识符表:
数据内容 | 应用标识符(AI) | 另加下列数据结构 |
---|---|---|
Serial Shipping Container Code (SSCC) | 00 | 整整18个数字 |
Shipping Container Code | 01 | 整整14个数字 |
Batch NumberS | 10 | 最大可到20个字母数字 |
Production Date (YYMMDD) | 11 | 整整6个数字 |
Packaging Date (YYMMDD) | 13 | 整整6个数字 |
Sell By Date (YYMMDD) | 15 | 整整6个数字 |
Expiration Date (YYMMDD) | 17 | 整整6个数字 |
Product Variant | 20 | 整整2个数字 |
Serial Number | 21 | 最大可到20个字母数字 |
HIBCC Quantity, Date, Batch and Link | 22 | 最大可到29个字母数字 |
Lot Number | 23* | 最大可到19个字母数字 |
Quantity Each | 30 | |
Net Weight (Kilograms) | 310** | 整整6个数字 |
Length, Meters | 311** | 整整6个数字 |
Width or Diameter (Meters) | 312** | 整整6个数字 |
Depths ( Meters) | 313** | 整整6个数字 |
Area (Sq. Meters) | 314** | 整整6个数字 |
Volume (Liters) | 315** | 整整6个数字 |
Volume (Cubic Meters) | 316** | 整整6个数字 |
Net Weight (Pounds) | 320** | 整整6个数字 |
Customer PO Number | 400 | 最大可到29个字母数字 |
Ship To (Deliver To) Location Code using EAN 13 or DUNS Number with leading zeros | 410 | 整整13个数字 |
Bill To (Invoice To) Location Code using EAN 13 or DUNS Number with leading zeros | 411 | 整整13个数字 |
Purchase from | 412 | 整整13个数字 |
Ship To (Deliver To) Postal Code within single postal authority | 420 | 最大可到9个字母数字 |
Ship To (Deliver To) Postal Code with 3-digit ISO Country Code Prefix | 421 | 3个到9个字母数字 |
Roll Products - width, length, core diameter, direction and splices | 8001 | 整整14个数字 |
Electronic Serial number for cellular mobile phone | 8002 | 最大可到20个字母数字 |
注:对于仅仅需要表明年和月的,数据字段被设置为“00”
三、斑马^BC指令打印code128条形码示例
1、通过子集A来进行打印
指令代码如下:
^XA
^FO100,70^BY3^BCN,100,Y,N,N
^FD>93547363717181920^FS
^XZ
2、通过子集C来进行打印
指令代码如下:
^XA
^FO100,70^BY3^BCN,100,Y,N,N
^FD>;5633765412^FS
^XZ
3、具有子集C转换到子集B,然后再转换为子集A
指令代码如下:
^XA
^FO50,50^BY3^BCN,100,Y,N,N
^FD>;382436>6CODE128>752375152^FS
^XZ
“>;”为子集C的开始字符代码,“>6”表示转换为子集B,“>7”表示转换为子集A。
4、几种方法来编写代码,打印EAN/UCC-128条形码,应用标识符为'00'
4.1 m参数使用'N',应用标识符为00
代码如下:
^XA
^FO90,200^BY4^BCN,256,Y,N,Y,N^FD>;>80012345123451234512^FS
^XZ
■ >;>8,设置子集C 和功能1(FCN1)
■ 00后面有17个字符,校验位自动生成打印第20个字符(由e参数来决定)
■ 当m参数设置为N时,位数并不限制在19个字符
4.2 m参数使用'U',应用标识符为00
代码如下:
^XA
^FO90,200^BY4^BC,256,Y,N,,U^FD0012345123451234512^FS
^XZ
■ 当m参数选择U时,在^FD后面只能使用19个字符,不能多也不能少
■ 子集C和FNC1是被自动选择的
■ 校验位是被自动插入的
4.3 m参数使用'D',应用标识符为00
代码如下:
^XA
^FO50,200^BCN,150,Y,N,,D^FD(00) 1 2345123 4512345120^FS
^XZ
■ 这个0(数据结束时)是个假字符,作为一个占位字符,打印机将自动插入一个校验位,在这个列子中校验位刚好也是0
■ 子集C和FNC1是被自动选择的
■ 括号和空格,可以出现在数据中
■ 校验位是自动插入的。打印机将自动计算校验位,并把其写入到条形码的释义行。
■ 释义行也将显示括号和空格,但不会在实际的条码里。
4.4 使用不同的字体来打印释义行(F/W版本为x.10.x或者更新的版本)
代码如下:
^XA
^FO50,200^A0N,40,30^BCN,150,Y,N,Y^FD>;>80012345123451234512^FS
^XZ
■ ^A0N,40,30命令行可以改变释义行的字体和大小。
4.5 使用不同的字体来打印释义行(F/W版本为x.10.x以下版本)
代码如下:
^XA
^FO25,25^BCN,150,N,N,Y^FD>;>80012345123451234512^FS
^FO100,190^A0N,50,40^FD(00) 1 2345123 451234512 0^FS
^XZ
■ 需要编写一个单独的文本字段。
■ 条形码的释义行需要被关闭,参数f必须为N
■ ^A0N,50,40命令行可以改变释义行的字体和大小。
■ 你必须确保你在文本字段中输入正确的校验数字
■ 创建一个单独的文本域,用括号和空格来格式释义行。
5、具有多个应用标识符的EAN/UCC-128条形码打印
FNC1(>8)将被插入在两个AI之间
5.1 m参数使用A(自动)
^XA
^BY2,2.5,193^FO33,400^BCN,,N,N,N,A^FD>;>80104017773003486>8100008535>8910001>837252^FS
^FT33,625^AEN,0,0^FD(01)04017773003486(10)0008535(91)0001(37)252^FS
^XZ
5.2 m参数使用U
^XA
^BY3,2.5,193^FO33,200^BCN,,N,N,N,U^FD>;>80204017773003486>8100008535>8910001>837252^FS
^FT33,455^A0N,30,30^FD(02)04017773003486(10)0008535(91)0001(37)252^FS
^XZ
5.3 m参数使用D
^XA
^PON
^LH0,0
^BY2,2.5,145^FO218,343^BCB,,Y,N,N,D^FD(91)0005886>8(10)0000410549>8(99)05^FS
^XZ