国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于開源軟件的嵌入式網絡打印服務器

發布時間:2010-2-18 15:17    發布者:李寬
引言

目前常用的打印機有兩種接口形式:USB口和Eth-ernet網口。由于價格相對較低,USB口的打印機更為普遍。USB口打印機不能獨立工作,必須依附于一臺主機。為了在一個局域網環境中共享使用一臺USB口打印機,需要為該打印機配備一臺服務器,然后通過共享設置實現打印機的網絡共享。這種方式有幾個方面的缺陷:需要占用一臺服務器資源;耗電;容易中毒導致無法正常打印;由于長時間不間斷運行,出現故障的概率高,導致無法打印;占用辦公空間。

隨著嵌入式處理器主頻的不斷提高,設計專門的嵌入式網絡打印服務器已經成為共識。HP等很少的幾家打印機公司在幾年以前就推出了這樣的嵌入式設備,但基本上都只針對本公司特定的幾種打印機,無法做到通用。很多文獻,如參考文獻[1]、[2] 中提到的設計方案不夠具體。基于這些情況,設計并實現了一款基于Linux的嵌入式網絡打印服務器,硬件設計簡單,軟件完全開源,只要有Linux下的打印驅動,就可以支持。

1 總體方案設計

要把USB口打印機連人網絡,有兩種設計方案,一種是使用USB/以太網協議轉換器,另一種是設計一個帶有USB口和以太網網口(包含操作系統)的嵌入式設備。盡管協議轉換器軟硬件簡單,但不支持多用戶同時并發打印,也就無法實現共享打印的要求。

1.1 硬件設計

筆者是在中科院計算所自主研制基于龍芯1號核的“聚芯SoC”1000C上實驗的,主頻266 MHz。作為產品,只需要提供電源接口、USB口和以太網口。調試階段,增加串口和JTAG調試接口。考慮到多用戶并發打印的負載和實際測試效果,因為移植的開源軟件有很多依賴庫,所占空間較大,故選用的是1 GB容量的Flash。打印過程中,打印文件在內存中緩存,為了應對較大的打印文件和提高運行速度,建議選擇256 MB以上的SDRAM。嵌入式網絡打印服務器硬件結構框圖如圖1所示。



1.2 軟件設計

軟件設計是整個系統設計的重點,也是難點。在設計思想上,強調盡可能使用開源軟件,主要是為了縮短研發周期并能保證打印系統的可靠性和穩定性。操作系統選擇目前主流的Linux操作系統。Linux操作系統下的打印控制系統根據打印機的命令方式,分為文本打印機、Post-Script打印機和其他種類。文本打印機不需要驅動程序,就可以直接用cat命令驅動打印機,但只能打印英文,已很少使用。PostScript(簡稱PS)是一種繪圖能力很強的解釋性腳本語言,由Adobe公司制定。它因占用系統資源少,處理過程標準化與設備無關而被廣泛應用。直接支持PostScript的打印機通常都是比較高級的辦公打印機,對于這類打印機來說,PS語言是它們和計算機之間溝通的最簡便的方式,應用程序可以將生成的PS文檔直接發給打印機打印。但大多數情況下使用的是各種比較低檔的,不能直接支持PostScript的打印機,這類打印機只能識別各廠家自己的指令集。

因此,必須采取一種機制,把PostScript格式轉換成打印機能夠識別的命令格式,而GhostScript程序就是用來完成這個工作的。 Ghostscript將PostScript轉換成各種打印機能夠識別的格式。

打印機驅動程序是應用軟件與打印機之間交流的橋梁,它可以將轉化好的打印文件,按照各種打印機不同的格式發送給打印機,因此不同的打印機都有自己特有的打印驅動程序。另外,隨驅動程序一起發布的還有PPD文檔,PPD(PostScript Printer Description)是用來描述打印機功能的文件,里面包含了字體、打印頁面等的一些描述。在使用一款打印機之前,必須找到其相應的PPD文件,并正確地安裝到打印管理器程序上。筆者所用打印機為HP 1020plus激光打印機,CUPS不附帶此驅動,只能另行安裝。

