一、交叉編譯
交叉編譯的過程不贅述,跟其他開源軟件類似。編譯後將安裝路徑裏的cups文件夾(後用[cups]代替)拷貝到板子上
二、配置並啓動服務
首先注意編譯內核時需要選擇usb printer surpport,支持usb打印機。
把[cups]/bin和[cups]/sbin添加到環境變量
ARM下沒有安裝程序,不會自動啓動,所以一定注意手動啓動:
>cupsd
(可以把啓動指令cuped寫入rcS,開機自動啓動cups服務)
啓動時最好先連接打印機
其他配置:
可以在板子上編輯[cups]/etc/cups/cupsd.conf
將LogLevel info
改爲LogLevel debug
就可以在[cups]/var/log/cups/error_log中看到詳細的debug信息
更多其他配置都在[cups]/etc/cups/cupsd.conf中進行,對其進行編輯即可。
三、三星系列打印機使用
在官網上下載三星打印機驅動uld
將三星的uld中(下用[uld]代替)的[uld]/arm/rastertospl 拷貝到:
板子[cups]/lib/cups/filter/ 下
將[uld]/arm/libscmssc.so 拷貝到
板子的/lib下
在[uld]/arm/noarch/share/ppd下找到自己打印機型號對應的ppd
我的ML-2166W用的ppd是:Samsung_ML-2160_Series.ppd
將ppd拷貝至板子的[cups]/share/cups/model下
將已連接的ML-2166W打印機添加至CUPS配置,執行指令:
lpadmin -p [NAME] -E -v [DEVICE] -m [PPD]
例如:進入[cups]/share/cups/model下執行
>lpadmin -p ML-2166W -E -v /dev/lp0 -m Samsung_ML-2160_Series.ppd
然後執行
>lpstat -t (查看打印機狀態)
我的輸出是:
scheduler is running
no system default destination
device for ML-2166W: ///dev/lp0
ML-2166W accepting requests since Sun Oct 3 18:57:08 2004
printer ML-2166W is idle. enabled since Sun Oct 3 18:57:08 2004
說明配置成功,同時可以在[cups]/etc/cups/printer.conf中看到響應的配置
設置默認打印機,執行
>lpoptions -d ML-2166W
把ML-2166W設爲默認打印機
然後就可以打印ppm的圖像文件了
例如打印SD卡上的report.pbm文件:
>lp /mnt/sdcard/report.pbm
注意png jpg等圖像文件還不能打印,如果需要打印,則要安裝ghostScript
通過GS把png等轉換爲pbm,再打印
四、部分錯誤解決方式:
報錯:
lpadmin: File device URIs have been disabled! To enable, see the FileDevice directive in "/etc/cups/cupsd.conf".
解決:
編輯cupsd.conf,加入一行:
... # Allow new printers to be added using device URIs "file:/filename" FileDevice Yes ...
五、直接使用foo2zjs搞定部分型號打印機
如果你使用的打印機foo2zjs已支持,可以不使用cups,直接用foo2zjs將ppm文件轉換成打印機支持的流,傳入打印機即可打印。
1、交叉編譯foo2zjs
2、如果你的打印機需要固件,通過getweb下載固件,並轉換成dl文件
(以上兩步只說思路,具體內容太多,可以自己搜索)
3、將固件刷入打印機(以惠普的hp1020爲例)
> cp sihp1020.dl /dev/lp0
4、將ppm格式轉換爲打印機支持的流進行打印
>./foo2zjs -p9 -r600x600 test.pbm > /dev/lp0
注意:
部分由foo2xqx支持的型號,參數與foo2zjs不同,例如惠普的p1007
需要通過-z來選擇型號
>./foo2xqx -z1 -p9 -r600x600 test.pbm > /dev/lp0
具體的參數可以通過
> ./foo2zjs -h
查看
http://blog.sina.com.cn/s/blog_9da24f3b0101otng.html