• 基于 USB 传输的针式打印机驱动程序开发


    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
    文件的设计方法。

  • 相关阅读:
    hdu 5036 概率+bitset
    hdu 5037 周期优化
    hdu 5038 求出现次数最多的grade
    hdu 5040 bfs
    hdu 5045 N个人做M道题的正确率
    hdu 5046 二分+DLX模板
    hdu 5047 大数找规律
    c:set注意事项
    It is indirectly referenced from required .class files(导入项目报错原因与解决方法)
    oracle-01722,函数subtr,instr
  • 原文地址:https://www.cnblogs.com/micro-chen/p/6015766.html
Copyright © 2020-2023  润新知