由于公司业务的需要,需要使用android客户端控制pos机器打印票据不仅是中文的,还有二维码的打印!经过两天的努力!终于完成了!!!我真的!
首先,先奉上ESC/POS指令集。
EPSON打印控制指令集
打印命令 功能
格式: ASCII: 以标准ASCII字符序列表示
十进制: 以十进制数字序列表示
十六进制: 以十六进制数字序列表示
说明:该命令功能和使用说明。
HT 水平制表
格式: ASCII: HT
十进制: 09
十六进制: 09
说明:
在下一水平制表位置打印位置。
如果当前打印位置超过最后一个水平制表位置,HT不执行命令。
水平制表位置由 ESC D命令设置。
LF 打印并换行
格式: ASCII: LF
十进制: 10
十六进制: 0A
说明:
打印存储在行编辑缓存中的一行数据,并按照当前设定的行距向前走。ESC2,ESC3指令可以设置行距的长度。
如果行编辑缓存是空的,当前设定的行距向前走。
CR 打印回车
格式: ASCII: CR
十进制: 13
十六进制: 0D
说明:
在行编辑缓存中打印一行数据时,不进行走纸操作。
DLE EOT n 实时状态传输
格式: ASCII: DLE EOT n
十进制: 16 04 n
十六进制: 10 04
说明:
1 ≤ n ≤ 4
传送以实时的方式,n基于以下参数,代表选定的打印机状态:
n = 1: 打印机状态
n = 2: 脱机状态
n = 3: 错误状态
n = 4: 纸检测器状态
返回的字节每位设置如下:
n = 1: 打印机状态
n = 2: 脱机状态
n = 3: 错误状态
n = 4: 纸检测器状态
DLE ENQ n 对打印机的实时请求
格式: ASCII: DLE ENQ n
十进制: 16 05 n
十六进制: 10 5
说明:
n = 0, n = 2
打印机对主机请求作出反应,n值定义如下:
n = 0: 恢复到联机状态
n = 2: 清除接收和打印缓冲区,并恢复错误.
ESC SP n 设置字符右间距
格式: ASCII: ESC SP n
十进制: 27 32 n
十六进制: 1B 20 n
说明:
以半点为设定单位(1/144英寸),设置字符右边间距为n个半点距。
默认值n=0。
ESC ! n 设置字符打印方式
格式: ASCII: ESC ! n
十进制: 27 33 n
十六进制: 1B 21 n
说明:
0≤n≤255
ESC ! n是综合性的字符打印方式设置命令,用于选择打印字符的大小和下划线。
打印参数n的每位定义为:
位 功能 值
0 1
0 字模选择 7×9 5×7
1 无定义
2 无定义
3 着重模式 取消 设定
4 倍 高 取消 设定
5 倍 宽 取消 设定
6 无定义
7 下划线 取消 设定
默认值n=0,
ESC % n 允许/禁止用户自定义字符
格式: ASCII: ESC % n
十进制: 27 37 n
十六进制: 1B 25 n
说明:
参数n为一个字节,只有最低位有效。
当n=<*******1>B时,选择用户自定义字符集;
当n=<*******0>B时,选择内部字符集。
0≤n≤255,默认值n=0。
ESC & 设置用户自定义字符
格式: ASCII: ESC & y n m x d1 d2……db
十进制: 27 38 y n m x d1 d2……db
十六进制: 1B 26 y n m x d1 d2……db
说明:
该命令用于自定义字符。各参数为:
y:字符的纵向字节数。这里取 y=1,2。
n:自定义字符集的起始ASCII码,n≥32。
m:自定义字符集的终止ASCII码,m≤127。自定义字符个数为m-n+1,最多可定义96个字符。
当只有一个自定义字符时,取m=n。
a:自定义字符的水平方向的点数。
d1 d2……db:自定义字符的数据。每个字符 y×x个字节,m-n+1个自定义字符共有:
(y×x)×(m-n+1)个字节。
每个自定义字符数据的格式:
d1 d3 … d(y×x)×(m-n+1)-1
d2 d4 … d(y×x)×(m-n+1)
样例如下:
发送的命令如下:
ESC & y c1 c2 X p1 p2 p3 d4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14
Code 1B 26 02 20 20 07 1F 80 20 00 44 00 80 00 44 00 20 00 1F 80
ESC * 设置图形点阵
格式: ASCII: ESC * m n1 n2 D1,D2 … Dk
十进制: 27 42 m n1 n2 D1,D2 … Dk
十六进制: 1B 2A m n1 n2 D1,D2 … Dk
说明:
该命令用来设置点阵图形模式(m)和横向图形点阵。
m = 0,1:表示打印密度。
0≤n1≤255,0≤n2≤1,0≤Dk≤255,k= n1+ n2×256。
n1,n2为两位十六进制数,n1这低字节,n2这高字节,k= n1+ n2×256,表示该命令下载的要打印图形的横向点数,该值应小于打印机的最大行宽打印点数。如果下送的点图数据超出一行的最大行宽打印点数时,超出的部分被忽略。
m 垂直方向点数 点密度 最大点数 图形打印模式
0 8 单密度 210 相邻点打印
1 8 双密度 420 相邻点不打印
Dk 定义为:
ESC - n 设置/取消下划线模式
格式: ASCII: ESC - n
十进制: 27 45 n
十六进制: 1B 2D n
说明:
n = 0, 1, 48, 49
n = 0 or 48,取消下划线模式。
n = 1 or 49, 设置下划线模式。
ESC 2 设定1/6英寸换行量
格式: ASCII: ESC 2
十进制: 27 50
十六进制: 1B 32
说明:
此指令将打印机的换行量设定为1/6英寸。
ESC 3 n 设定 n/144英寸换行量
格式: ASCII: ESC 3 n
十进制: 27 51 n
十六进制: 1B 33 n
说明:
此指令将打印机的换行量设定为 n/144英寸。
n=1 - 255。
ESC 〈 打印头归位
格式: ASCII: ESC 〈
十进制: 27 60
十六进制: 1B 3C
说明:
执行该指令后,打针头会回到原位(home的位置)。
ESC = n 设备设置/取消
格式: ASCII: ESC = n
十进制: 27 61 n
十六进制: 1B 3D n
说明:
1 ≤ n ≤ 3
默认 n = 1
位 功能 值
0 1
0 打印机选择 取消 设定
1 顾显选择 取消 设定
2 无定义
3 无定义
4 无定义
5 无定义
6 无定义
7 无定义
ESC ? n 取消用户自定义字符
格式: ASCII: ESC ? n
十进制: 27 63 n
十六进制: 1B 3F n
说明:
32 ≤ n ≤ 126
ESC @ 初始化打印机
格式: ASCII: ESC @
十进制: 27 64
十六进制: 1B 40
说明:
该命令初始化打印机:使打印机恢复到最初的联机状态,清除以前留下的程序。
ESC D NULL 消除所有的水平制表位置
格式: ASCII: ESC D NULL
十进制: 27 68 0
十六进制: 1B 44 0
说明:
ESC D NUL命令消除所有的水平制表位置,之后再执行的HT命令将无效。
ESC E n 设置/取消着重模式
格式: ASCII: ESC E NUL
十进制: 27 69 0
十六进制: 1B 45 0
说明:
0 ≤ n ≤ 255
当n的LSB位是0,取消着重模式。
当n的LSB位是1,设置着重模式。
ESC G n 设置/取消重叠模式
格式: ASCII: ESC G NUL
十进制: 27 71 0
十六进制: 1B 47 0
说明:
0 ≤ n ≤ 255
当n的LSB位是0,取消重叠模式。
当n的LSB位是1,设置重叠模式。
ESC J n 执行n/144英寸走纸
格式: ASCII: ESC J n
十进制: 27 74 n
十六进制: 1B 4A n
说明:
进纸n/144英寸,n值应为0到255之间的任意值。
若当时有打印内容则在打印完成后执行走纸。
ESC K n 打印并反向走纸
格式: ASCII: ESC K n
十进制: 27 75 n
十六进制: 1B 4B n
说明:
0 ≤ n ≤ 48
打印缓冲区里的内容,并反方向走纸n/144英寸(n X 0.176 mm)。
ESC R n 选择国际字符集
格式: ASCII: ESC R n
十进制: 27 82 n
十六进制: 1B 52 n
说明:
ESC R用于选择11个不同国家的不同ASCII字符集。
n=0~10。默认值为0,选择U.S.A方式。
ESC U n 设置/取消单向打印
格式: ASCII: ESC U n
十进制: 27 85 n
十六进制: 1B 55 n
说明:
设置/取消单向打印。n=0~255,仅最低位有效。
当n=<×××××××1>B时,在字符方式下设置为准双向打印,在图形方式下设置为单向打印。
当n=<×××××××0>B时,设置双向打印。
默认值n=0。
ESC a n 选择对齐模式
格式: ASCII: ESC a n
十进制: 27 97 n
十六进制: 1B 61 n
说明:
0 ≤n ≤2, 48 ≤n ≤50
n选择对齐模式,默认值是0。
n 对齐模式
0,48 左对齐
1,49 中对齐
2,50 右对齐
ESC c 3 n 输出纸尽传感器
格式: ASCII: ESC c 3 n
十进制: 27 99 51 n
十六进制: 1B 63 33 n
说明:
0 ≤ n ≤ 255
n的定义见下表:
位 功能 值
0 1
0 末端传感器 取消 设定
1 末端传感器 取消 设定
2 纸尽检测器 取消 设定
3 纸尽检测器 取消 设定
4 无定义
5 无定义
6 无定义
7 无定义
ESC c 4 n 设定缺纸时停止打印
格式: ASCII: ESC c 4 n
十进制: 27 99 52 n
十六进制: 1B 63 34 n
说明:
设置/取消纸检测器检测到缺纸时停止打印。
N=0~255,仅最低位有