esc r pn

功能解释:
(1) 设定以pn 为命令的国际字符集。
(2) pn = 00h~0dh,40h.国际字符集设置命令。
pn 如超出上述范围,本命令无效,在esc r pn 范围被舍去,并按以前设定的国际字符集设置执行。

用户自定义字符
esc & pn0 pn1 pn2 pd0 pd1 pd2 data
【用户定义字符设置】

功能解释:
(1) 用户定义调用
(2) pn1, pn2 的意义及范围如下:
(a) 意义
从pn1 记录范围到pn2 记录范围调用用户定义功能,并表示其设定的范围
当为1 个字时,pn1 = pn2。最大可以到128 个字。
(b) 范围
0 ≤ pn1 ≤ 7fh,0 ≤ pn2 ≤ 7fh(pn1 ≤ pn2)
不能满足上述条件时,如下所示:

(3) pd0,pd1,pd2的意义及范围
(a) 意义
pdo – 字前间距
pd1 – 字自身的宽
pd2 – 字后间距

(b) pdo, pd1, pd2的范围
(i) pd1 的有效范围
草稿draft..0 ≤ pd1 ≤ 15
信函lq..0 ≤ pd1 ≤ 37
在pd1 = 0 时,不调用pd0,pd1,pd2 数据接收后立即清除。
在pd1 ] 37 时超过37 的部分不调用。
(pd1 – 37) × 3, (pd1 – 37) × 2的部分的数据在接收后立即清除(注1)
(pd1 × 3) byte部分的数据将无条件地调用。
但是,在pd1 = 0 时,以前的代码所调用数据将清除。
当超出上述所设定的有效范围时,超出部分的数据将随着接受各字符而立即被清掉。
(ii) pd0 + pd1 + pd2的有效范围
草稿draft..0≤pd0 + pd1 + pd2≤18
信函lq..0≤pd0 + pd1 + pd2≤42
pd0 及pd2 的有效范围如下:
pd0..0 ≤ pd0 ≤ 42 - pd1
pd2.. – (pd0 + pd1) ≤pd2≤42 – (pd0 + pd1)
(注1)标准角标时..(pd1 – 37)× 3
上/下角标时..(pd1 – 37)× 2
(4) 命令格式从esc & nul 之后按起动命令、结束命令(pn2)、字符数据(pd0,pd1,pd2)、字符数据(d1 × 3)的顺序逐步传入。当对2 个字符以上进行调用时,对字符的各数据以后各内容反复按文字数部分输入。
(5) 当命令邻接打印点时,打印点不打印而在后面打印。
(6) 用户定义的信息格式将成为如图的式样。
(a) 草稿格式

(i) 垂直方向的点间隔为1/180 英寸
水平方向的点间隔为1/120 英寸
(ii) 图中[ ] 内的数字是按信息调用顺序表示的。
(iii) 图中的cap 是按draft 字型图案的(ascenter)的上升的最上面位置的dot 及同base 一样字型图案的下降文字的最下面的位置的点数来表示。
cap、base只表示标准数。
(b) 信函lq/比例打印格式

(i) 水平方向的点间隔为1/360英寸
垂直方向的点间隔为1/180 英寸
(ii) 图中[ ] 内的数字表示打印信息是以调用先后顺序进行的。
(iii) 图中的cap是表示lq/比例打印字型成图形的上端字符最高打印点位置,base同类字符图形的下端字符打印点的最低位置。
(7) 关于本命令的草稿draft、信函lq,比例打印选择顺序即为各指令执行顺序。同时调用3 个方式的组合时不能执行。
(8) 本指令和设定上/下角标命令组合起来执行时,必须遵循格式定义。
如下图所示:

(a) 上角标表示纵向3 个比特中的上位2 个比特部分的数据。
(b) 下角标表示纵向3 个比特中的下位2 个比特部分的数据。
象下表那样以列数为基础,调用比较好(注)

(注) 在调用以前,不先设定上/下角标方式的话,将调用垂直方向的图形。
数据的调用顺序和3 比特调用方式方向相同。
rom cg存储器的复制
esc : nul pn nul

