如何使用斑马^BC指令打印各种code128条形码?

CodeSoft admin 2017-02-20 21:34 2415 0

最近用指令做一个打印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 Code01整整14个数字
Batch NumberS10最大可到20个字母数字
Production Date (YYMMDD)11整整6个数字
Packaging Date (YYMMDD)13整整6个数字
Sell By Date (YYMMDD)15整整6个数字
Expiration Date (YYMMDD)17整整6个数字
Product Variant20整整2个数字
Serial Number21最大可到20个字母数字
HIBCC Quantity, Date, Batch and Link22最大可到29个字母数字
Lot Number23*最大可到19个字母数字
Quantity Each30
Net Weight (Kilograms)310**整整6个数字
Length, Meters311**整整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 Number400最大可到29个字母数字
Ship To (Deliver To) Location Code using EAN 13 or DUNS Number with leading zeros410整整13个数字
Bill To (Invoice To) Location Code using EAN 13 or DUNS Number with leading zeros411整整13个数字
Purchase from412整整13个数字
Ship To (Deliver To) Postal Code within single postal authority420最大可到9个字母数字
Ship To (Deliver To) Postal Code with 3-digit ISO Country Code Prefix4213个到9个字母数字
Roll Products - width, length, core diameter, direction and splices8001整整14个数字
Electronic Serial number for cellular mobile phone8002最大可到20个字母数字

注:对于仅仅需要表明年和月的,数据字段被设置为“00”


三、斑马^BC指令打印code128条形码示例

1、通过子集A来进行打印
指令代码如下:
^XA
^FO100,70^BY3^BCN,100,Y,N,N
^FD>93547363717181920^FS
^XZ

CODE1234条形码打印

2、通过子集C来进行打印
指令代码如下:
^XA
^FO100,70^BY3^BCN,100,Y,N,N
^FD>;5633765412^FS
^XZ

5633765412条形码打印

3、具有子集C转换到子集B,然后再转换为子集A
指令代码如下:
^XA
^FO50,50^BY3^BCN,100,Y,N,N
^FD>;382436>6CODE128>752375152^FS
^XZ

382436CODE128TEST条形码打印
“>;”为子集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

00123451234512345120条形码打印
■ >;>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

00123451234512345120 SSCC打印
■ 当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

00123451234512345120 D打印
■ 这个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

不同字体打印F/W新版本
■ ^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/W老版本
■ 需要编写一个单独的文本字段。
■ 条形码的释义行需要被关闭,参数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


评论区