FreeBSD handbook中文版 11 打印 (1)基本設(shè)置
2024-07-26 00:29:04
供稿:網(wǎng)友
目錄
11 打印
11.1 概要
11.2 介紹
11.3 基本設(shè)置
=============================================================
第11 章打印
=============================================================
(翻譯中出現(xiàn)的任何問(wèn)題或錯(cuò)誤,請(qǐng)廣大讀者及時(shí)反饋給我:freebsdhandbook@163.com)
11.1 概要
FreeBSD 支持許多種類的打印機(jī),從最老式的impact 打印機(jī),到最新的激光打印機(jī),
都可以讓你通過(guò)相關(guān)的應(yīng)用程序來(lái)提供高質(zhì)量的打印效果。
FreeBSD 也可以通過(guò)網(wǎng)絡(luò)來(lái)配置一個(gè)打印服務(wù)器。通過(guò)這種功能,F(xiàn)reeBSD 也可以從其
他的電腦上得到打印任務(wù),包括其它的FreeBSD 電腦、windows 和MACos 主機(jī)。FreeBSD 能
夠確保每個(gè)打印作業(yè)都能完成,并能夠統(tǒng)計(jì)用戶和機(jī)器的工作狀況,以使它們能達(dá)到最佳的
打印效果。FreeBSD 也能生成“banner”頁(yè),來(lái)顯示誰(shuí)打了什么和打了多少。
閱讀完這章,你將了解到:
如何配置FreeBSD 的打印機(jī)spooler。
如何安裝打印機(jī)的過(guò)濾器,處理一些特殊的打印作業(yè)。包括轉(zhuǎn)換打印文件的格式。
如何在打印輸出文件中啟用header 或banner 文件。
如何通過(guò)連接到其他電腦來(lái)打印到打印機(jī)。
如何直接連接到網(wǎng)絡(luò)來(lái)打印到打印機(jī)。
如何管理打印機(jī)的限制,包括打印尺寸的大小,以及阻止某些用戶的打印。
如何記錄打印機(jī)的統(tǒng)計(jì)情況和用戶使用打印機(jī)的情況。
如何處理打印機(jī)出現(xiàn)的問(wèn)題。
在閱讀這章之前,你應(yīng)當(dāng)先了解:
如何配置和安裝一個(gè)新的內(nèi)核(第9 章)。
11.2 介紹
第1 頁(yè)FreeBSD 使用手冊(cè)
要在FreeBSD 下使用打印機(jī),你需要設(shè)置Berkeley line PRint spooling(打印池)
系統(tǒng),也叫做LPD spooling 系統(tǒng)。這是FreeBSD 下控制打印機(jī)的標(biāo)準(zhǔn)。這一節(jié)將介紹LPD
spooling 系統(tǒng),以下將簡(jiǎn)稱為L(zhǎng)PD。
如果你已經(jīng)熟悉LPD 或是其它的打印機(jī)spooling 系統(tǒng),你可以先跳到設(shè)置spooling 系
統(tǒng)那一節(jié)。LPD 控制任何有關(guān)連接在本機(jī)上的打印機(jī)的事情,包括:
1. 控制本地打印機(jī)及網(wǎng)絡(luò)上其它打印機(jī)的訪問(wèn)權(quán)限。
2. 接收使用者傳送的文件來(lái)打??;這些要打印的要求稱為工作。
3. 利用隊(duì)列來(lái)防止多個(gè)使用者同時(shí)訪問(wèn)同一臺(tái)打印機(jī)。
4. 在輸出時(shí)打出header pages(也稱做banner 或burst)。這樣,使用者可以在厚厚
一打紙張中找出他們自己所打印的東西。
5. 為連接在串口上的打印機(jī)設(shè)置適當(dāng)?shù)耐ㄓ崊?shù)。
6. 通過(guò)網(wǎng)絡(luò)將工作送給另一臺(tái)機(jī)器上的LPD spooler。
7. 執(zhí)行特定的過(guò)濾程序,讓你的工作可以兼容于使用不同打印機(jī)語(yǔ)言的打印機(jī)。
8. 統(tǒng)計(jì)打印機(jī)的使用情況。
11.2.1 為什么要使用spooler
通過(guò)適當(dāng)?shù)脑O(shè)置并提供特別的過(guò)濾程序,你可以使LPD 系統(tǒng)在不同的打印機(jī)上擁有上述
全部或部分的功能。
如果你的系統(tǒng)只有自己一個(gè)人在用,那么你可能會(huì)覺(jué)得既不需要權(quán)限控制、header
pages、或是統(tǒng)計(jì)打印機(jī)使用情況,為什么還要用spooler?如果可以直接訪問(wèn)打印機(jī),那
么你仍然得使用spooler,因?yàn)椋?nbsp;
. LPD 在執(zhí)行脫機(jī)打印的工作時(shí),你不需要花時(shí)間等待資料傳送到打印機(jī)。
. LPD 可以通過(guò)過(guò)濾程序,在你的文件上加上日期/時(shí)間等信息,或是轉(zhuǎn)換特別的文件
格式(如Tex、DVI 的文件)使打印機(jī)能處理。你不需要手動(dòng)轉(zhuǎn)換。
. 很多免費(fèi)及商業(yè)軟件所提供的打印功能通常會(huì)需要用到你系統(tǒng)上的spooler。你只
要設(shè)置好spooling 系統(tǒng),將來(lái)可以很容易的讓其它的程序使用打印機(jī)。
. 統(tǒng)計(jì)打印機(jī)的使用情況。
第2 頁(yè)FreeBSD 使用手冊(cè)
11.3 基本設(shè)置
讓LPD 可以配合打印機(jī)工作,你需要同時(shí)設(shè)置好你的打印機(jī)以及LPD。設(shè)置分為兩大部
分:
1. 簡(jiǎn)單的打印機(jī)設(shè)置這一節(jié)將告訴你如何連接打印機(jī),并設(shè)置LPD 打印純文本的文
件。
2. 高級(jí)打印機(jī)設(shè)置這一節(jié)將告訴你如何讓打印機(jī)打出各種不同格式的文件、header
pages、通過(guò)網(wǎng)絡(luò)打印、設(shè)置訪問(wèn)權(quán)限以及統(tǒng)計(jì)打印機(jī)的使用情況。
11.3.1 簡(jiǎn)單的打印機(jī)設(shè)置
這一節(jié)將說(shuō)明如何連接打印機(jī)及設(shè)置LPD。包括:
硬件設(shè)置這一節(jié)說(shuō)明如何將打印機(jī)接到計(jì)算機(jī)上的連接端口。
軟件設(shè)置這一節(jié)說(shuō)明如何撰寫LPD spooler 的設(shè)置文件/etc/printcap 。
如果你要設(shè)置的是網(wǎng)絡(luò)打印機(jī),請(qǐng)參考使用網(wǎng)絡(luò)數(shù)據(jù)傳輸接口的打印機(jī)這一節(jié)。
雖然這一節(jié)叫做“簡(jiǎn)單的打印機(jī)設(shè)置”,但其實(shí)是挺復(fù)雜的。讓你的打印機(jī)可以配合
LPD spooler 是設(shè)置工作中最難的一部分。一旦你的打印機(jī)可以正常工作了,較高級(jí)的功能
如打印header pages 和打印機(jī)使用情況統(tǒng)計(jì)反而比較容易設(shè)置。
11.3.1.1 硬件設(shè)置
這一節(jié)說(shuō)明有哪些方法可以將打印機(jī)連到我們的個(gè)人計(jì)算機(jī)上;有哪些通訊端口、連接
線以及kernel 的設(shè)置。如果你的打印機(jī)在你使用的計(jì)算機(jī)上可以通過(guò)其它操作系統(tǒng)來(lái)打印,
你也許可以跳過(guò)這一節(jié)直接到軟件設(shè)置那一節(jié)。
11.3.1.1.1 端口和線纜
幾乎所有可以和PC 連接的打印機(jī)都能支持下列兩種或是其中一種接口:
第3 頁(yè)FreeBSD 使用手冊(cè)
1. 串行打印機(jī)通過(guò)串口和計(jì)算機(jī)傳輸資料。串行接口的配備及連接線可以容易的取得
及安裝。但是串行接口有時(shí)需要較特別的連接線及較復(fù)雜的設(shè)置。
2. 并行打印機(jī)通過(guò)并口和計(jì)算機(jī)傳輸資料。并口在市場(chǎng)上很普遍,連接線也很容易找
得到,但是不容易自己制作。利用并口連接打印機(jī)十分的容易,通常不需要設(shè)置額
外的通訊參數(shù)。
并口有時(shí)也稱做“Centronics”接口,這是根據(jù)打印機(jī)上面的接頭來(lái)命名的。
通常,只有使用PostScript 的打印機(jī)才需要用到雙向傳輸。PostScript 打印機(jī)可以說(shuō)
是十分復(fù)雜。事實(shí)上,PostScript 的打印工作常常是由程序?qū)⒐ぷ魉偷酱蛴C(jī)處理后,并
不打出來(lái),而是將結(jié)果再傳回計(jì)算機(jī)。PostScript 也使用雙向傳輸將錯(cuò)誤傳回計(jì)算機(jī)。比
如說(shuō)PostScript 程序有問(wèn)題或是打印機(jī)卡紙。機(jī)器上的使用者可能會(huì)需要這些信息。更進(jìn)
一步的,PostScript 打印機(jī)統(tǒng)計(jì)打印情況最好的方式就是使用雙向傳輸。比如說(shuō):你可先
詢問(wèn)打印機(jī)啟動(dòng)以來(lái)一共打過(guò)幾張,然后送出使用者要打的東西,打完后再詢問(wèn)一共打了幾
張,由此就可得知得向使用者收多少紙張的錢。
那么,你該選擇哪一種接口呢?
1. 如果你需要雙向傳輸,那么就選擇使用串口。FreeBSD 目前并不支持并口上的雙向
傳輸。
2. 如果你不需要雙向傳輸,那么,你只要選擇你的打印機(jī)支持的接口即可,當(dāng)然最好
是可以用并行端口,而將串行端口留作其它的用途—比如連接終端機(jī)或調(diào)制解調(diào)器
—通常并口傳輸比較快,設(shè)置起來(lái)也較容易。
3. 最后,如果還是不知道怎么選的話,就看哪個(gè)能用就接哪個(gè)吧。
11.3.1.1.2 并行口
用Centronics 連接線通過(guò)并口連接打印機(jī)和計(jì)算機(jī)。打印機(jī)的手冊(cè)、計(jì)算機(jī)的手冊(cè)這
兩者都可以給你足夠的安裝說(shuō)明。記住你所使用的并行口。在FreeBSD 里,第一個(gè)并行口是
/dev/lpt0;第二個(gè)則是/dev/lpt1,依此類推。
11.3.1.1.3 串行口
第4 頁(yè)FreeBSD 使用手冊(cè)
用適當(dāng)?shù)倪B接線通過(guò)串行口連接打印機(jī)和計(jì)算機(jī)。打印機(jī)的手冊(cè)、計(jì)算機(jī)的手冊(cè)這兩者
都可以給你足夠的安裝說(shuō)明。如果你不確定你的連線是否為“合適的串行口連接線”,你可
以試試下面幾種不同用途的線:
1. 連接調(diào)制解調(diào)器的線。這種線是一個(gè)接腳對(duì)一個(gè)接腳直接對(duì)接的。這種線也叫做
“DTE-to-DCE”連接線。
2. Null-modem 連接線大部分是一個(gè)接腳對(duì)一個(gè)接腳直接對(duì)接,而有少部分接腳相互
交換(如send data 和receive data);有少部分接腳則是兩端都是短路。這種線
也叫做“DTE-to-DTE”連接線。
3. 并行打印機(jī)連接線,某些不常見(jiàn)的打印機(jī)需要這種線。這種線類似null-modem 連
接線,但是有些信號(hào)是送到相對(duì)應(yīng)的接腳而不是兩端短路。
你應(yīng)當(dāng)為打印機(jī)設(shè)置通訊參數(shù),通常可以利用打印機(jī)上的控制面板或是DIP 開(kāi)關(guān)設(shè)置。
選擇你的計(jì)算機(jī)和打印機(jī)同時(shí)支持的最高傳輸速率(單位為bps,bits per second,也稱做
baud rate)。選擇7 或8 的數(shù)據(jù)位;無(wú)、奇數(shù)或偶數(shù)的同位檢查;1 或2 停止位。同時(shí)也選
擇流量控制的方式:無(wú)、XON/XOFF (也稱做“in-band”或“軟件”)流量控制。記住你的軟
件設(shè)置也要使用同樣的值。
11.3.1.2 軟件設(shè)置
這節(jié)說(shuō)明如何設(shè)置FreeBSD 下的LPD spooling 系統(tǒng),使其能打印。
下列是所需的步驟:
1. 如果需要的話,設(shè)置你的kernel,使該連接端口可被打印機(jī)使用。設(shè)置Kernel 這
一節(jié)將告訴你需要做些什么。
2. 如果你使用的是并行口,那么你得設(shè)置并口的通訊模式。設(shè)置并列端口的通訊模式
這一節(jié)有詳細(xì)的說(shuō)明。
3. 測(cè)試操作系統(tǒng)是否可以將資料送給打印機(jī)。檢查打印機(jī)連接狀況這節(jié)將給你一些關(guān)
于這一方面的建議。
4. 修改/etc/printcap 以正確設(shè)置LPD。/etc/printcap 設(shè)置文件將告訴你如何做。
第5 頁(yè)FreeBSD 使用手冊(cè)
11.3.1.2.1 內(nèi)核配置
操作系統(tǒng)的kernel 為了能配合某些設(shè)備需要重新編譯。而串口和并口就是這些設(shè)備之
一。如果你的kernel 目前并不支持你想用的串口或并口,那么你可能需要將它們加入你的
kernel 設(shè)置并重新編譯。如果要檢查你的kernel 目前是否支持串口,你可以用這個(gè)命令:
# dmesg | grep sioN
其中N 是串口的編號(hào),從0 開(kāi)始計(jì)算。如果你得到的結(jié)果類似下面這個(gè)樣子:
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
表示你的kernel 支持這個(gè)通訊端口。
如果要檢查你的kernel 目前是否支持并行口,你可以用這個(gè)命令:
# dmesg | grep lptN
其中N 是并行口的編號(hào),從0 開(kāi)始計(jì)算。如果你得到的結(jié)果類似
lpt0 at 0x378-0x37f on isa
表示你的kernel 支持這個(gè)通訊端口。
你可能會(huì)需要重新設(shè)置你的kernel 使得操作系統(tǒng)可以辨認(rèn)并使用你連接打印機(jī)的并口
或串口。
如果要讓你的kernel 支持串口,請(qǐng)參考關(guān)于重新編譯kernel 的那一節(jié)。如果要讓你的
kernel 支持并口,請(qǐng)參考關(guān)于重新編譯kernel 的那一節(jié)以及下一節(jié)。
11.3.1.3 為端口新增/dev 下的設(shè)備文件
既然kernel 已經(jīng)支持你所需的并口或串口,你仍然需要一個(gè)程序接口在系統(tǒng)里協(xié)助傳
送和接收資料。這也是/dev 里設(shè)備文件存在的目的。
第6 頁(yè)FreeBSD 使用手冊(cè)
如果要在/dev 目錄下為你的通訊端口建立相對(duì)應(yīng)的設(shè)備文件:
1. 用su 命令切換成root。
2. 更改當(dāng)前的目錄到/dev 下:
# cd /dev
3. 輸入:
# ./MAKEDEV port
其中port 是你想要建立的設(shè)備文件名稱。如果是第一個(gè)并口,你可以用lpt0;如
果是第二個(gè)并口,你可以用lpt1,依此類推。如果是第一個(gè)串口,你可以用ttyd0
如果是第二的串口,而用ttyd1;依此類推。
4. 輸入:
# ls -l port
以確定你剛剛是否建立成功。
11.3.1.3.1 為并口設(shè)置通訊模式
當(dāng)你決定要用并口時(shí),在FreeBSD 下你可以決定要用中斷驅(qū)動(dòng)(interrupt-driven)或是
輪詢(polled)的方式與打印機(jī)溝通。
1. 中斷驅(qū)動(dòng)是GENERIC kernel 里默認(rèn)的方式。如果選擇這個(gè)方式,操作系統(tǒng)將利用
IRQ 來(lái)判斷打印機(jī)是否已經(jīng)準(zhǔn)備好接收資料。
2. 而輪詢的方式則是由操作系統(tǒng)一直重復(fù)地去詢問(wèn)打印機(jī)是否已經(jīng)準(zhǔn)備好可以接收
資料。如果打印機(jī)已經(jīng)準(zhǔn)備好了,那么kernel 再將要打印的資料送過(guò)去。
中斷驅(qū)動(dòng)的方式較快但是要占用一個(gè)IRQ。你可以從上述兩者任選一個(gè)可以正常工作的
來(lái)使用。設(shè)置通訊模式有兩種方式:設(shè)置kernel 或是使用lptcontrol 這個(gè)程序。
如果要從kernel 里設(shè)置:
第7 頁(yè)FreeBSD 使用手冊(cè)
1. 編輯你的kernel 設(shè)置文件。找出或是自行加入lpt0 這一項(xiàng)。如果你要設(shè)置使用第
二個(gè)并口,那就加入lpt1 這項(xiàng)。如果是第三個(gè)并口就用lpt2,依此類推。
如果你要設(shè)置使用中斷驅(qū)動(dòng)模式,那么要指定irq:
device lpt0 at isa? port? tty irq N vector lptintr
其中N 是你并口所使用的IRQ 編號(hào)。
如果你要用輪詢模式,那么就不要指定irq:
device lpt0 at isa? port? tty vector lptintr
2. 將設(shè)置文件存儲(chǔ)好后,重新編譯、安裝kernel 并重新啟動(dòng)。你可以參考內(nèi)核配置那
一節(jié)里更詳細(xì)的說(shuō)明。
如果你想用lptcontrol 來(lái)設(shè)置通訊模式:
1. 輸入:
# lptcontrol -i -u N
將lptN 設(shè)置為中斷驅(qū)動(dòng)模式。
2. 輸入:
# lptcontrol -p -u N
將lptN 設(shè)置為輪詢模式。
你可以把上述的命令加到你的/etc/rc.local 文件里使得每次啟動(dòng)時(shí)都可以自動(dòng)設(shè)置。
你可以查看lptcontrol 以得到更多有關(guān)的信息。
11.3.1.3.2 檢查打印機(jī)的通訊狀況
在設(shè)置spooling 系統(tǒng)前,你應(yīng)該先確定你的操作系統(tǒng)可以成功地將資料送到你的打印
機(jī)。將打印機(jī)的連接和spooling 系統(tǒng)分開(kāi)來(lái)測(cè)試會(huì)較容易。
你可以送一些文字來(lái)測(cè)試你的打印機(jī)。打印機(jī)應(yīng)該會(huì)馬上將它們收到的資料打出來(lái)。
lptest 這個(gè)程序會(huì)送96 行每行96 個(gè)ASCII 文字的資料給你的打印機(jī)以協(xié)助測(cè)試。
第8 頁(yè)FreeBSD 使用手冊(cè)
使用PostScript(或是其它語(yǔ)言)的打印機(jī)測(cè)試起來(lái)較復(fù)雜。我們得先寫一個(gè)較小的測(cè)
試程序,像下面這樣:
%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage
注意:上面這個(gè)小程序是給使用PostScript 的打印機(jī)用的,不能給比如說(shuō)Hewlett
Packard 公司的PCL 語(yǔ)言使用。PCL 語(yǔ)言可以讓你打印純文本,同時(shí)里面夾雜PCL 特別的命
令。PostScript 不能直接打印純文本,因此對(duì)于這樣的打印機(jī),我們必需做一些特別的設(shè)
置。
11.3.1.3.2.1 檢查一下并口打印機(jī)
這節(jié)將告訴你如何檢查FreeBSD 是否可以使用接在并口的打印機(jī)。
測(cè)試并口上的打印機(jī):
1. 用su 命令切換成root。
2. 將資料傳送給打印機(jī)。
如果這個(gè)打印機(jī)可以直接打印純文本,請(qǐng)使用lptest。輸入:
# lptest > /dev/lptN
其中N 是你打印機(jī)所連接的并列端口。從0 開(kāi)始計(jì)算。
如果這個(gè)打印機(jī)使用PostScript 或其它的打印機(jī)語(yǔ)言,那么送一個(gè)小小的測(cè)試程序給
打印機(jī)。輸入:
# cat > /dev/lptN
然后,一行接著一行,小心的把你的命令打進(jìn)去,因?yàn)槟惆聪翬NTER 后,就無(wú)法再修改
了。當(dāng)你輸入完畢后,按CONTROL+D 或是其它產(chǎn)生文件結(jié)尾字符的按鍵?;蛘呤悄憧梢詫⒛?
的測(cè)試程序放在一個(gè)文件里并輸入:
# cat file > /dev/lptN
第9 頁(yè)FreeBSD 使用手冊(cè)
其中file 就是存儲(chǔ)你測(cè)試程序的文件名。
你應(yīng)該可以看到有一些東西打出來(lái)了。如果打出來(lái)的資料看起來(lái)不大正確,別擔(dān)心,我
們等一會(huì)就修正它們。
11.3.1.3.2.2 檢查一下串口打印機(jī)
這節(jié)將告訴你如何檢查FreeBSD 是否可以使用接在串口的打印機(jī)。
測(cè)試串口上的打印機(jī):
1. 用su 命令切換成root。
2. 編輯/etc/remote 這個(gè)文件,并加入下列幾行:
printer:dv=/dev/port:br#bps-rate:pa=parity
其中port 指的是哪一個(gè)串口(ttyd0、ttyd1、等等),bps-rate 指的是該串口的傳
輸速度,而parity 是設(shè)置打印機(jī)是否需要同位檢查(這個(gè)值可以是even、odd、none
或zero)。
下面這個(gè)例子是一臺(tái)連接在串行端口上以19200 bps 傳輸?shù)?,同時(shí)不使用同位檢查
的打印機(jī)設(shè)置方式:
printer:dv=/dev/ttyd2:br#19200:pa=none
3. 用tip 命令連上打印機(jī)。輸入:
# tip printer
如果失敗的話,再次編輯/etc/remote 這個(gè)文件同時(shí)以/dev/cuaaN 取代/dev/ttydN。
4. 將資料傳送給打印機(jī)。
如果這個(gè)打印機(jī)可以直接打印純文本,請(qǐng)使用lptest。輸入:
~$lptest
如果這個(gè)打印機(jī)使用PostScript 或其它的打印機(jī)語(yǔ)言, 那么送一個(gè)小小的測(cè)試程序給
打印機(jī)。一行接著一行,非常小心地將程序輸入,因?yàn)橥烁矜I或是其它編輯時(shí)常用的按鍵,
第10 頁(yè)FreeBSD 使用手冊(cè)
對(duì)打印機(jī)可能有特殊的意義。最后你可能要打一個(gè)給打印機(jī)的文件結(jié)尾的字符,讓它知道程
序結(jié)束了。對(duì)PostScript 的打印機(jī)來(lái)說(shuō),是用CONTROL+D 鍵。
或者是你可以將你的測(cè)試程序放在一個(gè)文件里并輸入:
~>file
其中file 就是存儲(chǔ)你測(cè)試程序的文件名。用tip 將這個(gè)文件送給打印機(jī)后,而按文件
結(jié)尾字符。
你應(yīng)該可以看到有一些東西打出來(lái)了。如果打出來(lái)的資料看起來(lái)不大正確,別擔(dān)心,我
們稍待一會(huì)就修正它們。
11.3.1.4 啟用spooler:編輯/etc/printcap 文件
到目前為止,你的打印機(jī)應(yīng)該已經(jīng)連接好了,你的kernel 應(yīng)該也設(shè)置無(wú)誤了,而且你
也可以傳送資料給打印機(jī)了?,F(xiàn)在,我們應(yīng)該可以開(kāi)始設(shè)置LPD 來(lái)控制打印機(jī)了。
LPD 的設(shè)置文件是/etc/printcap。每當(dāng)spooler 被使用時(shí),LPD spooling 系統(tǒng)就會(huì)來(lái)讀這
個(gè)文件,所以只要這個(gè)文件一被修改,馬上就會(huì)生效。
編輯printcap 這個(gè)設(shè)置文件是很簡(jiǎn)單的。用你喜歡的編輯器對(duì)/etc/printcap 這個(gè)設(shè)
置文件做修改就可以了。這個(gè)文件的格式寫法和其它的設(shè)置文件如
/usr/share/misc/termcap 和/etc/remote 是相同的。關(guān)于這些設(shè)置文件的格式,請(qǐng)參考
cgetent。
要建立一個(gè)簡(jiǎn)單的spooler 設(shè)置,請(qǐng)按照下列步驟:
1. 為你的打印機(jī)選擇一個(gè)名字(以及一些方便的別名),并把它們放在/etc/printcap
這個(gè)文件里。請(qǐng)閱讀為打印機(jī)取名這一節(jié)。
2. 用sh 關(guān)鍵詞關(guān)閉打印header pages 的功能(默認(rèn)是打開(kāi)此功能)。請(qǐng)閱讀不打印
Header Pages 這一節(jié)。
3. 用sd 關(guān)鍵詞指定一個(gè)目錄給spooler 用。請(qǐng)閱讀建立Spooling 目錄這一節(jié)。
4. 在/etc/printcap 設(shè)置文件里用lp 關(guān)鍵詞指定打印機(jī)連接端口在/dev 下使用的設(shè)備
文件。請(qǐng)閱讀辨認(rèn)打印機(jī)設(shè)備這一節(jié)。如果你的打印機(jī)是接在串口,那么你可以用
fs、fc、xs 以及xc 等關(guān)鍵詞來(lái)設(shè)置通訊參數(shù)。請(qǐng)閱讀設(shè)置Spooler 的通訊參數(shù)。
5. 安裝輸入文字過(guò)濾程序;請(qǐng)參考安裝文字過(guò)濾程序這一節(jié)。
第11 頁(yè)FreeBSD 使用手冊(cè)
6. 利用lpr 命令打印以測(cè)試設(shè)置是否正確;請(qǐng)閱讀測(cè)試及疑難解答這兩節(jié)。
注意: 使用特定語(yǔ)言的打印機(jī),比如說(shuō)PostScrit 打印機(jī),無(wú)法直接打印純文本。上述
以及下面要介紹的方法將假設(shè)你所要打印的文件都是不需要轉(zhuǎn)換就能讓打印機(jī)直接了解
的。
使用者通常會(huì)期望它們可以直接將純文本的資料直接由打印機(jī)輸出,而使用LPD 打印的
程序通常也是這么假設(shè)的。如果你的打印機(jī)使用某個(gè)特定的打印機(jī)語(yǔ)言,且你希望可以同時(shí)
處理特定打印機(jī)語(yǔ)言的資料以及純文本的資料,那么你應(yīng)該要另外再多安裝一項(xiàng)以前沒(méi)有提
到的東西:純文本轉(zhuǎn)成PostScript(或其它打印機(jī)語(yǔ)言)的自動(dòng)轉(zhuǎn)換程序。在PostScript 打
印機(jī)上打印純文本這一節(jié)將告訴你要怎么做。
11.3.1.4.1 為打印機(jī)命名
第一就是為你的打印機(jī)取一個(gè)名字。此外,你也可為你的打印機(jī)取很多別名,因此,你
要取符合功能的名字或是古怪的名字都可以。
在/etc/printcap 里定義的打印機(jī),至少要有一臺(tái)取lp 別名。這是默認(rèn)的打印機(jī)名稱。
如果使用者沒(méi)有環(huán)境變量PRINTER 設(shè)置打印機(jī)的名稱,且在LPD 的命令也沒(méi)有指定任何打印
機(jī)的話,那么別名為lp 的打印機(jī)就會(huì)被視為默認(rèn)的打印機(jī)。
通常,我們會(huì)將一臺(tái)打印機(jī)的最后一別名取為它的全名,包括制造商以及型號(hào)。
當(dāng)你將打印機(jī)的名稱及別名設(shè)置在/etc/printcap 文件里時(shí),打印機(jī)的名稱一定要放
在最左邊的字段。其它的別名則以垂直的線(|)分開(kāi),而在最后一個(gè)別名之后加一個(gè)冒號(hào)(:)。
在下面的例子里,我們大略描述一下/etc/printcap 的骨干。這個(gè)例子里定義了兩臺(tái)打印機(jī)。
(Diablo 630 以及Panasonic KX-P4455 PostScript 激光打印機(jī)。):
#
# /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
在這個(gè)例子里,第一臺(tái)打印機(jī)取名為rattan 而它的別名有l(wèi)ine、diablo、lp 以及Diablo
630 Line Printer。這臺(tái)打印機(jī)有l(wèi)p 這個(gè)別名,因此它也是默認(rèn)的打印機(jī)。第二臺(tái)取名為
bamboo,而它的別名有ps、PS、S、panasonic 以及Panasonic KX-P4455 PostScript v51.4。
11.3.1.4.2 不打印頭文件
第12 頁(yè)FreeBSD 使用手冊(cè)
LPD spooling 系統(tǒng)默認(rèn)是為每個(gè)打印工作打印header page 的。Header page 包括了送
出打印工作的使用者名稱、送出工作的機(jī)器名稱以及工作的名稱。不幸的是,這些額外的信
息可能會(huì)妨礙我們做簡(jiǎn)單的打印機(jī)設(shè)置測(cè)試,因此我們想不要打印header pager。
在/etc/printcap 用sh 關(guān)鍵詞為特定的打印機(jī)設(shè)置不打印header pages。這里有一個(gè)
在/etc/printcap 里使用sh 的例子:
#
# /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:/
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/
:sh:
注意:我們使用的正確格式:打印機(jī)定義的第一行得從第一個(gè)字開(kāi)始寫的,而其后的每
一行用TAB 鍵往內(nèi)縮一格。而一行如果寫不完需要接到下一行時(shí),則以反斜線字符結(jié)尾。
11.3.1.4.3 建立spooling 目錄
下一步就是建立一個(gè)spooling 目錄,一個(gè)在打印時(shí)會(huì)用到以及存放一些spooler 需要
的文件的地方。
通常我們會(huì)將spooling 目錄指定在/var/spool 目錄下。你不需要備份spooling 目錄,
而建立它也只要以mkdir 命令即可。
通常我們會(huì)將spooling 目錄以打印機(jī)的名稱建立,如下所示:
# mkdir /var/spool/printer-name
然而,如果在你的網(wǎng)絡(luò)中有很多打印機(jī)的話,你也許會(huì)希望將所有的spooling 目錄放
在一個(gè)LPD 專用的目錄下。以我們的打印機(jī)rattan 和bamboo 為例:
# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo
注意: 如果你關(guān)心的是使用者打印資料的隱私,那么你應(yīng)該要將spooling 目錄的權(quán)限
做適當(dāng)?shù)脑O(shè)置。Spooling 目錄應(yīng)該要屬于daemon 這個(gè)使用者同時(shí)并允許它讀、寫及搜索,
而其它人都無(wú)法訪問(wèn)此目錄。因此,我們應(yīng)該要這樣設(shè)置:
第13 頁(yè)FreeBSD 使用手冊(cè)
# chown daemon.daemon /var/spool/lpd/rattan
# chown daemon.daemon /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan
# chmod 770 /var/spool/lpd/bamboo
最后,在/etc/printcap 文件里,你可以用sd 關(guān)鍵詞來(lái)指定spooling 的目錄:
#
# /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:/
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/
:sh:sd=/var/spool/lpd/bamboo:
注意:打印機(jī)的名字一定是在定義第一行的第一個(gè)字,而其它行都要以TAB 縮進(jìn)。如果
需要換行則需要在行末加上反斜線字符。
如果你沒(méi)有用sd 指定spooling 目錄,那么系統(tǒng)默認(rèn)的spooling 目錄將會(huì)是
/var/spool/lpd 。
11.3.1.4.4 識(shí)別打印機(jī)設(shè)備
在為通訊端口新增/dev 目錄下的設(shè)備文件這一節(jié)里,我們?cè)?dev 目錄下選定了要給
FreeBSD 使用與打印機(jī)通訊的連接端口?,F(xiàn)在我們要告訴LPD 這個(gè)信息。當(dāng)spooling 系統(tǒng)
有工作要打印時(shí),它將會(huì)告訴過(guò)濾程序(負(fù)責(zé)送資料給打印機(jī))使用指定的設(shè)備。
在/etc/printcap 用lp 關(guān)鍵詞指定使用/dev 下的設(shè)備名稱。
在我們的例子中,我們?cè)O(shè)置rattan 使用第一個(gè)并口,而bamboo 使用第六個(gè)串口。因此
在/etc/printcap 中我們?cè)O(shè)置:
#
# /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:/
:sh:sd=/var/spool/lpd/rattan:/
:lp=/dev/lpt0:
第14 頁(yè)FreeBSD 使用手冊(cè)
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/
:sh:sd=/var/spool/lpd/bamboo:/
:lp=/dev/ttyd5:
如果你在/etc/printcap 里沒(méi)有用lp 關(guān)鍵詞指定要使用哪個(gè)通訊端口,LPD 將會(huì)使用
/dev/lp 為默認(rèn)的通訊端口。/dev/lp 目前在FreeBSD 中并不存在。
如果你現(xiàn)在安裝的打印機(jī)是連接在并口上,那么請(qǐng)?zhí)涟惭b文字過(guò)濾程序這一節(jié),否
則,請(qǐng)按照下面這一節(jié)繼續(xù)設(shè)置。
11.3.1.4.5 配置spooler 通訊參數(shù)
對(duì)于連接在串口上的打印機(jī),LPD 設(shè)置的傳輸速率、同位檢查、以及其它的通訊參數(shù),
使得過(guò)濾程序能送資料到打印機(jī)上。這是較有利的。因?yàn)椋?nbsp;
1. 你只要編輯/etc/printcap 就可以使用不同的通訊參數(shù)。不需要去重新編譯你的過(guò)
濾程序。
2. 允許spooling 系統(tǒng)在多臺(tái)打印機(jī)、多種不同通訊參數(shù)設(shè)置的情況下用同一個(gè)過(guò)濾
程序。
在/etc/printcap 設(shè)置文件里,下列關(guān)鍵詞控制lp 所指定的通訊端口:
br#bps-rate
設(shè)置通訊端口傳輸速度為bps-rate 其中bps-rate 可以是50、75、110 、134、150、
200、300、600、1200、1800、2400、4800、9600、19200 或是38400 bit-per-second。
fc#clear-bits
打開(kāi)通訊端口后,清除sgttyb 結(jié)構(gòu)里的標(biāo)記位clear-bits。
fs#set-bits
設(shè)置sgttyb 結(jié)構(gòu)里的標(biāo)記位set-bits。
xc#clear-bits
打開(kāi)通訊端口后,清除local 模式位clear-bits。
xs#set-bits
設(shè)置local 模式位set-bits。
第15 頁(yè)FreeBSD 使用手冊(cè)
關(guān)于fc、fs、xc 以及xs 關(guān)鍵詞各個(gè)bit 的說(shuō)明,請(qǐng)參考
/usr/include/sys/ioctl_compat.h。當(dāng)LPD 打開(kāi)由lp 所指定的通訊端口時(shí),會(huì)先讀取
sgttyb 這個(gè)結(jié)構(gòu),然后清掉fc 關(guān)鍵詞所指定的位再設(shè)置由fs 關(guān)鍵詞所指定的位。設(shè)置完
成后,才開(kāi)始使用這個(gè)結(jié)構(gòu)。同樣的,對(duì)local 模式位設(shè)置也是以一樣方式的處理。
讓我們?cè)谖覀兊睦永餅榈诹鶄€(gè)串行端口設(shè)置這些位。我們會(huì)將傳輸速率設(shè)置成38400 bps。
而在標(biāo)記位方面,我們會(huì)設(shè)置TANDEM、ANYP、LITOUT、FLUSHO 以及PASS8 這些位。而local
模式位,我們將設(shè)置LITOUT 以及PASS8 位:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/
:sh:sd=/var/spool/lpd/bamboo:/
:lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:
11.3.1.4.6 安裝文本過(guò)濾器
現(xiàn)在可以開(kāi)始設(shè)置LPD 用什么文字過(guò)濾程序送工作給打印機(jī)。一個(gè)文字過(guò)濾程序也叫做
輸入用過(guò)濾程序,當(dāng)LPD 有東西要打印時(shí),它就會(huì)執(zhí)行這個(gè)程序。當(dāng)LPD 運(yùn)行這個(gè)程序時(shí),
它會(huì)將過(guò)濾程序的標(biāo)準(zhǔn)輸入設(shè)為要打印工作的標(biāo)準(zhǔn)輸入,而過(guò)濾程序的標(biāo)準(zhǔn)輸出則送給以
lp 關(guān)鍵詞指定的通訊端口。因此過(guò)濾程序必需要能從標(biāo)準(zhǔn)輸入讀入要打印的東西,做適當(dāng)
的處理后,將結(jié)果從標(biāo)準(zhǔn)輸出送出。而這些輸出就會(huì)被打出來(lái)。請(qǐng)參考過(guò)濾程序的運(yùn)作方式
這一節(jié)以更進(jìn)一步的了解過(guò)濾程序。
在我們的打印機(jī)設(shè)置里,文字過(guò)濾程序可能只是一個(gè)執(zhí)行/bin/cat 命令的shell script
將工作送給打印機(jī)。FreeBSD 里有一個(gè)叫做lpf 的過(guò)濾程序能處理倒退、底線等打印機(jī)可能
無(wú)法正確處理的資料。當(dāng)然,你也可以用任何你想用的過(guò)濾程序。關(guān)于lpf 這個(gè)過(guò)濾程序在
文字過(guò)濾程序:lpf 這一節(jié)里有更詳細(xì)的說(shuō)明。
首先, 讓我們做一個(gè)簡(jiǎn)單的shell script 文字過(guò)濾程序,
/usr/local/libexec/if-simple。用你熟悉的編輯器編輯這個(gè)文件:
#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout. Ignores all filter arguments.
第16 頁(yè)FreeBSD 使用手冊(cè)
/bin/cat && exit 0
exit 2
然后要讓這個(gè)文件可執(zhí)行:
# chmod 555 /usr/local/libexec/if-simple
同時(shí),在/etc/printcap 設(shè)置文件里用if 關(guān)鍵詞告訴LPD 來(lái)使用這個(gè)過(guò)濾程序。在下面
的例子里,我們?cè)?etc/printcap 中為兩臺(tái)打印機(jī)都指定了過(guò)濾程序:
#
# /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:/
:sh:sd=/var/spool/lpd/rattan:/ :lp=/dev/lpt0:/
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:/
:sh:sd=/var/spool/lpd/bamboo:/
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:/
:if=/usr/local/libexec/if-simple:
11.3.1.4.7 打開(kāi)LPD
lpd 從/etc/rc 運(yùn)行,通過(guò)使用lpd_enable 來(lái)控制。默認(rèn)是NO。如果你還沒(méi)有啟用它,
可以加入下面這行到/etc/rc.conf,然后重新啟動(dòng)電腦或只運(yùn)行l(wèi)pd:
lpd_enable="YES"
# lpd
11.3.1.4.8 測(cè)試
你已經(jīng)把LDP 需要的設(shè)置都完成了。不過(guò),我們需要測(cè)試看看這些設(shè)置是否可以正確地
工作。測(cè)試的方法就是打出一些東西。如果要用LPD 系統(tǒng)來(lái)打印,我們可以使用lpr 這個(gè)命
令來(lái)送出一些打印工作。
你可以使用檢查打印機(jī)連接狀況這一節(jié)里介紹的lpr 及l(fā)ptest 來(lái)產(chǎn)生一些測(cè)試文字。
測(cè)試LPD 設(shè)置:
第17 頁(yè)FreeBSD 使用手冊(cè)
輸入:
# lptest 20 5 | lpr -Pprinter-name
其中printer-name 是/etc/printcap 里的某一臺(tái)打印機(jī)名稱或別名。如果要測(cè)試默認(rèn)
的打印機(jī),那么在執(zhí)行l(wèi)pr 命令時(shí)不要指定-P 這個(gè)參數(shù)。再一次的提醒,如果你要測(cè)試的
是PostScript 打印機(jī),那么請(qǐng)傳送PostScript 程序給打印機(jī),而不要用lptest。你可以
將程序放在一個(gè)文件里然后輸入lpr file。
如果是PostScript 打印機(jī),你應(yīng)該會(huì)得到程序輸出的結(jié)果。如果你是用lptest 的話,
那么你的結(jié)果看起來(lái)應(yīng)該是下面這個(gè)樣子:
!”#$%&’()*+,-./01234
“#$%&’()*+,-./012345
#$%&’()*+,-./0123456
$%&’()*+,-./01234567
%&’()*+,-./012345678
如果要做更進(jìn)一步的測(cè)試,你可以下載更大的程序(給某個(gè)特定打印機(jī)語(yǔ)言的打印機(jī)使
用)或是在執(zhí)行l(wèi)ptest 時(shí)加一些額外的參數(shù)。例如lptest 80 60 將會(huì)產(chǎn)生60 行每行80 個(gè)
字符的測(cè)試數(shù)據(jù)。
如果打印機(jī)并沒(méi)有反應(yīng),請(qǐng)參考疑難解答這一節(jié)。
11.3.1.4.9 疑難解答
用lptest 做過(guò)簡(jiǎn)單的測(cè)試后,你可能會(huì)遇到下列的問(wèn)題。打印機(jī)打了一陣子,但是并
沒(méi)有輸出任何結(jié)果。
打印機(jī)打出上面所列的東西,但是沒(méi)多久就停了。這時(shí),你可能需要按打印機(jī)上的PRINT
REMAINING 或FORM FEED 鈕才看得到輸出的結(jié)果。
如果是這種情況的話,打印機(jī)在打印前可能在等待是否還有更多的資料要打印。要解決
這個(gè)問(wèn)題,你可以讓你的文字過(guò)濾程序送出FORM FEED 字符(或是其它需要的字符)給打印機(jī)。
這個(gè)動(dòng)作讓打印機(jī)打出目前打印機(jī)緩存區(qū)里的資料。同時(shí)也確定每個(gè)工作的最后一頁(yè)可以完
整的輸出,使得下個(gè)工作不會(huì)從前一個(gè)工作的最后一頁(yè)中間輸出。
下面這個(gè)shell script 取代/usr/local/libexec/if-simple。將工作送給打印機(jī)后,
會(huì)再送出一個(gè)form feed 字符:
#!/bin/sh
第18 頁(yè)FreeBSD 使用手冊(cè)
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout. Ignores all filter arguments.
# Writes a form feed character (/f) after printing job.
/bin/cat && printf “/f” && exit 0
exit 2
打出了“階梯效應(yīng)”。
你的結(jié)果可能是這個(gè)樣子:
!”#$%&’()*+,-./01234
“#$%&’()*+,-./012345
#$%&’()*+,-./0123456
這時(shí)你已經(jīng)成為因?yàn)閾Q行字符沖突而產(chǎn)生的階梯效應(yīng)受害者。UNIX 風(fēng)格的操作系統(tǒng)只
使用ASCII 碼10,line feed (LF) 作為換行字符。MS-DOS、OS/2 以及其它的操作系統(tǒng)使用
兩個(gè)字符ASCII 碼10 以及ASCII 碼13 (稱做carriage return 或CR)。很多打印機(jī)使用MS-DOS
的表示法來(lái)代表?yè)Q行字符。
當(dāng)你用FreeBSD 打印時(shí),你的文件只用line feed 字符換行。當(dāng)打印機(jī)看到一個(gè)line feed
字符時(shí),將紙卷了一行,仍然從同一個(gè)位置繼續(xù)往后打印。這就是為什么要用carriage
return 字符的原因:將下一個(gè)字的打印位置移到紙張的最左邊。
FreeBSD 希望你的打印機(jī)可以:
打印機(jī)收到CR 打印機(jī)打印CR
打印機(jī)收到LF 打印機(jī)打印CR + LF
有一些方法可以達(dá)到這個(gè)目地:
1. 用打印機(jī)上的開(kāi)關(guān)或控制面板設(shè)置這些字符的處理方式。請(qǐng)查閱你的打印機(jī)手冊(cè)并做正
確的設(shè)置。
注意: 如果你的計(jì)算機(jī)安裝了除了FreeBSD 外的操作系統(tǒng),你也許得常常重新
設(shè)置打印機(jī)處理CR 和LF 的設(shè)置。因此,你可能會(huì)希望使用下面其中之一的方
第19 頁(yè)FreeBSD 使用手冊(cè)
法:
2. 讓FreeBSD 的串口驅(qū)動(dòng)程序自動(dòng)將LF 轉(zhuǎn)換成CR+LF。當(dāng)然,你的打印機(jī)只能在串行口
上。如果要打開(kāi)這個(gè)功能,只要在/etc/printcap 設(shè)置文件里為你的打印機(jī)用fs 關(guān)鍵詞設(shè)
置CRMOD 這個(gè)位即可。
3. 送一個(gè)句柄給打印機(jī)告訴它暫時(shí)把LF 字符做額外的處理。請(qǐng)參閱你的打印機(jī)手冊(cè)以了
解你的打印機(jī)是否支持此功能。如果你找到適用的句柄,修改你的文字過(guò)濾程序先送出這些
句柄,再送出要打印的工作。
下面這個(gè)文字過(guò)濾程序的例子是使用Hewlett-Packard PCL 句柄。先讓打印機(jī)將LF 視
為L(zhǎng)F 和CR 處理,再送出工作。最后,再送出將整頁(yè)送出的句柄。這個(gè)過(guò)濾程序應(yīng)該可以應(yīng)
付大部分Hewlett-Packard 的打印機(jī)。
#!/bin/sh
#
# hpif - Simple text input filter for lpd for HP-PCL based printers
# Installed in /usr/local/libexec/hpif
#
# Simply copies stdin to stdout. Ignores all filter arguments.
# Tells printer to treat LF as CR+LF. Ejects the page when done.
printf “/033&k2G” && cat && printf “/033&l0H” && exit 0
exit 2
而下面這個(gè)/etc/printcap 的例子是設(shè)置一臺(tái)叫做orchid 計(jì)算機(jī)。它在第一個(gè)并口連
接了一臺(tái)叫做teak 的Hewlett-Packard LaserJet 3Si 打印機(jī)。同時(shí),它使用了上述的script
作為它的文字過(guò)濾程序:
#
# /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:/
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:/
:if=/usr/local/libexec/hpif:
第20 頁(yè)每一行都重迭在一起
打印機(jī)從不換行,把每一行都印在同一行上。這個(gè)問(wèn)題和上述的階梯效應(yīng)“相反”。而
且也較罕見(jiàn)。FreeBSD 用來(lái)?yè)Q行的LF 字符被當(dāng)成CR 字符使得打印機(jī)一直回到紙張的最左邊
開(kāi)始打印但卻不換行。使用打印機(jī)上的設(shè)置開(kāi)關(guān)或是控制面板設(shè)置使LF 和CR 字符這樣被處
理:
打印機(jī)會(huì)少打某些字
打印時(shí),打印機(jī)在一行之中會(huì)少打某些字。這個(gè)情況在打印時(shí)可能會(huì)變得愈來(lái)愈嚴(yán)重,
有愈來(lái)愈多的字打不出來(lái)。這是因?yàn)榇蛴C(jī)接收資料的速度無(wú)法跟上計(jì)算機(jī)通過(guò)串行端口送
資料的速度(這個(gè)問(wèn)題在并列端口打印機(jī)上應(yīng)該不會(huì)發(fā)生)。有兩種方式可以解決這個(gè)問(wèn)題:
1. 如果打印機(jī)支持XON/XOFF 流量控制,在FreeBSD 里可以用fs 關(guān)鍵詞來(lái)設(shè)置TANDEM 位。
2. 如果打印機(jī)支持carrier 流量控制,用fs 關(guān)鍵詞來(lái)設(shè)置MDMBUF 位。確定連接打印機(jī)及
計(jì)算機(jī)的連接線可以配合carrier 流量控制使用。
3. 如果打印機(jī)不支持任何一種流量控制,那么在fs 關(guān)鍵詞里試著設(shè)置NLDELAY、TBDELAY、
CRDELAY、VTDELAY 以及BSDELAY 等位的組合以適當(dāng)?shù)难舆t資料送到打印機(jī)。
打出亂碼
打印機(jī)打出看不懂的符號(hào),而不是我們期望中的數(shù)據(jù)。這通常是因?yàn)樾蛄写蛴C(jī)的通訊
參數(shù)設(shè)置不正確而造成的。再檢查一次br 關(guān)鍵詞所設(shè)置的傳輸速率、fs 及fc 關(guān)鍵詞所設(shè)置
的同位檢查。同時(shí)也檢查打印機(jī)是否也使用與/etc/printcap 文件里相同的設(shè)置。
沒(méi)有任何動(dòng)作發(fā)生
如果沒(méi)有任何反應(yīng),那么可能是FreeBSD 的問(wèn)題而不是硬件的問(wèn)題。為你的打印機(jī)在
/etc/printcap 設(shè)置文件里設(shè)置記錄文件(使用lf 關(guān)鍵詞)。下面的例子是用lf 為rattan 這臺(tái)打
印機(jī)設(shè)置記錄文件:
rattan|line|diablo|lp|Diablo 630 Line Printer:/
:sh:sd=/var/spool/lpd/rattan:/
FreeBSD 使用手冊(cè)
打印機(jī)打印打印機(jī)收到
CR CR
CR + LF LF
第21 頁(yè)FreeBSD 使用手冊(cè)
:lp=/dev/lpt0:/
:if=/usr/local/libexec/if-simple:/
:lf=/var/log/rattan.log
然后試著再打印一次,并檢查記錄文件(在我們的例子里,是/var/log/rattan.log 這個(gè)文
件)里是否有出現(xiàn)錯(cuò)誤信息。然后根據(jù)錯(cuò)誤信息來(lái)解決你的問(wèn)題。
如果你沒(méi)有用lf 指定記錄文件,LPD 默認(rèn)是/dev/console 將錯(cuò)誤信息輸出。