码迷,mamicode.com
首页 > 其他好文 > 详细

(四)揭开打印机驱动的神秘面纱

时间:2014-11-06 12:37:28      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   os   使用   sp   文件   

    上一篇我们得到了通过打印驱动生成的十六进制文件TestDriver如图4.1,接下来我就来过跟各位看官具体分析一下这些十六进制数的含义。要了解这些十六进制数据,有一个东东是必备的,就是ESC/POS指令集,网上有下载的。现在国内绝大部分的热敏打印都是用的ESC/POS指令,我们前面装的驱动就是按照ESC/POS指令做的,用的打也是按照ESC/POS指令做的。打印机要和计算机要能进行对话,就得使用共同的语言,这种语言就是ESC/POS。驱动就是将计算机要表达的内容,“翻译”成ESC/POS指令,再告诉打印机,打印机就开始打印了。

bubuko.com,布布扣图4.1

     我们可以看到,第一行的数据1B40,这个是十六进制数,也就是0x1B,0x40,我们再打开ESC/POS指令集,查找到1B40这条指令如图4.2,bubuko.com,布布扣
                                                图4.2

可以看到这条指令十六进为制1B 40,十进制为 27 64,十六进制的0x1B也就是十进制的27,十六进制的40也就是十进制的64.这条指令作用为初始化打印机。指令下面描述了指令的具体解释,主要是清除打印缓冲区数据和NV位图数据。

      再看下一条,1B4A30,打开ESC/POS指令集,如图4.3

bubuko.com,布布扣

如图4.3

可以看到这条命令的作用是打印并走纸,这条命令还带有一个参数n,现在命令为1B4A30,n就为十六进制0x30也就是十进制48,所以按照指令描述,走纸的距离为 n x 纵向或横向移动单位,这个纵向或横向移动单位,是可以设置的,一般打印机默认为1个点也就是0.125mm,所以走纸距离为48 x 0.125mm = 6mm。

     接下来一条为1D76300030018....这条指令比较复杂,查看指令如图4.4

bubuko.com,布布扣

bubuko.com,布布扣

    可以看到这条指令是用来打印光栅位图的,参数比较多,我们一一来对应,对照我们的数据1D763000300018...后,得到m=00,xL=0x30,xH=0x00,yL=0x18,yH=0x00,k=1152,这个指令就是驱动翻译的主要部分,是将图像和文字按照这个指令规定的方式,转换为点阵,传给打印机,打印机接收到这些点阵后,将图形和文字打印出来。

    从上面的分析可以看出驱动其实没干什么神奇的事,只是将要打印的内容,转换为数据点阵,再发给打印机,再打印出来,这些数据点阵的格式都是按照ESC/POS指令,所以说打印机开发中最重要的就是了解ESC/POS指令集,后面我会逐步介绍ESC/POS指令。

(四)揭开打印机驱动的神秘面纱

标签:style   blog   http   color   ar   os   使用   sp   文件   

原文地址:http://www.cnblogs.com/MrDing/p/4078198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!