引 言
目前常用的列印機有兩種接口形式: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的印表機,這類印表機只能識別各廠家自己的指令集。