為了讓不同的作業在打印的時候不產生沖突,就需要一個打印管理程序。這類管理程序很多,使用最為廣泛的莫過于CUPS。CUPS接收要打印的文件;通過文件的類型判斷是否需要將其轉換為PostScript,如果需要,則調用相應的應用程序進行轉換;通過PPD文件來判斷Ghost-Script應使用何種驅動處理此PostScript文件;把Ghost-Script處理的結果輸出到打印設備上。

在打印管理程序和Ghostscript之間,通常還安裝一種統一的打印過濾器程序foomatic-rip。它是用perl編寫的腳本程序,打印管理程序通過它調用Ghostscript程序,從而把PostScript作業轉換成PPD文件描述的打印機自身能夠識別的格式。

2 幾個關鍵問題

2.1 軟件的交叉編譯

由前面的分析可知,打印服務器需要的開源軟件支持,為了運行于嵌入式Linux環境,需要對它們一一進行交叉編譯。通常的編譯方法是在宿主機上進行,筆者在反復實驗后不得不放棄,原因在于這些開源軟件還依賴于很多的其他軟件包。建議編譯安裝直接在開發板上進行,雖然速度較慢,但可以及時發現缺少的包。此編譯過程大約需要一周的時間。

①CUPS的編譯與安裝:



2.2 CGI程序的編寫

嵌入式網絡設備通常都提供web管理方式,用以修改配置等。以修改IP地址為例,需要修改源碼目錄下的cgi—bin子目錄下的admin.c文件,參照do_am_printer()函數新增函數do_modify_ip,此函數的功能為讀取IP地址所在的配置文件,將IP地址、子網掩碼、默認網關等顯示在頁面文本框中,允許修改,提交修改時該函數將新的參數覆蓋原配置文件中舊的參數。為實現這一功能,主要用到了CUPS提供的文件操作函數cupsFileGets、cupsFi-leOpen、cupsFilePrintf,和有關CGI變量的讀寫函數cgiGetVariable、cgiSetVariable和界面的顯示函數cgiStartHTM如IP地址L(title)、 cgiCopyTemplateLang("error_ip.tmpl")、cgiEndHTML()。有關文件的讀寫操作,可參照CUPS目錄下的 testfile.c文件。

2.3 界面和提示語言漢化

CUPS支持多國語言版本,如果漢化,需要對界面標識、提示、按鈕等全面進行漢化,工作量較大,需要修改doc/index.html,需要把 templates語言版本挪到最外層,需要在loeale/cups_zh.po修改或增加新的中英文對照信息。更詳細的信息可參考CUPS運行后通過瀏覽器訪問http://localhost:631/help下的Translating and Custom-izing CUPS文檔。

2.4 OUPS配置與調試

編輯/etc/cups/cupsd.conf在Location選項中添加容許訪問的網段。為簡單起見,在 Order allow,deny后直接輸入Allow all即可。

編輯/etc/cups/mime.convs,找到application/octet-stream application/vnd.cups-raw 0-行,將其注釋掉,否則pdf、doc等文件格式將不被支持,提示“Print file wasnot accepted(Unsupported format 'application/octet-stream'!)”錯誤。另外,要將防火墻中對631端口的訪問控制去掉,否則將提示打印服務器忙。在CUPS調試過程中,如果將cupsd.conf中的loglev-el info改成。loglevel debug,可以在var/log/cups/error_log中看到更多的輸出信息,極大地方便了調試,也可借助網絡抓包程序輔助調試。在確認打印機能夠工作之前,暫不要通過網絡方式驅動打印機,可用命令行的方式添加、使能并測試打印機是否工作正常。由于沒有成熟的文檔,過程比較艱辛。

CUPS啟動后,可通過瀏覽器方式管理打印機。連接好打印機,進入web管理界面,找到“Add printer”。選擇正確的驅動程序,如果所連接打印機的驅動程序不存在,則必須手工添加驅動程序。添加完成后,可以打印測試頁看看打印機是否可以正常工作。



3 客戶端連接

3.1 Windows客戶端

