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

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

图4.1

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

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

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

如图4.3

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

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

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

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

时间: 2024-10-12 22:05:45

(四)揭开打印机驱动的神秘面纱的相关文章

揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍

揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC媒体服务器和相关的开源项目(如kurento,janus,jitsi.org等)做一些介绍.并且将尝试降低理解WebRTC的业务价值所需要的技术门槛. 何为WebRTC服务器? 自从WebRTC诞生之初以来,该技术的主要卖点之一是它可以进行点对点(browser-to-browser)通信,而几乎不需要服务

黑客是什么?揭开郭盛华的神秘面纱,讲解他不为人知传奇故事

今天小编给大家揭开白帽黑客.知名网络安全专家.东方联盟创始人郭盛华的神秘面纱和他不为人知的传奇故事.他不但电脑技术高超,还很爱国.直到今天,郭盛华品格的形成仍具有强大的影响力. 那么黑客到底是指什么?黑客技术.编写计算机代码的艺术和操纵计算机硬件一直是男人们在这个领域中的最高位置,这就是为什么许多年轻人向往的职业. 作为一个出身卑微的人,郭盛华没有任何贵族社会的条件.他唯一可以倚仗的只是自己出类拔萃的扭转不利局面的才华,这是一个网络专家和企业家必备的素质.正是关键时的一次心灵燃烧使他赢得了别人包

(四)揭开数据分析方案的神秘面纱——一案在手,成竹在胸

一.研方案的作用 研究方案可用来指导我们的数据采集和分析工作,一案在手,成竹在胸. 二.如何才能写一份优秀的研究方案 一个假设 不要把撰写研究方案当成写计划书,而是要作为讲演稿来准备. 两个要求 理论要上天. 经验要入地. 三个问题 客户需要什么信息? 客户为什么需要这样的信息? 客户用这些信息做什么? 四个想像 想像自己是行业专家. 想像自己亲自执行操作. 想像自己撰写报告. 想像自己使用报告结果. 这四个想象会让自己从研究方案的落实上看到自己所设计的研究方案是否存在问题.这四个想象会让自己从

揭开观察者设计模式的神秘面纱,手把手教你写监听器

我们在写代码的时候,遇到最常用的就是监听器了.那么实际中,我们也要进行事件的监听.而有些事件是业务逻辑需要实现的,跟随事物变化动态变化的.假如说我们要实现一个事件,有位置的监听,有颜色的监听,有坐标的监听,有速度的监听,那么这么多监听的事件.那么我们就需要这么多个监听器.这些监听器如何被管理呢.我们可以创造一个类似管理员身份的神秘角色,这个角色就是一个监听器池说一个监听器池,可以移除和增加监听器.当我们触发某一事件的时候,需要这些监听器全部执行监听. 现在我们来模拟一下按钮Button的实现.

微软“小冰”网络机器人揭开了人工智能的神秘面纱

对国人而言,人工智能是很神秘的东西.现在,微软利用多年积累的相关技术,从人脑思维活动中提取"纯粹智能",然后再赋予网络机器人"小冰",使其在互联网上"撒欢儿",热闹非凡.为什么? 大家知道,在微软"必应"搜索中,有一项"网典"选项,类似维基网站,积累了一个庞大的知识库.说实话,这个知识库是7亿中国网民的真实智慧的结晶,不属于任何个人.问题是,对于这个巨大无比的知识库,怎么"提纯"处理(大

揭开消息中间件RabbitMQ的神秘面纱

当你看到这篇博文的时候,相信你至少已经知道RabbitMQ 是一个非常优秀的消息中间件,它使用专门处理高并发的Erlang 语言编写而成的消息中间件产品. 本文我们将重点学习消息队列,消息中间件的概念,以及如何在Windows 上安装RabbitMQ并使用它发送一个消息 为了更好地学习RabbitMQ还是先来看看一些专业平台是如何解释它的吧. 1. 关于RabbitMQ的解释 RabbitMQ是部署最广泛的开源消息代理. RabbitMQ在全球范围内在小型初创公司和大型企业进行了超过35,000

揭开Java 泛型类型擦除神秘面纱

泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉. 文章开始的地方,先给大家奉上一道经典的测试题. List<String> l1 = new ArrayList<String>();List<Integer> l2 = new ArrayL

通过汇编揭开String中数据结构神秘面纱

String(字符串),是编程语言中表示文本的数据类型.接触编程的你一定每天都会见到.那看似渺小的string(字符串),里面到底还隐藏着多少的秘密?大家平时天天使用的东西,你真的了解它吗?可能平时很多人并不会深入研究它,如果你的能力还不错,不妨看看下面几个问题.要是对他们还存在困惑,那恭喜你,你找到了你要提升的方向.一.思考 在 Swift 开发使用字符串的过程中,你是否有思考过以下问题? 1 个字符串变量占用多少内存? 字符串 str1.str2 的底层存储有什么不同? 如果对 str1.s

揭开Service Mesh的神秘面纱

一.什么是Service Mesh? 下面是 Willian Morgan 对 Service Mesh 的解释: A Service Mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of service