1
.引言针式打印机曾经在相当长的一段时间占据打印机市场的主导地位,但是近年来由于喷墨、激光等非击打式打印机的冲击,针式打印机的市场份额逐年下降。即便如此,由于针式打印机在票据打印领域的不可取代性,同时鉴于当前国内打印机市场一直被国外品牌充斥的现状,我们设计并开发了这款基于USB传输的针式打印机。一个完整的USB针式打印机系统包括打印机软件和打印机硬件两部分,其中打印机软件负责打印任务的创建,而打印机硬件负责打印任务的执行。如果仔细划分,打印机软件又分为运行于主机系统的应用程序、打印机驱动程序和端口驱动程序,以及运行于打印机的打印机固件程序、打印机命令解析程序和打印机控制程序,打印机命令解析程序和打印机控制程序接受打印机主控程序的调度。打印机硬件也可分为电路组成和执行机构两部分。2
.针式打印机系统设计一个打印任务的完成必须要经过任务创建和任务执行两个步骤。在Windows操作系统下,打印任务起始于应用程序,如图1。当用户使用应用程序的打印功能后,应用程序将用户的打印任务提交给打印机驱动程序,打印机驱动程序将该任务解析为一些字符数据,包括打印机控制命令数据和打印图形数据。这些数据通过端口驱动程序发送到打印机。当打印机接收到打印数据后,首先解析这些数据为打印机的实际执行指令,然后由控制程序操作执行机构将位图信息打印到媒介上。整个打印数据的传输都建立在主机与打印机正常通信的基础上,这项工作由打印机固件程序完成。了解了打印机系统的工作流程和系统内各个组件的作用,我们来对系统各个组件进行设计。 (1) Windows打印机驱动程序设计开发打印机驱动程序通常有两种途径:一是开发一个完整的驱动程序,二是利用微软提供的通用打印机驱动程序( Unidrv ) 开发小型驱动程序( Minidriver ) 。开发一个完整的驱动程序工作量大且过程复杂,因此我们采用通用打印机驱动程序+小型驱动程序来开发打印机驱动程序。(2)
打印机固件程序设计在USB协议中,不同的设备类具有着不同描述符和设备请求,USB打印机作为一种特殊的USB设备也有其特殊性,必须严格按照协议规定进行设计。在本文中,我们使用集成USB
通信口的At91sam7s32芯片完成打印机固件程序开发。 (3) 打印机主控程序设计打印机主控程序由打印机解析程序模块和打印机控制程序模块组成。解析模块通常使用顺序解析法解析数据,但是这种方法结构死板,解析效率低,为此本文提出了一种基于表格的解析法;对打印机执行机构进行控制是整个打印机系统的核心。一般采用的方法是使用单片机作为系统控制器,但是控制打印机需要同时控制两个步进电机和24个打印针头,对单片机处理速度要求较高,同时还要使用大量的单片机接口资源,一般单片机都无法满足要求,为此我们提出了一种单片机+CPLD的打印机控制方法,有效的解决了这个问题。单片机使用上面提到的At91sam7s32,CPLD使用Altera生产的EPM1270芯片,该芯片具有1270个逻辑单元和212个用户引脚,满足打印机控制的速度要求和接口数量要求。Windows
打印体系结构由打印假脱机系统(SPOOL)和一系列的打印机驱动程序(DRIVER)组成。 SPOOL是Windows打印系统的核心,它有一个关键的作用就是对打印任务进行路由,将打印任务传递到正确的打印机驱动程序进行处理。打印驱动程序由打印图形动态链接库和打印接口动态链接库组成,打印图形动态链接库负责将打印任务解析为打印
3.1
小型驱动程序的开发小型驱动程序是建立在通用驱动程序( Unidrv )基础之上的。通用驱动程序由打印图形动态链接库UNIDRV.DLL、打印接口动态链接库UNIDRVUI.DLL以及一些文本文件和二进制结构文件组成,这些文本文件和二进制文件文件构成了我们的小驱动程序。小型驱动程序的文本文件称为GPD(General Printer Description)文件,一个小型驱动程序可以由一个或多个GPD文件构成。小型驱动程序的二进制文件包括GTT(Glyph Translation Table)文件和UFM(Unidrv Font Metric)文件,GTT文件用来描述打印机所能支持的字体,UFM文件用来描述字体的尺寸大小。由于GTT文件和UFM文件不是小型驱动程序所必须的文件,所以这里只介绍GPD文件的设计方法。