最近在公司使用票据打印机编程手册指令对成品进行测试检测,对打印命令需要深入理解,才能更好掌握它的原理和使用。
一、票据打印编程手册
相关打印机的打印指令/编程手册可以在网络上找到茫茫多的资源。
像类似LF ESC开头的,并不是代表字符串,他们都是ASCII码表里排名靠前的控制字符,通过套接字传送的数据是流,而流的本质是一个个的字节,所以这些命令中,一个符号代表一个字节,而字节的值在每条命令的详解里面有参考值。
可以对照ASCII码表对照,比如LF在第10位,十六进制是0x0A,是换行键的意思;ESC在27位,十六进制0x1B,是换码(溢出)的意思。
比如ESC ! 选择打印模式;ESC和!都是ASCII码的值。
ASCII码 ESC ! n
十六进制码 1B 21 n
十进制码 27 33 n
主要变化是n,n是一个数字,在0-255之间取得变化,它这里有8个位(刚好一个字节)可以设置,每个位的1/0代表开关的开启和关闭,比如要设置加粗,那么n的第三位应该是1也就是2^3=8,十六进制是0x08,所以整个命令下来就是0x1B,0x21,0x08。
知道了原理,可以把整个编程手册的指令融会理解。
把指令发送给打印机,打印机通过socket来提供服务,可以直接用socket发送指令。(相关socket网络编程会在另外文章更新)
通过socket的流来发送指令,所以只能把字符串转换为字节流,再传送给打印机。不同字符,比如中文,在转换字节流的时候需要设置不同的编码。
以上的命令格式在小票热敏打印机一般是通用的,不同的是提供打印服务的方式,有的通过网络来提供套接字服务,有些通过COM串口来提供服务,不同的服务都可以转化为流来处理,所以本质上是差不多的。
除此之外,企业可根据自身需求设计windows动态链接库测试界面,可以在打印机连接USB后直接通过电脑操作打印测试,高效便捷。
以下整理打印机常用的ASCII码对照
0X04:EOT:传输结束
0x05:ENQ:请求
0x09:HT:水平制表符
0x0A:LF:换行键
0x10:DLE:数据链路转义
0x11-14:DC1-4:设备控制1-4
0x1B:ESC:换码(溢出);在打印机中以该字符为起始的指令将立即响应,即使在错误状态也实时回应。
0x1C:FS:文件分隔符
0x1D:GS:分组符
0x1E:RS:记录分隔符
0x20:SP :空格
0x7E:~:起始的指令用于查询打印机状态
在网上看到有相关的C#打印机ESC指令,可以用作学习借鉴。
https://www.cnblogs.com/rinack/p/5227133.html
二、标签打印编程手册
原理上与上文大致相同,不同的是打印方式和指令不同,可以相互学习理解。
一个标签通常包含三个部分,即系统设定(蓝)、打印内容设定(绿)和执行打印指令(红)。
系统设定:包括标签尺寸SIZE、GAP和清除缓存区数据指令CLS等。
打印内容设定:打印文本或设计指令内容。
执行打印指令:用于打印设计好的标签,此指令发送后才执行打印动作。
每一条指令结尾都 需要加入换行符,即字符串“
”或16进制0x0D 0x0A
举例说明:PRINT指令:用于打印出存储影像缓冲区内的数据
其他不同的指令有不同的参数,实际需要参考编程手册具体更改x,y,height,rotation(条码旋转角度),narrow/wide(窄宽比),code type等等。
转:https://blog.csdn.net/zxh1592000/article/details/78840372
https://gitee.com/smslit/EmbeddedPrinter
https://www.docin.com/p-1913052817.html