基于開源軟件的嵌入式網(wǎng)絡(luò)打印服務(wù)器_第1頁
基于開源軟件的嵌入式網(wǎng)絡(luò)打印服務(wù)器_第2頁
基于開源軟件的嵌入式網(wǎng)絡(luò)打印服務(wù)器_第3頁
基于開源軟件的嵌入式網(wǎng)絡(luò)打印服務(wù)器_第4頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于開源軟件的嵌入式網(wǎng)絡(luò)打印服務(wù)器首都師范大學徐遠超中國科學院計算技術(shù)研究所江濤引言目前常用的打印機有兩種接口形式:USB口和Ethernet網(wǎng)口。由于價格相對較低,USB口的打印機更為普遍。USB口打印機不能獨立工作,必須依附于一臺主機。為了在一個局域網(wǎng)環(huán)境*享使用一臺USB口打印機,需要為該打印機配備一臺服務(wù)器,然后通過共享設(shè)置實現(xiàn)打印機的網(wǎng)絡(luò)共享。這種方式有幾個方面的缺陷:需要占用一臺服務(wù)器資源;耗電;容易中毒導致無法正常打??;由于長時間不間斷首都師范大學 徐遠超中國科學院計算技術(shù)研究所 江濤引 言目前常用的打印機有兩種接口形式:USB口和Ethernet網(wǎng)口。由于價格相對較低,USB口

2、的打印機更為普遍。USB口打印機不能獨立工作,必須依附于一臺主機。為了在一個局域網(wǎng)環(huán)境*享使用一臺USB口打印機,需要為該打印機配備一臺服務(wù)器,然后通過共享設(shè)置實現(xiàn)打印機的網(wǎng)絡(luò)共享。這種方式有幾個方面的缺陷:需要占用一臺服務(wù)器資源;耗電;容易中毒導致無法正常打??;由于長時間不間斷運行,出現(xiàn)故障的概率高,導致無法打??;占用辦公空間。隨著嵌入式處理器主頻的不斷提高,設(shè)計專門的嵌入式網(wǎng)絡(luò)打印服務(wù)器已經(jīng)成為共識。HP等很少的幾家打印機公司在幾年以前就推出了這樣的嵌人式設(shè)備,但基本上都只針對本公司特定的幾種打印機,無法做到通用。很多文獻,如參考文獻1、2中提到的設(shè)計方案不夠具體?;谶@些情況,設(shè)計并實現(xiàn)

3、了一款基于Linux的嵌入式網(wǎng)絡(luò)打印服務(wù)器,硬件設(shè)計簡單,軟件完全開源,只要有Linux下的打印驅(qū)動,就可以支持。1 總體方案設(shè)計要把USB口打印機連入網(wǎng)絡(luò),有兩種設(shè)計方案,一種是使用USB以太網(wǎng)協(xié)議轉(zhuǎn)換器,另一種是設(shè)計一個帶有USB口和以太網(wǎng)網(wǎng)口(包含操作系統(tǒng))的嵌人式設(shè)備。盡管協(xié)議轉(zhuǎn)換器軟硬件簡單,但不支持多用戶同時并發(fā)打印,也就無法實現(xiàn)共享打印的要求。1.1 硬件設(shè)計筆者是在中科院計算所自主研制基于龍芯1號核的“聚芯SoC”1000C上實驗的,主頻266MHz。作為產(chǎn)品,只需要提供電源接口、USB口和以太網(wǎng)口。調(diào)試階段,增加串口和JTAG調(diào)試接口??紤]到多用戶并發(fā)打印的負載和實際測試效果

4、,因為移植的開源軟件有很多依賴庫,所占空間較大,故選用的是1 GB容量的Flash。打印過程中,打印文件在內(nèi)存中緩存,為了應(yīng)對較大的打印文件和提高運行速度,建議選擇256MB以上的SDRAM。嵌入式網(wǎng)絡(luò)打印服務(wù)器硬件結(jié)構(gòu)框圖如圖1所示。1.2軟件設(shè)計軟件設(shè)計是整個系統(tǒng)設(shè)計的重點,也是難點。在設(shè)計思想上,強調(diào)盡可能使用開源軟件,主要是為了縮短研發(fā)周期并能保證打印系統(tǒng)的可靠性和穩(wěn)定性。操作系統(tǒng)選擇目前主流的Linux操作系統(tǒng)。Linux操作系統(tǒng)下的打印控制系統(tǒng)根據(jù)打印機的命令方式,分為文本打印機、Post-Script打印機和其他種類。文本打印機不需要驅(qū)動程序,就可以直接用cat命令驅(qū)動打印機,但

5、只能打印英文,已很少使用。PostScript(簡稱PS)是一種繪圖能力很強的解釋性腳本語言,由Adobe公司制定。它因占用系統(tǒng)資源少,處理過程標準化與設(shè)備無關(guān)而被廣泛應(yīng)用。直接支持PostScript的打印機通常都是比較高級的辦公打印機,對于這類打印機來說,PS語言是它們和計算機之間溝通的最簡便的方式,應(yīng)用程序可以將生成的PS文檔直接發(fā)給打印機打印。但大多數(shù)情況下使用的是各種比較低檔的,不能直接支持PostScript的打印機,這類打印機只能識別各廠家自己的指令集。因此,必須采取一種機制,把PostScript格式轉(zhuǎn)換成打印機能夠識別的命令格式,而GhostScript程序就是用來完成這個工

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