在添加打印機時,選擇添加的打印機類型為“網絡打印機”,在URL中輸入 http://printer_server_ip:631/printers/printer_name,其中printer_server_ip為 CUPS打印服務器的IP地址,631為CUPS服務端口,printer_name為已添加的打印機的名稱。如果提示URL錯誤,請修正后再試,最后提供Windows下相應的打印機驅動即可。如果出現連接異常,建議關閉XP的防火墻服務(盡管理論上不受其影響);也可以使用samba服務來共享打印機,這是最常規的做法,只需配置samba服務,將打印機共享。在客戶端通過IP搜索,一般能夠找到打印服務器。

3.2 Linux客戶端

對于已聯網并且安裝了CUPS的Linux客戶端來講,能夠自動檢測到網絡中采用CUPS管理的打印機。因此,只需要找到菜單(RedHat Enterprise Server)“系統→首選項→更多首選項→默認打印機”或(fedora)“桌面→首選項→更多首選項→默認打印機”,將彈出網絡上所有已存在的打印機,選擇其中的某一在線打印機作為默認打印機即可。如果Linux客戶端沒有安裝CUPS,則需要手工去添加打印機。

結語

本文設計并實現的打印服務器完全使用開源軟件,擴展性強,只要能夠找到Linux下的驅動程序源碼,就能夠輕松加入到打印服務器的支持列表中。給出的http打印方式相比samba而言有三個方面的優勢,配置簡單,使用安全,可以跨網段打印。打印服務器調試過程中的主要技術問題都已包含在本文中,經實際反復測試,打印效果良好,完全實用。

參考文獻

   1. 許海燕,張曦煌.嵌入式系統Internet打印的設計與實現[J].微計算機信息,2007(2):66-68.
   2. 蔡理金.嵌入式Linux網絡打印服務器的實現[J].電子工程師,2007(12):53-55.
   3. 張志敏.基于聚芯SoC的嵌入式系統設計[M].北京:北京郵電大學出版社,2006.
   4. Introduction to CUPS[EB/OL].http://www.linuxfromscratch.org/blfs/view/stable/pst/cups.html.
   5. 用好Linux下的CUPS打印機服務[EB/OL].http://www.linuxfly.org/read.php? save_72.
   6. 基于CUPS的網絡打印服務器[EB/OL].http://xuyuanchao.cublog.cn.


作者:中國科學院計算技術研究所 江濤   來源:單片機與嵌入式系統 2009(10)
本文地址:http://m.qingdxww.cn/thread-8333-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
qftek 發表于 2012-12-12 10:48:04
網絡配套芯片PHY  DM9161C  DM9162N

S3C6410、S3C2410、S3C2440、S3C2450、S5PV210、FPGA、STM32
擴展網絡接口方案。
深圳市僑峰科技有限公司 (DAVICOM中國總代理)
嵌入式以太網絡接口芯片供應商,軟件及硬件設計服務與咨詢
聯絡方式:Jonny.chu@qftek.com  電話:13554902206
DM9000A  DM9000C  DM9161A  DM9161C DM8203 DM9620 DM9162N
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区在线免费 | 国产自在自线2021 | 五月天激情婷婷婷久久 | 国产精品v欧美精品v日韩 | 99re在线视频免费观看 | 99视频在线看观免费 | 九九欧美| 一区在线免费观看 | 成人在线日韩 | 成年女人看片免费视频播放人 | 亚洲一区二区影视 | 久久久亚洲天堂 | 国产一区系列在线观看 | 草莓视频丝瓜视频下载 | 久久国产三级精品 | 在线免费精品视频 | 国产精品嫩草研究院成人 | 久久国产区 | 91手机视频在线观看 | 一区二区不卡久久精品 | 呦女网址www呦女 | 97国产在线视频公开免费 | 在线观看91精品国产入口 | 免费国产h视频在线观看 | 欧美日本一本 | 伊人久久久综在合线久久在播 | 免费看国产黄色片 | 欧洲第一区第二区第三区 | 亚洲国产成人精品一区91 | 婷婷丁香九月 | 日韩免费专区 | 国自产在线精品免费 | 星空影院手机免费观看下载 | 操穴网| 骚五月天| 国产一级特黄aa大片爽爽 | 亚洲区精选网址 | 爽好舒服宝贝添奶吻戏 | 妈妈的朋友3线完整视频免费观看 | 婷婷色香五月激情综合2020 | 最近国产在线观看免费完整版 |