功能解释:
(1) 本命令把现在使用中的字符集中代码为20h~7fh的字符复制到用户定的ram20h~7fh中。
(2) 在本命令以前,被ram 调用的字符将根据本命令的输入进行打印方式转换。
(3) pn 表示复制的字型
详细情况同esc k pn(lq 字体的选择)的pn 一样。
(4) esc:后的nul 既使为00h,80h 也有效。
用户定义设定
esc % pn

功能解释:
(1) 执行用户定义字符集。
(2) 本命令的意义:
pn = 01h, 31h, 81h, b1h..用户定义字符集的设置。
pn = 00h, 30h, 80h, b0h..解除用户定义字符集功能。
(3) 在pn 设定上述之外的值时, 本命令无效, 并按以前的设定执行。
图形打印
esc k ln hn data, esc l ln hn data
esc y ln hn data, esc z ln hn data
【图形控制】

功能解释:
(1) 根据本命令执行图形打印。
(2) 各命令意义如下
(a) esc k ln hn data
执行8 针方式单密度二进制图形图像打印。
图像复合命令(esc * pm ln ln hn data)中,pm = 0的时候等价。
(b) esc l ln hn data
执行8 针方式、双密度二进制图形图像打印。
同图像复合命令的pm = 1 时等价。
(c) esc y ln hn data
执行8 针一倍速单密度二进制图形图像打印。
同图像复合命令的pm = 2 时等价。
(d) esc z ln hn data
执行8 针方式4 倍密度二进制图形图像打印。
同图像复合命令的pm = 3 时等价。
(3) ln hn的意义及范围如下
(a) 意义:
命令打印的列数。
列数按下式:
(列数)=ln + hn × 256
(b) 范围
0 ≤ ln ≤ 255 0 ≤ hn ≤ 255 (hn 是b5~b7 时无效)
ln = hn = 0时本命令被舍去。
(4) 信息数据ln, hn以设定的列数为基础来决定。(数据数) = ln + hn × 256(byte)
图像方式选择
esc * pm ln hn data

功能解释:
(1) 用pm 执行已设定的图像打印。
(2) 以pm 来设定的图像种类如下:
pm 为8 个单位。

(3) ln hn的意义及范围:
(a) 意义:
依据下式, 执行列数的命令
列数= ln + hn × 256
(b) 范围
0 ≤ ln ≤ 255 0 ≤ hn ≤ 255 (hn 为b5~b7 时无效)
当ln = hn = 0时,接收到esc * pm ln hn后便立即清除。
(4) 数据数是根据ln,hn,以被设定的列数为基础来决定的。
(a) 8 针图像
数据数= ln + hn × 256 (byte)
(b) 24 针图像
数据数= (ln + hn × 256) × 3 (byte)
图形方式变换
esc ? pm pn

功能解释:
(1) 本命令是把图像指令(esc k, esc l, ese y, esc z) 向图像复合指令变换。
(2) pm的意义及范围如下所示:
(a) 意义
将复合图像向指定的图像指令变换。
(b) 范围
pm =“k”“l”“y”“z”
(4bh、4ch、59h、5ah)msb 无效
在上述值之外设定的场合,本命令在esc ? pm pn 的范围内被舍去。
(3) pn的意义及范围如下所示:
(a) 意义
同图像复合命令(esc * pm ln hn data) 的pm等价,设定图像的种类(参照图像复合命令项目)
(b) 范围pn = 0,1,2,3,4,6,32,33,38,39,40(10 进制)如设定上述范围之外的值,本命令在esc ? pm pn 范围内被舍去。
(4) 根据本命令设定的图像命令(esc k, esc l, esc y, esc z) 同图像复合命令(esc *) 等价。
条形码种类选择
esc dle a p1 n1 n2 n3 n4 n5 n6 n7 n8
【条形码控制】