7、在打印的時候不產(chǎn)生沖突,就需要一個打印管理程序。這類管理程序很多,使用最為廣泛的莫過于CUPS。CUPS接收要打印的文件;通過文件的類型判斷是否需要將其轉(zhuǎn)換為PostScript,如果需要,則調(diào)用相應(yīng)的應(yīng)用程序進行轉(zhuǎn)換;通過PPD文件來判斷Ghost-Script應(yīng)使用何種驅(qū)動處理此PostScript文件;把Ghost-Script處理的結(jié)果輸出到打印設(shè)備上。在打印管理程序和Ghostscript之間,通常還安裝一種統(tǒng)一的打印過濾器程序foomatic-rip。它是用perl編寫的腳本程序,打印管理程序通過它調(diào)用Ghostscript程序,從而把PostScript作業(yè)轉(zhuǎn)換成PPD文件描述的

8、打印機自身能夠識別的格式。2幾個關(guān)鍵問題2.1軟件的交叉編譯由前面的分析可知,打印服務(wù)器需要的開源軟件支持,為了運行于嵌入式Linux環(huán)境,需要對它們一一進行交叉編譯。通常的編譯方法是在宿主機上進行,筆者在反復實驗后不得不放棄,原因在于這些開源軟件還依賴于很多的其他軟件包。建議編譯安裝直接在開發(fā)板上進行,雖然速度較慢,但可以及時發(fā)現(xiàn)缺少的包。此編譯過程大約需要一周的時間。2.2 CGI程序的編寫嵌入式網(wǎng)絡(luò)設(shè)備通常都提供web管理方式,用以修改配置等。以修改IP地址為例,需要修改源碼目錄下的cgi-bin子目錄下的adminC文件,參照do_am_printer()函數(shù)新增函數(shù)do_modify

9、_ip,此函數(shù)的功能為讀取IP地址所在的配置文件,將IP地址、子網(wǎng)掩碼、默認網(wǎng)關(guān)等顯示在頁面文本框中,允許修改,提交修改時該函數(shù)將新的參數(shù)覆蓋原配置文件中舊的參數(shù)。為實現(xiàn)這一功能,主要用到了CUPS提供的文件操作函數(shù)cupsFileGets、cupsFileOpen、cupsFilePrintf,和有關(guān)CGI變量的讀寫函數(shù)cgiGetVariable、cgiSetVariable和界面的顯示函數(shù)cgiStartHTM如IP地址L(title)、cgiCopyTemplateLang(“error_iptmpl”)、cgiEndHTML()。有關(guān)文件的讀寫操作,可參照CUPS目錄下的testfi

10、lec文件。2.3界面和提示語言漢化CUPS支持多國語言版本,如果漢化,需要對界面標識、提示、按鈕等全面進行漢化,工作量較大,需要修改docindexhtml,需要把templates語言版本挪到最外層,需要在localecups_zhpo修改或增加新的中英文對照信息。更詳細的信息可參考CUPS運行后通過瀏覽器訪問http:localhost:631help下的Translating and Customizing CUPS文檔。2.4 CUPS配置與調(diào)試編輯etccupscupsdconf在Location選項中添加容許訪問的網(wǎng)段。為簡單起見,在Order allow,deny后直接輸入Al

11、low all即可。編輯etccupsmimeconvs,找到applicationoctet-stream applicationvndcups-raw 0-行,將其注釋掉,否則pdf、doc等文件格式將不被支持,提示“Print file wasnot accepted(Unsupported formatapplicationoctet-stream!)”錯誤。另外,要將防火墻中對631端口的訪問控制去掉,否則將提示打印服務(wù)器忙。在CUPS調(diào)試過程中,如果將cupsdconf中的loglev-el info改成loglevel debug,可以在varlogcupserror_log中看

12、到更多的輸出信息,極大地方便了調(diào)試,也可借助網(wǎng)絡(luò)抓包程序輔助調(diào)試。在確認打印機能夠工作之前,暫不要通過網(wǎng)絡(luò)方式驅(qū)動打印機,可用命令行的方式添加、使能并測試打印機是否工作正常。由于沒有成熟的文檔,過程比較艱辛。CUPS啟動后,可通過瀏覽器方式管理打印機。連接好打印機,進入web管理界面,找到“Add printer”。選擇正確的驅(qū)動程序,如果所連接打印機的驅(qū)動程序不存在,則必須手工添加驅(qū)動程序。添加完成后,可以打印測試頁看看打印機是否可以正常工作。3客戶端連接3.1 Windows客戶端在添加打印機時,選擇添加的打印機類型為“網(wǎng)絡(luò)打印機”,在URL中輸入http:printer_server_i

13、p:631printersprinter_name,其中printer_server_ip為CUPS打印服務(wù)器的IP地址,631為CUPS服務(wù)端口,printer_name為已添加的打印機的名稱。如果提示URL錯誤,請修正后再試,最后提供Windows下相應(yīng)的打印機驅(qū)動即可。如果出現(xiàn)連接異常,建議關(guān)閉XP的防火墻服務(wù)(盡管理論上不受其影響);也可以使用samba服務(wù)來共享打印機,這是最常規(guī)的做法,只需配置samba服務(wù),將打印機共享。在客戶端通過IP搜索,一般能夠找到打印服務(wù)器。3.2 Linux客戶端對于已聯(lián)網(wǎng)并且安裝了CUPS的Linux客戶端來講,能夠自動檢測到網(wǎng)絡(luò)中采用CUPS管理的打印機。因此,只需要找到菜單(RedHat Enterprise Server)“系統(tǒng)首選項更多首選項默認打印機”或(fedora)“桌面首選項更多首選項默認打印機”,將彈出網(wǎng)絡(luò)上所有已存在的打印機,選擇其中的某

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論