一、开发环境

硬件环境:am3354

打印机型号:hp1020plus

虚假机系统:Ubuntu12.04

交叉编译工具版本:arm-linux-gcc version 4.5.1

二、详细步骤

1、linux内核环境配置

(a)修改drivers/usb/Kconfig中将#source “drivers/usb/class/Kconfig”前的#去掉

(b)静态配置linux内核打开支持USB打印机

在linux内核根目录执行#make menuconfig得到界面如下所示:

打开支持USB打印机的路径是Device Drivers->USB Support->USB Print support;打开的界面如下图所示:

勾选“USB Print support”保存退出,重新编译内核,然后拷贝新内核放到开发板上。

把打印机的USB接口插到开发板的USB接口上,可发现出现/dev/usb/lp0设备节点。

2、交叉编译foo2zjs工具

(a)下载foo2zjs源码,

源码网址:http://foo2zjs.rkkda.com/foo2zjs.tar.gz

(b)解压源码

tar xvf foo2zjs.tar.gz

(c)分别拷贝为PC版本和ARM版本

cp foo2zjs foo2zjs-arm -rf

mv foo2zjs foo2zjs-x86

(d)编译PC版本

cd foo2zjs-x86

make

(e)编译ARM版本

cd foo2zjs-arm

make CC=arm-linux-gcc

编译完成后在foo2zjs-arm的根目录中可得到getweb可执行文件

运行./getweb可得到如下界面:

可看到支持的打印机型号,我们选择的打印机型号是1020。

执行./getweb 1020 即可下载hp1020plus的驱动文件sihp1020.img

用PC版foo2zjs-x86编译出来的arm2hpdl工具,将sihp1020.img转化为sihp1020.dl

(f)把ARM版本foo2zjs-arm编译出来的foo2zjs和sihp1020.dl拷贝到开发板的/usr/printer/目录下

3、添加交叉编译ghostscript工具

因是嵌入式平台编译生产的可执行程序不宜过大,所有ghostscript工具选择用ghostscript-8.15版本。

(a)下载源代码ghostscript-8.15.tar.gz

(b)解压 tar xvf ghostscript-8.15.tar.gz

(c)分别拷贝为PC版本和ARM版本

cp ghostscript-8.15 ghostscript-8.15-arm -rf

mv ghostscript-8.15 ghostscript-8.15-pc

(d)编译PC版本

cd ghostscript-8.15-pc

./configure

make

(e)编译arm版本

cd ghostscript-8.15-arm

./configure --host=arm-linux --target=arm-linux --prefix=/usr/printer/

prefix 参数决定了arm版本的gs搜索路径, 在目标板上必须和编译的时候一致,因为编译好的应用程序会从prefix指定路径查找配置和依赖的文件

把PC版本的echogs,genarch,genconf拷贝到arm版本中

cp ../ghostscript-8.15-pc/obj/echogs obj/echogs

cp ../ghostscript-8.15-pc/obj/genarch obj/genarch

cp ../ghostscript-8.15-pc/obj/genconf obj/genconf

编译

make XCFLAGS=-DHAVE_SYS_TIME_H=1 CC=arm-linux-gcc

make install

其中XCFLAGS=-DHAVE_SYS_TIME_H=1必须有的,不然会报错。

正常情况下,可以编译通过,可执行文件被安装到/usr/printer中

把/usr/printer目录下的ghostscript全部拷贝到开发板的/usr/printer目录中

在开发板中执行gs,生成pbm文件用于打印(用example中的chess.ps做示范)

cd /usr/printer/ghostscript/bin

./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile=test_1.pbm /usr/print/ghostscript-8.15//share/ghostscript/8.15/examples/chess.ps

第一次执行会出现以下错误

Error: /invalidfont in findfont

Operand stack:le=test_1.pbm /uchess.ps

F1 12 Times-Roman Font Times-Roman 290498 Times-Roman --nostringval-- Times-Roman NimbusRomNo9L-Regu Courier NimbusMonL-Reguint

Execution stack:

%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 3 4 %oparray_pop 4 4 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 7 5 %oparray_pop --nostringval-- --nostringval-- --nostringval-- 1 -1 1 --nostringval-- %for_neg_int_continue

Dictionary stack:

