首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于嵌入式Linux的B超图像打印的实现 02

基于嵌入式Linux的B超图像打印的实现 02

为了重现这些灰度级,图像的每个像素(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超。
从图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格式等。
       3、讨论
       本文详细地分析了典型的基于PC的Linux下的完备打印方案,并针对本文的具体应用,对其进行适当裁减,实现了嵌入式 Linux下的B超图像的图像打印,有效地解决了小型B超仪使用视频打印机的高成本耗费问题。同时,该方案不仅仅适用于超声设备中,也适合应用于各种基于嵌入式Linux的移动设备。
       本文作者创新点:目前多数小型B超基于8位微处理器,限于其有限的处理能力,使得控制系统不够灵活,超声图像的打印输出也只能通过视频打印机。
返回列表