功能解释:
(1) 根据本命令进行条形码种类的选择及大小的设定。
(2) 各参数的意义如下:
(a) p1 表示以后面的信息量(byte 数),(msb 视为无效)
p1 = 0、1、3 本命令无效。
p1 = 2、4、5、6、7、8 时,本命令有效。
p1 ≥ 9 时,对n1~n8 有效,n9 无效。
(b) n1 n2 为条码的选择(参数的上位4bit 为无效)
n1 n2
0 1 ean8
0 2 ean13
1 0 upc-a
1 4 upc-e
2 0 code39
3 0 interleaved 2 of 5
4 0 code128
只以n1n2 共同设定时上述功能才有效。
用无效的参数输入时,本功能视为无效。设定将按以前的方式进行。
(c) n3n4设定条形码的纵向的长度。
单位为15/180 英寸
通常码的高度为
(n3 × 10 + n4) × (15/180英寸)。
n3 = n4 = 0 时,设定无效,以前设定的值为准。
n3 × 10 + n4)≥25
n3 × 10+n4) = 24
条形码一行的长度单位为15/180 英寸。
(d) n5进行黑色条码设定。
ean8/ean13/upc – a/upc – e/code128时表示一个组的宽。
code39/interleaved 2 of 5时, 表示窄码的黑色条宽。
黑色条码的最小宽度为1/360 英寸。
n5 = 0 时,按以前的设定执行。
n4 ≥ 8 时,作为n5 = 7 来设定。
n5 同一个字符的最大幅度关系如下:
表1 ean8/ean13/upc-a/upc-e/code128一个字符的最大宽度

表2 code39/ interleaved 2 of 5 黑色条码符号表

code39的字符及起动停止代码的最大值从表2(黑色条码符号一览表)、表4(线间距一览表)来求得在两个图形的条码里,取得宽幅的图形作为最大幅来计算。
图形1:
nb = 5元素, ns = 1元素
wb = 0 元素, ws = 3 元素
图形2:
nb = 3 元素, ns = 3元素
wb = 2 元素, ws = 1 元素
(例) 接收代码24h.010101000 (nb, ws, nb, ws, nb, ws, nb, ns, nb)
当n5 = 2, n6 = 3, n7 = 4时
根据表2, 表4, wb = 21 列、nb = 4 列、ws = 38 列、ns = 13 列
图形1
nb = 5 元素× 4 列= 20列
ns = 1 元素× 13 列= 13 列共计147 列
wb = 0 元素× 21 列= 0 列
ws = 3 元素× 38 列= 114 列
图形2
nb = 3 元素× 4 列= 12 列
ns = 3 元素× 13 列= 39 列共计131 列
wb = 2 元素× 21 列= 42 列
ws = 1 元素× 38 列= 38 列
最大幅为147列(360dpi)
* wb – 宽条码nb – 窄条码; ws – 宽间距ns – 窄间距
interleaved 2 of 5 的字符码、首位码、中止码的最大值可用表2(黑色条码一览表)表4(间距一览表)来求得。
nb = 3 元素,ns = 3 元素,wb = 2 元素,ws = 2 元素
(例)用2 个字符构成一个条码,最大值为2 个字符。
接收码30h..00110(nb,nb,wb,wb,nb)
32h..01001(ns,ws,ns,ns,ws)
在n5 = 2,n6 = 3,n7 = 4 时,
根据表2、表4、wb = 21 列,ws = 38 列,nb = 4 列、ns = 13 列

最大幅为169 列(360dpi) (2字符宽)
首始码..0000 (nb, ns, nb, ns)
(例) n5 = 2, n6 = 3 时,根据表4 、表6,nb = 4 列,ns = 13 列
nb + ns + nb + ns = 4 + 13 + 4 + 13= 34
最大幅为34 列(360dpi)
中止码...100(wb,ns,nb)
(例) 在n5 = 2,n6 = 3,n7 = 4 时,根据表2,表4,wb = 21 列,nb = 4 列,ns = 13 列
wb + ns + nb = 21 + 13 + 4= 38
最大幅为38 列(360dpi)
* wb -宽条码ws -宽间距; ns -窄间距nb-窄条码
ean8/ean13/upc-a/upc-e/code128
4 级条码的打印列数表根据n5,条形码宽的倍率设定,n6 不计。
下述列数成为执行(d)的打印条形码宽。
表3

