打印机编程手册命令原理解析

来源:互联网 发布:编程来回打括号好烦 编辑:程序博客网 时间:2024/06/11 19:38

最近在公司使用打印机编程手册指令对成品进行测试检测,对打印命令需要深入理解,才能更好掌握它的原理和使用。
相关打印机的打印指令/编程手册可以在网络上找到茫茫多的资源。

这里写图片描述
像类似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 :空格


在网上看到有相关的C#打印机ESC指令,可以用作学习借鉴。
https://www.cnblogs.com/rinack/p/5227133.html

原创粉丝点击