--dict:1118/1686(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:31/70(L)-- --dict:17/17(ro)(G)-- --dict:1118/1686(ro)(G)--

Current allocation mode is local

Last OS error: 2

Current file position is 61042

GPL Ghostscript 8.15: Unrecoverable error, exit code 1

在ubuntu中把/usr/share/fonts/type1/gsfonts/n021003l.pfb文件拷贝到开发板的/usr/printer/ghostscript/share/ghostscript/fonts目录下

再次执行

./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r600x600 -sDEVICE=pbmraw -sOutputFile=test_1.pbm /usr/print/ghostscript-8.15/share/ghostscript/8.15/examples/chess.ps

即可生成pbm文件

4、测试打印文件

准备打印,在开发板终端中发送固件到打印机

cd /usr/printer

这句执行完后打印机有响声

cat sihp1020.dl > /dev/usb/lp0

这句执行完后打印机开始打印

foo2zjs -z1 -p9 -r600x600 test_1.pbm > /dev/usb/lp0

注意一:发送固件到打印机中第一次打印,打印出来的是乱码,之后的打印才是正常的。

注意二:打印文件中的文字打印出来的字体受开发板的字库所影响,分辨率比较低。

java调用打印机打印excel linux_手把手教你嵌入式Linux系统驱动hp1020打印机相关推荐

  1. 在linux下怎么安装mysql,手把手教你在Linux系统下安装MySQL

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1. 下载并安装MySQL官方的 Yum R ...

  2. 正点原子linux驱动教程,正点原子 手把手教你学Linux之驱动开发篇

    简 介 该课程是正点原子手把手教你学Linux系列课程,该课程配套开发板为正点原子alpha/mini Linux开发板. 手把手教你学Linux之驱动开发篇: 第1讲 Linux驱动开发与裸机开发区 ...

  3. 手把手教你破解Linux系统root密码——无需任何工具,有手就行

    [写作说明]:笔者是Linux学习和爱好者,学习或者工作中总是看到有人忘记root密码不知所措,其实不用慌张,Linux下破解root密码非常简单,今天我就手把手教会大家在Linux下破解root密码 ...

  4. 手把手教你在Linux系统下进行Python pip换源操作

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 世间无限丹青手,一片伤心画不成. ...

  5. 在嵌入式Linux系统上安装打印机

    refer from http://blog.csdn.net/ma100/article/details/4243241 1.简介:   在Linux环境中安装打印机,通常是cups, ghosts ...

  6. Java 调用 C++ (Java 调用 dll)康哥手把手教你

    摘要: 本文原创,转载请注明地址 http://www.cnblogs.com/baokang/p/4979243.html 因为要做点图形处理的项目,需要在Java中调用dll库,所以开发的第一步是 ...

  7. 手把手教linux设备驱动,手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板)...

    这个专题我们来说下Linux中的定时器. 在Linux内核中,有这样的一个定时器,叫做内核定时器,内核定时器用于控制某个函数,也就是定时器将要处理的函数在未来的某个特定的时间内执行.内核定时器注册的处 ...

  8. 查看电脑python虚拟环境-手把手教你在Linux系统下使用Python虚拟环境

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夕阳无限好,只是近黄昏. /1 ...

  9. linux系统如何打开python_手把手教你在Linux系统下使用Python虚拟环境

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夕阳无限好,只是近黄昏. /1 ...

最新文章

  1. python输出文本-Python基础练习,查询文本内容并输出;
  2. (转)Git详解之三:Git分支
  3. HarmonyOS之应用开发的电话服务与蜂窝网络
  4. json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON
  5. html5调用手机摄像头和相册,h5 调用手机摄像头/相册
  6. MyEclipse6.5注册码(转)
  7. 经常见到的监控摄像机的镜头
  8. 如何修改一个类的私有成员?
  9. mysql binlog 备份_Mysql数据库的增量备份与还原
  10. 【R图秀-5】将薪比薪
  11. 教你怎么用爬虫程序采集企业信息及电话邮箱等信息(以企查查为例)
  12. SPSS分析基础——方差分析
  13. idea破解最新版本
  14. 4┃音视频直播系统之浏览器中通过 WebRTC 进行桌面共享
  15. 【spring cloud】(四)服务网关——gateway
  16. 获取汉字拼音首字母方法
  17. Eat,PrayLove--结婚3周年
  18. IPv6地址基础理论讲解
  19. Python错误之 SyntaxError: invalid syntax的解决方法总结
  20. 生成树最小树形图 -- 朱刘算法详解

热门文章

  1. Vue+Webpack使用规范
  2. Serverless 崛起背后的五大挑战
  3. 联手三年,获取数千名客户,阿里云如何重构 Elastic 开放免费的技术?
  4. 风靡业内的跨端开源框架 uni-app 入驻 GitCode
  5. 图解 | 什么是缓存系统“三座大山”?
  6. 雷军亲曝小米 10 四大猛料!
  7. 我为何不再愿意打一份朝九晚五的工?
  8. 雷军:小米推动山寨机灭亡;苹果回应禁止第三方换电池;Javascript 引擎 V8 7.7 发布 | 极客头条...
  9. 看完这篇,终于知道自己会不会 C# 泛型了!
  10. OpenStack 已死?