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

转载于:https://www.cnblogs.com/micro-chen/p/6015766.html

基于 USB 传输的针式打印机驱动程序开发相关推荐

  1. usb 系统消息_别让 USB 传输速度影响 Android 开发效率

    概览 迭代速度是构建高质量 Android 应用的关键要素.处理的速度越快,应用程序的体验就越顺畅.这篇文章将和大家聊聊如何优化部署时间. 部署 101 在 Android Studio 3.5 中, ...

  2. 基于DM6467的TVP7002 Linux驱动程序开发

    在Linux中,使用V4L2框架管理所有的视频编解码设备.针对我们开发板的V4L2框架结构已经在之前的TVP5150驱动程序编写和OV5642驱动程序编写的说明文档中进行了详细的分析,所以这里不再对整 ...

  3. 基于USB总线的无线网卡驱动程序

    一.USB设备驱动程序的构成 1.设备的探测,用于检查传递给探测函数的设备信息,确认驱动程序是否适合该设备. 2.数据的发送和接收,负责主机到设备的发送和设备到主机的数据接收. 3.设备断开,当设备断 ...

  4. 嵌入式系统USB CDROM虚拟光驱驱动程序开发

    带U盘功能的的USB接口设备已经越来越常见了.如果能够把产品说明书或者产品设备驱动程序做成一个USB CDROM,那该多方便.       假设:         你已经有了USB mass stor ...

  5. 服务器2008系统usb驱动,用于增加 Windows 7 和 Windows Server 2008 R2 中最大 USB 传输大小的驱动程序更新...

    修补程序信息 Microsoft 提供了一个受支持的修补程序.但此修补程序只用于更正本文中描述的问题.仅将此修补程序应用于出现文本中所描述问题的系统.此修补程序可能还会接受进一步的测试.因此,如果这个 ...

  6. linux usbnet网络驱动,[技术资料]基于usb设备的linux网络驱动程序开发

    1 引言 做为开放源代码 (open source) 运动重要组成部分,linux操作系统吸引了数以万计的程序员共同开发.由于linux比较完整的继承了各种unix版本的稳定和高效,并且克服和改进了传 ...

  7. Linux USB 驱动开发实例(七)—— 基于USB 总线的无线网卡浅析

    回顾一下USB的相关知识 USB(Universal Serial Bus)总线又叫通用串行外部总线, 它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量的 ...

  8. windows xp 驱动开发(十八) USB驱动程序开发用到的工具总结

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎拍砖! 观察USB设备的工具. 通过这些工具可以方便学习USB协议 一.   usbview 请参考我的 ...

  9. Linux USB 驱动开发实例 (三)—— 基于USB总线的无线网卡浅析

    回顾一下USB的相关知识   USB(Universal Serial Bus)总线又叫通用串行外部总线,它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量 ...

  10. linux 开发板传文件,Linux下用USB传输文件到开发板

    记录一下解决EZ6410的板子在Linux下用USB来传输文件问题的过程~ 前两天ARM11的开发板到了,需要先验证一下各项功能.以往用FS2410时用的是minicom+usb2ram,功能比win ...

最新文章

  1. 消防荷载楼板按弹性还是塑性计算_现浇楼板裂缝处理办法全总结!
  2. boost::range_category和boost::iterator_category相关的测试程序
  3. 【贪心】逃跑(jzoj 1748)
  4. Django之静态文件配置
  5. 《团队激励与沟通》第 5 讲——沟通的技巧 重点部分总结
  6. 辨析ADKJVMJREJDKADT
  7. 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
  8. 不使用额外空间交换2个数据的源代码
  9. python自动qq群发_用Python自动办公,做职场高手
  10. Windows 7无线路由器解决
  11. gogs: 如何恢复repository
  12. 好用的Java开发IDEA插件汇总推荐
  13. R语言文本挖掘展示:画词云图
  14. Centos7 查看 CPU 核数 和 型号 和 主频(亲测有效)
  15. 输入一个数求他的因数c语言,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  16. mysql积累--面试题
  17. 订餐系统之同步美团商家订单
  18. serverAdd.sin_addr.s_addr
  19. echarts 堆叠柱状图label显示总和
  20. 目前约五分之一日常关护是在医院外进行,未来三年这一比例将进一步提高

热门文章

  1. mysql数据库多表查询出来多条重复数据--处理方法--distinct
  2. 2021年华为杯数学建模竞赛E题——信号干扰下的超宽带(UWB)精确定位问题
  3. 阿里云运行python_阿里云运行python代码
  4. 服务器虚拟化底层实现原理,虚拟化原理
  5. 详解Android定位,AndroidGPS定位详解(1)
  6. java车牌识别字符分割_车牌识别之字符分割
  7. 面试要求 熟悉linux系统,Linux面试中最常问的10个问题总结
  8. amesim2020安装
  9. 代码走查-放过疑点就是埋雷
  10. 快手sig签名和did egid的注册(操作太快了,请稍微休息一下)