一种打印控制系统的设计
PS文档直接发给打印机打樱
接下来,我们根据图2所示框图,介绍一下打印控制系统中的几个主要问题:
(1)格式转化程序Netpbm:
一组转换图形格式的程序集,可以将png和jpg等格式的图像经中间格式PNM,最终转换成通用的PostScript格式。其中包括了pngtopnm,pnmtops等一系列独立的小程序,将它们搭配使用,可以对图像进行诸如缩放,旋转等各种处理。
(2) GhostScript程序:
对于支持PostScript的打印机而言,要在Linux下使用是比较容易的,但对于那些不支持PostScript的打印机而言,就必须要把PostScript格式转换成打印机能够识别的命令格式,而GhostScript就是用来完成这个工作的。Ghostscript是PostScript打印机模拟程序,通过软件模拟PostScript打印机,它的具体工作是将PostScript页面描述语言,转译成各种打印机专用的低阶打印指令,并发送给打印机执行。因此,Ghostscript需要知道各种打印机的指令语言,这就是的打印机驱动程序。
(3)打印机驱动程序:
打印机驱动程序是应用软件与打印机之间交流的桥梁,它可以将转化好的打印文件,按照各种打印机不同的格式发送给打印机,因此不同的打印机都有自己特有的打印驱动程序。另外,随驱动程序一起发布的还有PPD文档,PPD(PostScript Printer Description)是用来描述打印机功能的文件,里面包含了字体,打印页面等的一些描述。
(4)打印管理程序:
作为一个多用户多任务的操作系统,Linux上的所有程序都是基于多任务、多用户而设计的,打印也不例外。为了让不同的用户、不同的任务在打印的时候不会产生冲突,就需要一个打印管理程序,我们通常称其为spooler。这类管理程序很多,从传统的LPD,到时下非常流行的CUPS,它们功能各异,但有一点不变的就是都是用来协调打印任务的。CUPS的工作方式如下:通过命令行接收要打印的文件;通过文件的类型判断是否需要将其转换为PostScript,如果需要,则调用相应的应用程序进行转换;通过PPD文件来判断GhostScript应使用何种驱动处理此PostScript文件;把GhostScript处理的结果输出到打印设备上。
(5)用户统一界面Foomatic:
由于打印领域标准问题长时间不统一,诞生了各种打印管理程序,而要学会为每一个打印管理程序安装驱动程序,是一件非常复杂的事情;如果用户需要更换打印机,也必须更改复杂的设置。为了改善这种状况,就出现了Foomatic应用程序,它的作用是通过一种方式管理所有的打印机,把PPD文档和打印管理程序的配置屏蔽掉,给用户一个友好的统一的界面。
在嵌入式系统设计中,因为其系统资源有限,合理分配资源和保证处理速度是我们首先要考虑的问题。一台不支持PostScript格式的打印机工作时会占用大量的CPU处理时间和内存空间,只是在PC上工作时,由于CPU处理速度快,内存空间大,所以用户感觉不到罢了。基于以上考虑,本文所设计的嵌入式打印系统,在保留上述打印机系统结构的情况下,以简单的shell脚本程序代替CUPS等庞大的打印管理程序,以自行开发的图形用户界面代替Foomatic应用程序。另外,由于惠普公司的打印机驱动程序具有良好的通用性和可移植性,因此我们选择HP Deskjet系列喷墨打印机,同时使用这一系列的通用驱动程序hpijs(含多种打印机型号的PPD文档),源代码由惠普公司官方网站提供。
3.3软件设计中的关键问题:
(1)交叉编译:
IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。嵌入式项目的开发中,有一个重要的环节就是构建交叉编译工具链。所有的软件源程序,必须经过这个工具链的编译,链接后才能生成可以在嵌入式系统上运行的代码。在过去,编译一套工具链要花费开发人员不少的时间,但现在在网上很容易就可以下载一套已经做好的工具链。
(2)打印任务管理程序:
没有使用CUPS打印管理程序,是因为它会耗费大量的系统资源,这对于嵌入式系统来说无疑是致命的。但节约资源的同时,我们也要花费时间去设计一个适和于目标系统的程序,来管理打印任务。程序流程图如下所示:
3.4 用户图形界面设计
Foomatic应用程序本身并不大,但它是一个Perl脚本程序,所以如果要使用它,我们还得额外移植一套庞大的Perl脚本解释器,这对系统会有十几兆的开销。因此,我们选择用Qt/Embedded工具包开发了一套简单的用户界面。其主要功能是让用户可以看到存储设备(flash存储器或外接usb存储设备)上的文件,以便选择打印,其中jpg和png格式的图像还可以显示出来,供用户做简单编辑后再打印;另外,可以让用户看
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)