摘要
打印机的技术已经发展了很多年,技术成熟稳定。但是随着嵌入式技术与移动互联网技术的发展,更多智能终端需求打印机技术的加持。传统的热敏打印只能满足支付零售领域应用,新技术需求的打印是满足蓝牙、wifi、有线、USB等数据量大打印灵活的场景。打印机驱动更多的在windows系统下的支持较好,在移动终端领域的嵌入式产品支持种类少,打印设置不灵活。
关键词 嵌入式驱动;打印机驱动应用
1.前言
在Windows、Linux环境中安装打印机,通常是cups, ghostscript等,但体积通常很大,几十上百兆安装在应用的环境中,有时候编译出来的驱动要求打印模块不大于5M,通常的方案有两种一种是将cups的一部分提取出来。另外一种是基于Linux 发行版安装开源打印机驱动程序包,例如可以直接 sudo apt install hplip。本文以嵌入式 Linux 和发行版 Linux Ubuntu18.0
4 两种系统来介绍移植打印机驱动, 并对比两种系统的优缺点。本文采用 ghostscript + hplip(惠普驱动),这种方案进行具体说明。
2.Linux打印机环境搭建及原理
2.1打印机关键技术
1)PostScript
PostScript(PS)是主要用于电子产业和桌面出版领域的一种页面描述语言和编程语言。
PostScript是一种图灵完全的编程语言,通常PostScript程序不是人为生成的,而是由其他程序生成的。然而仍然可以使用手工编制的PostScript程序生成图形或者进行计算。
2)ghostscript
Ghostscript是PostScript ® 语言和PDF文件的解释器。Ghostscript由PostScript解释器层和图形库组成。它是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的自由软件。计算机打印机使用的光栅图像处理器(RIP)。
3)cups
CUPS 是 OpenPrinting 为 Linux® 和其他类 UNIX® 操作系统开发的基于标准的、开源的打印系统。打印工作步骤要解决一些相关问题,了解 CUPS 的工作原理很重要:当选择“打印”时,应用程序会发送一个 PDF 文件(若应用程序发送的是其他格式则先转换为 PDF)给CUPS。
4)spooler打印机安装程序
打印后台处理程序是管理打印过程的可执行文件。打印管理包括检索正确打印机驱动程序的位置、加载该驱动程序、将高级函数调用假脱机到打印作业中、安排打印作业进行打印等等。 后台处理程序在cups系统启动时加载,并继续运行,直到cups关闭。
后台处理程序系统的主要目的是将数据从发件人移动到收件人;接受数据(仅来自授权发件人);缓冲数据(直到收件人准备好接受它们);将数据发送给授权收件人(在实施合适的过滤器后,如果需要);提供有关数据状态的信息(例如,对于"lpstat-wcompleted-o")。
2.2打印流程图
各种类型的文档经由一个(或一些) 转换程序转换成打印机可以认识的格式, 即用各种类型的打印机语言描述的流, 系统将这个流直接发送到打印机端口, 由打印机对其进行解释和打印。
2.3 Linux 文档到打印机语言的转换
普通文本文件和各种类型的图形由适当的转换程序转换成 PostScript 文件, 有些应用程序可以直接将其输出写成 PostScript 文件,这些 PostScript 文件经由一个作为打印机过滤器的应用程序 Ghostscript 转换成打印机语言。
2.4开发板介绍
OKT507-C开发板提供了Linux、Android和Forlinx Desktop三种系统。基于全志T507四核车规级处理器设计开发,Cortex-A53架构,主频1.5GHz,集成G31 GPU,内存2GB DDR3L,存储8GB eMMC。 OKT507-C开发板将核心板的功能接口资源丰富、 提供多种外设接口。
2.5打印机环境搭建
开发板: 全志 OKT507-C
打印机: 惠普 P1008
虚拟机: Ubuntu18.04
1) 首先到内核 menuconfig中支持上USB 打印,如下路径:
make menuconfig ARCH=arm64➞Device Drivers➞USB Support➞USB Printer support
2) 重新编译烧写镜像后, 将打印机与开发板通过 USB 连接, 然后打开打印机的电源就会在开发板上看到/dev/usb/lp0 设备节点。
3.移植打印机驱动及打印机驱动测试
3.1嵌入式Linux驱动移植
1)Ghostsript
Ghostscript是一套 Adobe系统的 PostScript及PDF页面描述语言的解释器,是一款免费软件。Ghostscript 可打开 Postscript 或 PDF 格式文件, 并可将其转换成其他格式。Gs多用于将 Postscript或PDF格式文件转换成为打印机语言文件。 所以我们需要移植这个工具。具体移植细节就不在这里演示了,过程非常的多, 阐述大致过程是: ①下载源码、②解压
源码、③配置makefile用的交叉编译器、 ④交叉编译出ARM 版移植到开发板。
2) hplip
从上一节的对 Ghostscript 工具的介绍可知, 它是用于转换文档格式到打印机能识别的格式的工具。而 hplip 就是基于 HP 喷墨系列打印驱动。Ghostcript 可通过 hplip 将文件转换成惠普打印机支持的打印机语言。本文就是基于这个原理来进行打印的。 我们使用的惠普P1008打印机就在这个驱动支持的范围内。
3)测试
移植完后进行打印测试,还是会报一些缺库的问题,如下:使用 hp-check 查看缺少一些库。 其中比较重要的是 python-qt4 和 python dbus。从新移植python库编译,报错便会消失。
3.2发行版Forlinx Desktop驱动移植及测试
通过 apt-get 命令安装 hplip 驱动,如下: apt-get install hplip
发现在安装的过程中,自动安装了很多依赖库,比如前面我们讲到的 Ghostscript 工具,还有 CUPS(通用打印系统)等。 通过 apt-get 去安装 hplip 驱动,不会再报缺库的错误,也不用在像前面嵌入式 Linux 系统一样交叉编译移植 Ghostscript 工具了,节省了去查缺库报错问题的时间,很大的提升了效率。
3.3结论
从上述可以对比两种系统移植打印机驱动的差距, 嵌入式Linux系统每次移植前都要去先去下载相应的源码包,然后再去交叉编译移植,移植过程中也会出现很多报错,工作量相对比较大,也比较繁琐,但是移植的驱动包相对较小轻便,相对于性能低,空间小的CPU比较合适。
而Linux发行版Forlinx Desktop18.04 仅通过一条系统特有的命令即可完成打印机驱动的所有工作,apt-get 命令,适用于deb包管理式的操作系统(例如 Ubuntu 系统),主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件。
参考文献
[1]江俊辉.基于ARM的嵌入式系统硬件设计[J].微计算机信息,2005,10:120-122.
[2]张占昭.ARM平台下Linux嵌入式系统移植的研究[J].山东工业技术,2018(02):113.
发布评论