打印组幅度表示以1/360 英寸为单位的幅宽。
打印列数表示360dpi 时的列数。
(e) n6间距的设定值
ean8/ean13/upc-a/upc-e/code128被选择时, n6指令为无效。
code39/interleaved 2 of 5 时, 表示窄线间距。
间距最小为1/360 英寸。
n6 = 0 时,按以前的设定执行。
n6 ≥ 8 时,作为n6 = 7 来设定。
n6 和倍率的关系如下:(图表略)见184 页
表4 code39 interleaved 2 of 5 窄线间距

(f) n7设定宽线元素和窄线元素的比率。
n7 和比率的关系如下:
表5

n7 = 0 时, 按以前的设定执行
n7 ≥ 8 时,以n7 - 7 来设定
ean8/ean13/upc - a/upc - e/code128 选择时,本设定(与n7 有关系的)将为无效。
(g) n8设定字符的有无和字符的种类。
n8 和字符的有无、字符的种类之间的关系如下:

字符的在与条形码的种类选择和大小的设定无关,为固定的12cpi。
条形码数据打印
esc dle b p1 pm data

功能解释:
(1) 根据本命令执行条形码打印
(2) p1 表示后面的数据量(byte 数),(msb 为无效)。
(3) pm 选择code128 的方式a,b,c,只有code128 被选择时才有效。
41h:code128 (a 组)
42h:code128 (b 组)
43h:code128 (c 组)
在上述外,本命令为无效,被舍去。
(4) data表示条形码数据。
(5) 在条形码数据的最后,送出检验数位码,用于附加检验数位。
但是,如检验数位码最后没在条形码数据时,则为无效。
(6) 在本命令中,下列字符数值为有效的字符数位。数位检验码也作为1 个字符计数
(a) ean8 8 个字符(固定)
(b) ean13 13 个字符(固定)
(c) upc-a 12 个字符(固定)
(d) upc-e 6 个字符(固定)
(e) code39 50 个字符(最大字符数)
(f) interleaved 2 of 5 50 个字符(最大字符数)
(g) code128 (set a, b, c) 50 个字符(最大字符数)
对于从(a) 到(b) 各项,上述的字符数为固定数。
(p1 的值为固定字符数之外的值时,本命令无效)
对于从(e) 到(g) 的各项,在不超过最大字符数范围时有效。
p1 值在最大字符数以上(不含最大字符数)时,本命令无效。
(7) 根据条形码的种类, 有效字符如下:(从20h 到5ah 中43 个字符有效,对于详细情况请参照代码检验表)
(a) ean8 0 (30h)≤有效的字符数≤9 (39h)
(b) ean13 0 (30h)≤有效的字符数≤9 (39h)
(c) upc-a 0 (30h)≤有效的字符数≤9 (39h)
(d) upc-e 0 (30h)≤有效的字符数≤9 (39h)
(e) code39 sp (20h)≤有效的字符数≤z (5ah)
(f) interleaved 2 of 5 0 (30h)≤有效的字符数≤9 (39h)
(g) code128 (a组) 00h ≤有效的字符数≤ 66h
(h) code128 (b组) 19h≤有效的字符数≤7fh
(i) code128 (c组) 30h ≤有效的字符数≤ 3ch
上述之外的字符无效(检验数位字符除外)。但是,在p1 中表示的byte 数将被计算在内。
(8) 根据条形码的种类,检验数位字符有如下方式:
(a) ean8 “@”(40h)
(b) ean13 “@”(40h)
(c) upc-a “@”(40h)
(d) upc-e 不能指定
(e) code39 “@”(40h)
(f) interleaved 2 of 5 “@”(40h)
(g) code128 (a组) “g” (67h)
(h) code128 (b组) (18h)
(i) code128 (c组) “@”(40h)
code128 的检验数位只打印条形码,不进行人工再加倍字符的打印。
(9) 首位条码、中央条码、尾条码,只在下述各类命令中才能附加。
(a) ean 8
(b) ean-13
(c) upc-a
(d) upc-e
(10) 条形码检验数位命令能自动形成如下:
(a) 最后的检验数位码时,取代条形码检验指令检验数位码。
(b) ean8,upc-a,interleaved2 of 5检验数位的计算方法如下:
把从左端开始的奇数位置信息全部加算。
把加算的data 扩大3 倍............ a
把左端开始的偶数位信息全部加算起来......b
相加后再算a 的值和b 的值...........c
从10 减算c 值(1 的位)的值即为检验数位。
(例) 条码信息1234567@(@ 成为检验数位码)。
1 + 3 + 5 + 7 = 16
↓
16 × 3 = 48
↓
2 + 4 + 6 = 12 (不包含检验数位)
↓
48 + 12 = 60
10 - 0 = 10 (10 的时候为0)
↓
根据上式,检验数位时为0。
(注)对于interleaved 2 of 5,data数(n)为奇数时,第一个data将作为0进行上述计算。
(c) ean13检验数位的计算方法如下:
把左端开始的偶数位置信息全部加算.
把加算的资料扩大3 倍.......... a
把左端开始的奇数位置data 全部加算... b
加算a 的值和b 的值........... c
从10 减算c 值(1 的位)的值,即为检验数位。
(例) 条形码数据123456789012@ (@ 成为检验数位)
2 + 4 + 6 + 8 + 0 + 2 = 22
↓
22 × 3 = 66
↓
1 + 3 + 5 + 7 + 9 + 1 = 26 (不含检验数位)
↓
66 + 26 = 92
↓
10 – 2 = 8 (10 时为0)
↓
(d) upc - e 检验数位的计算方法如下:
把6 字符向11 字符扩展
把左端开始的奇数位数据全部相加.
把相加后的数据扩大3 倍........a
把左端开始的偶数位数据全部相加.... b
相加a 的值和b 的值..........c
从10 减算c 值(1 的位)的值,即为检验数位
6 字符抑制方法:
1 m1 m2 13 14 15 m3 (m3 = 0、1、2)
m1 m2 m3 0 0 0 0 13 14 15 13 14 15 = 000~999
2 m1 m2 m3 0 0 0 0 0 14 15
m1 m2 m3 0 0 0 0 0 14 15 14 15 = 00~99
3 m1 m2 m3 m4 15 4
m1 m2 m3 m4 0 0 0 0 0 15 15 = 0~9
4 m1 m2 m3 m4 m5 15 (15 = 5~9)
m1 m2 m3 m4 m5 0 0 0 0 15 15 = 5~9
m: 厂家代码i: 商品代码
对于6 字符,遵从上述约束向10 字符扩展,其后,附加在这10 个字符的开头的0 上,使之为11 位字符。
(例)条形码数字123451
01210000345 按11 位字符展开
↓
0 + 2 + 0 + 0 + 3 + 5 =10
↓
10 × 3=30
1 + 1 + 0 + 0 + 4 = 6
↓
30 + 6 = 36
↓
10 – 6 = 4
根据上式,检验字符位变为4。
(e) code39
在输入数据里加入相应的数值(参照下表)。
计算相加后的数据,分割成43 份,出来的值的剩余的部分。
剩余部分中相应的字符位成为检验数位字符(参照下表)

(f) code128检验数位的计算方法如下:
除首位代码,在从左端各输入的数据中,相应的字符号里的附加号码进行相乘。
(以字符no.参照) ..a
*附加号码为除起始码外,以字符的左端开始的1、2、3、4..按递增顺序作为附加的码。
a 的值全部相加,加上起始码字符no........b。
算出b 的值以103 份来分割的剩余部分值。剩余值相当的字符成为检验数位。
(例)条形码数据〖起始码a〗3 8 a 6 g (g 是检验数位)
字符号附加号
3 : 9 1
8 : 24 2
a : 33 3
6 : 22 4
19 × 1 + 24 × 2 + 33 × 3 + 22 × 4=254
起始码a 的字符号为103
254 + 103=357
357 ÷ 103=3...余48
在字符序号no.48 中,相应的字符p 便成为检验数位码。

关于code128 的code c, 当数据a 数为奇数时, 数据的第一号作为0 进行检验数位的计算。