一、嵌入式打印机完整教程:
有很多方案,目前采取的是ghostscript-8.15+foo2zjs的方案,一下内容基于cj的文档。感谢cj之前的工作。
先直接使用gcc编译,直接敲入make指令,一切顺利,然后将其中的arm2hpdl拉出来保存好。
然后交叉编译,这个交叉编译比较简单,修改makefile,使CC=arm-linux-gcc,然后make,一切顺利。
再使用编译出来的getweb程序,命令./getweb 1020得到sihp1020.img(对应hp1020打印机的固件程序)
这时候再用我们刚才用x86 gcc编译的arm2hpdl工具将sihp1020.img转化为sihp1020.dl(这一步非常重要)
将生产的sihp1020.dl和foo2zjs拷贝至开发板端的文件系统中。完成。
2。 编译ghostscript-8.15
编译ghostscript-8.15可参考阿虚的文章hi.baidu/aokikyon/blog/item/5408e443e176081a73f05d80.html,写的很不错,唯一需要注意的是,最好在configure配置的时候加入--prefix的选项,比如我的是/disk2/printer/ghost-install
编译完成之后,输入make install,所有的文件将会生成灾这个目录底下。
这时候拷贝到开发板端文件系统有一定的讲究,需要同样在开发板端创建一个/disk2/printer/ghost-install,这样运行gs的时候才不会说不到一些配置的ps文件。
另,交叉编译ghostscript时,你的交叉编译工具最好把jpeg,zlib,png等库都装好
3。 使用
首先usb的内核选项要加上usb printer这个选项。
插上打印机usb口---》mdev -s重新生产节点----》cp sihp1020.hl /dev/lp0(这一步是加载打印机固件,这时候可以用foo2zjs生成的一个叫usb_printerid的小工具去查看lp0, ./usb_printerid /dev/lp0,如果加载成功能看到固件版本,这时还能听到打印机被驱动的声音)------》利用foo2zjs加载(这部分可参考阿虚的文章,我不重复了)
二、用arm驱动打印机
· 主 机:VMWare--Fedora 9
· 开发板:Mini2440--128MB Nand
· 编译器:arm-linux-gcc-4.3.2
· 内核版本:linux-2.6.33
====================================交叉编译ghostscript====================================
ghostscript可以将PostScript语言文件(.ps)及pdf文件转换成各种格式。
(1) 交叉编译生成gs-arm/bin/gs
1)解压ghostscript-8.15,改目录名称为gs-x86,./configure,make。
2)解压ghostscript-8.15,改目录名称为gs-arm ./configure --host=arm-linux,make
原因:编译ghostscript过程中需要使用三个中间应用程序,也被编译成arm-linux格式,主机不识别
解决方法:复制ghostscript-8.15-x86/obj目录下的echogs、genarch、genconf三个可执行程序到ghostscript-8.15/obj目录下
错误2:
/
/
usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: skipping incompatible /usr/lib/libXt.so when searching for -lXt
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: cannot find -lXt
collect2: ld returned 1 exit status
make: *** [bin/gs] 错误 1
/usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: cannot find -lXt
collect2: ld returned 1 exit status
make: *** [bin/gs] 错误 1
中国古迹原因:x11相关的内容,可能arm-linux不支持
解决方法:修改ghostscript-8.15下Makefile文件,注释掉以下和x11相关内容
#DEVICE_DEVS=$(DISPLAY_DEV) $(DD)x11.dev $(DD)x11alpha.dev $(DD)x11cmyk.dev $(DD)x11gray2.dev $(DD)x11gray4.dev $(DD)x11mono.dev
#DEVICE_DEVS=$(DISPLAY_DEV) $(DD)x11.dev $(DD)x11alpha.dev $(DD)x11cmyk.dev $(DD)x11gray2.dev $(DD)x11gray4.dev $(DD)x11mono.dev
(2) 添加依赖文件
在gs-arm/bin/下运行./gs -h查看ghostscript帮助:可以看到gs的使用方法和依赖文件。
(这一步应该在开发板下进行,但是运行gs-x86/bin/gs可得到同样的信息)
/
# ./gs -h
GPL Ghostscript 8.15 (2004-09-22)
Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-g<width>x<height> page size in pixels | -r<res> pixels/inch resolution
-sDEVICE=<devname> select device | -dBATCH exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
小山羊图片Default output device: bmpmono
Available devices:
bbox bit bitcmykbitrgb bj10e bj200 bjc600 bjc800 bmp16 bmp16m bmp256
bmp32b bmpgraybmpmono bmpsep1 bmpsep8 cdeskjet cdj550 cdjcolorcdjmono
GPL Ghostscript 8.15 (2004-09-22)
Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-g<width>x<height> page size in pixels | -r<res> pixels/inch resolution
-sDEVICE=<devname> select device | -dBATCH exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
小山羊图片Default output device: bmpmono
Available devices:
bbox bit bitcmykbitrgb bj10e bj200 bjc600 bjc800 bmp16 bmp16m bmp256
bmp32b bmpgraybmpmono bmpsep1 bmpsep8 cdeskjet cdj550 cdjcolorcdjmono
cljet5 cljet5c deskjetdevicen djet500 epswrite faxg3 faxg32d faxg4 ijs
jpeg jpeggraylaserjet lj5gray lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d
ljetplusnullpagepbmpbmraw pcx16 pcx24b pcx256 pcxcmykpcxgraypcxmono
pdfwritepgmpgmrawpgnmpgnmrawpjpjxl pjxl300 pkmpkmrawpksmpksmraw
png16 png16m png256 pngalphapnggraypngmono pnm pnmraw ppm ppmraw
psdcmykpsdrgbpsgraypsmonopsrgbpswritepxlcolorpxlmonospotcmyk
tiff12nc tiff24nc tiffcrle tiffg3 tiffg32d tiffg4 tifflzwtiffpack
uniprintxcf
Search path:
. : /usr/local/share/ghostscript/8.15/lib :
/usr/local/share/ghostscript/8.15/Resource :
/usr/local/share/ghostscript/fonts
For more information, see /usr/local/share/ghostscript/8.15/doc/Use.htm.
Report bugs to , using the form in Bug-form.htm.
jpeg jpeggraylaserjet lj5gray lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d
ljetplusnullpagepbmpbmraw pcx16 pcx24b pcx256 pcxcmykpcxgraypcxmono
pdfwritepgmpgmrawpgnmpgnmrawpjpjxl pjxl300 pkmpkmrawpksmpksmraw
png16 png16m png256 pngalphapnggraypngmono pnm pnmraw ppm ppmraw
psdcmykpsdrgbpsgraypsmonopsrgbpswritepxlcolorpxlmonospotcmyk
tiff12nc tiff24nc tiffcrle tiffg3 tiffg32d tiffg4 tifflzwtiffpack
uniprintxcf
Search path:
. : /usr/local/share/ghostscript/8.15/lib :
/usr/local/share/ghostscript/8.15/Resource :
/usr/local/share/ghostscript/fonts
For more information, see /usr/local/share/ghostscript/8.15/doc/Use.htm.
Report bugs to , using the form in Bug-form.htm.
可见还需要lib、Resource和fonts目录,将gs-arm目录中的相应lib和Resource拷贝至对应
位置。
至于fonts目录,可以先从主机的urs/share目录中拷贝过来。
至于fonts目录,可以先从主机的urs/share目录中拷贝过来。
(3) 在开发板上运行/bin/gs
火车票放票时间./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r300x300 -sDEVICE=pbmraw -sOutputFile=test.pbm test.ps
上述命令会把ps文件转换成pbm文件
转换某些文档会提示类似错误:
转换某些文档会提示类似错误:
/ # ./gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE -sPAPERSIZE=a4 -r300x300 -sDEVICE=pbmraw -sOutputFile=test2.pbm chess.ps
Error: /invalidfont in findfont
Operand stack:
F1 12 Times-Roman Font Times-Roman 287289 Times-Roman --nostringval-- Times-Roman NimbusRomNo9L-Regu Courier NimbusMonL-Regu
Error: /invalidfont in findfont
Operand stack:
F1 12 Times-Roman Font Times-Roman 287289 Times-Roman --nostringval-- Times-Roman NimbusRomNo9L-Regu Courier NimbusMonL-Regu
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
崎 %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
错误原因:/invalidfont in findfont,没到相应的字体
解决方法:看来chess.ps这个文件需要Times-Roman字体,不用搜索了,系统中不叫这个名字,需要查看lib目录中的fontmap.gs文件
line170 /Times-Roman /NimbusRomNo9L-Regu;
line122 /NimbusRomNo9L-Regu (n021003l.pfb) ;
line170 /Times-Roman /NimbusRomNo9L-Regu;
line122 /NimbusRomNo9L-Regu (n021003l.pfb) ;
原来Times-Roman字体对应的文件是n021003l.pfb,刚刚复制的fonts目录肯定有这个文件,但是被分散在子目录中,将这个文件复制到fonts根目录即可。
==================================用foo2zjs驱动HP LaserJet 1020==============================
(1) 上位机
1)配置内核<*> USB Printer support
2)下载foo2zjs
3)修改Makefile,添加CC=arm-linux-gcc,编译。
4)生成了foo2zjs的可执行文件。
4)生成了foo2zjs的可执行文件。
编译过程中会出现错误:但是生成可执行文件foo2zjs即可
make: *** 没有规则可以创建“all”需要的目标“printer-profile”。
(2)arm开发板
usb线连接打印机
电脑办公耗材#mdev -s -----------------生成lp0节点,位于/dev/lp0
#./foo2zjs -z1 -p9 -r600x600 test.pbm> /dev/lp0
用hp_lj1010可以打印,但是打印乱码,成功了大半,有时间再用1020试下。
注:使用编译器arm-linux-gcc4.3.2编译ghostscript时会出现错误,可换作3.3.2。
在开发板上需要lib下需要有必要的库文件支持。可从编译器中的库文件拷贝。
发布评论