- 论坛徽章:
- 0
|
1、Linux下的打印方案
基于PC的Linux已经有了多种相当完善的打印方案,不仅可以在多种系列的普通喷墨或激光打印机上输出照片质量的彩色和黑白图像,而且支持多打印任务处理和多打印机控制。图1是广泛使用的基于PC Linux的打印方案的一个例子,在这个方案中,CUPS(Common UNIX Printing System)[4]是其核心,多任务管理由CUPS中的“打印管理”模块担任,打印格式转换则由其滤波器(Filter)[5]系统完成。CUPS将 Linux传送过来的各种格式的文档通过适当的滤波器转换成PS (PostScript)语言 [6]代码,这一代码可以通过Backend直接输出至支持PS
图1 Linux下的打印方案
语言的打印机,也可以再通过调用GhostScript程序转换成非PS语言打印机所使用的各种页面描述语言(Page Description Language, PDL)[7], 然后经Backend输出。特别要注意的是除了这两种Filters,CUPS还具有不经过GhostScript程序而将图像文件(image)直接转换成非PS打印语言的Filter。由于历史的原因,基于Linux的几乎所有打印方案都支持PS语言,PS打印机接收到这种文件后,利用其内嵌的光栅图像处理器RIP(Raster Image Processor)[8]将PS描述转换成指令驱动打印机工作。由于版权费的问题,近年来支持非PS语言的打印机大量出现,而且渐渐成为普通喷墨和激光打印机的主流。这些非PS语言有HP公司的PCL(Print Control Language)[9],Epson公司的ESC/P[10]等。GhostScript[6]是一种软件RIP,用于将PS文件转换成非PS设备支持的PDL格式。Foomatic是用户统一界面,用户通过它来配置打印机参数与驱动,只需选择打印机型号而无需关心配置的具体过程。
这是一个完备的方案,功能强大,操作简便,支持的打印机丰富,完全满足B超图像输出的要求。但由于嵌入式平台资源有限,难以支持这样一个完备的系统,所以我们根据需要对其进行适当剪裁。
2、基于嵌入式Linux的小型B超仪的打印方案和实现
本文所关心的小型B超仪的硬件平台是一个32位的嵌入式微处理器,操作系统采用嵌入式Linux, 在这个平台上要完成的工作有超声图像的传送,显示,打印,人机界面,整机控制,还有非易失性存贮,如CF卡(Compact Flash Card)、SD卡(Secure Digital Memory Card) 存贮等。如图2所示,打印控制只是其中的一个功能。打印机输出的对象是256×256像素,256灰度级的黑白图像。为了重现这些灰度级,图像的每个像素 (pixel)需要由16×16个墨点(dot)来表达,因此输出图像的横向和纵向的墨点数将是256×16=4096dots。如果输出图像的尺寸为 10cm×10cm(3.94”×3.94”),可以算出打印机的分辨率需要达到4096/3.94=1040dpi(dots per inch)。为此,我们选用分辨率为1200dpi的HP DeskJet和1440dpi Epson Photo系列喷墨打印机,这两个系列的打印机使用USB接口,分别支持PCL语言和ESC/P语言。它们性能优良,都可以输出照片质量的图像, 而且便宜实用,有A4幅面的便携式型号可供选用,非常适合小型B超。
图2 基于嵌入式Linux的小型B超仪控制系统
从图1可知,利用CUPS把图像文件转换成所选用打印机支持的页面描述语言有三条转换路径,一条是通过ImagetoPS, PStoRaster和RastertoHP(或RastertoEpson)三个过滤器;第二条是通过ImagetoRaster和 RastertoHP(或RastertoEpson)两个过滤器;第三条是先通过Imagetops过滤器把图像文件转换成PS文件,然后再调用 GhostScript程序把PS文件转换成PCL或ESC/P文件。在这三条路径中,第一条和第三条都先把图像文件转换成PS格式,然后再作进一步的变换,体现了Linux的传统要求,但是第一条路径用到了三个过滤器,第三条路径需要调用一个庞大的GhostScript程序。相比之下第二条路径最为简捷而节省资源,所以本文选用这一条路径,Backend过滤器选用USB以配合所选打印机的接口。图1中的虚线表示了本文选用的实现路径,而其中的灰色框代表了为本系统用到的过滤器。
由于B超的打印任务单一,通常并没有多任务的要求,而且也不可能需要多台打印机同时工作,所以本文中舍弃了Foomatic和CUPS中的管理模块,将打印管理纳入整机控制中。整机控制的人机界面采用MiniGUI[11],打印控制属于其中的一个功能控件,用来进行打印机和输出文件选择以及启停控制。其程序流程图如图3所示:
图3 本系统程序流程
经过裁减,在编译代码的过程中译出CUPS过滤器系统中的ImagetoRaster、RastertoHP和RastertoEpson以及 Backend中的USB传输的可执行代码。在编译的过程可以发现,将整个CUPS,GhostScript和Foomatic源代码编译完成后,需占用的空间有30M之多,而按照本文的方案经裁减编译后,可执行代码总共占用不到600k字节,这就大大地节省了系统的开支。编译后的代码移植到本文所使用的控制器平台后程序运行正常,我们试验了HP DeskJet 450、Epson Stylus Photo RX510等型号的打印机,图像打印效果良好。不仅可以打印本文的B超系统采集的B超图像,而且可以打印载入到本系统中的许多格式的图像,如bmp、 jpeg、png格式等。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43090/showart_1995860.html |
|