新闻中心

FreeBSD handbook中文版 11 打印 (1)基本设置11.3 基本设置

 让LPD 可以配合打印机工作,你需要同时设置好你的打印机以及LPD。设置分为两大部 
分: 
1. 简单的打印机设置这一节将告诉你如何连接打印机,并设置LPD 打印纯文本的文 
件。 
2. 高级打印机设置这一节将告诉你如何让打印机打出各种不同格式的文件、header 
pages、通过网络打印、设置访问权限以及统计打印机的使用情况。 
11.3.1 简单的打印机设置 
这一节将说明如何连接打印机及设置LPD。包括: 
硬件设置这一节说明如何将打印机接到计算机上的连接端口。 
软件设置这一节说明如何撰写LPD spooler 的设置文件/etc/printcap 。 
如果你要设置的是网络打印机,请参考使用网络数据传输接口的打印机这一节。 
虽然这一节叫做“简单的打印机设置”,但其实是挺复杂的。让你的打印机可以配合 
LPD spooler 是设置工作中最难的一部分。一旦你的打印机可以正常工作了,较高级的功能 
如打印header pages 和打印机使用情况统计反而比较容易设置。 
11.3.1.1 硬件设置 
这一节说明有哪些方法可以将打印机连到我们的个人计算机上;有哪些通讯端口、连接 
线以及kernel 的设置。如果你的打印机在你使用的计算机上可以通过其它操作系统来打印, 
你也许可以跳过这一节直接到软件设置那一节。 
11.3.1.1.1 端口和线缆 
几乎所有可以和PC 连接的打印机都能支持下列两种或是其中一种接口: 
第3 页FreeBSD 使用手册 
1. 串行打印机通过串口和计算机传输资料。串行接口的配备及连接线可以容易的取得 
及安装。但是串行接口有时需要较特别的连接线及较复杂的设置。 
2. 并行打印机通过并口和计算机传输资料。并口在市场上很普遍,连接线也很容易找 
得到,但是不容易自己制作。利用并口连接打印机十分的容易,通常不需要设置额 
外的通讯参数。 
并口有时也称做“Centronics”接口,这是根据打印机上面的接头来命名的。 
通常,只有使用PostScript 的打印机才需要用到双向传输。PostScript 打印机可以说 
是十分复杂。事实上,PostScript 的打印工作常常是由程序将工作送到打印机处理后,并 
不打出来,而是将结果再传回计算机。PostScript 也使用双向传输将错误传回计算机。比 
如说PostScript 程序有问题或是打印机卡纸。机器上的使用者可能会需要这些信息。更进 
一步的,PostScript 打印机统计打印情况最好的方式就是使用双向传输。比如说:你可先 
询问打印机启动以来一共打过几张,然后送出使用者要打的东西,打完后再询问一共打了几 
张,由此就可得知得向使用者收多少纸张的钱。 
那么,你该选择哪一种接口呢? 
1. 如果你需要双向传输,那么就选择使用串口。FreeBSD 目前并不支持并口上的双向


传输。 
2. 如果你不需要双向传输,那么,你只要选择你的打印机支持的接口即可,当然最好 
是可以用并行端口,而将串行端口留作其它的用途—比如连接终端机或调制解调器 
—通常并口传输比较快,设置起来也较容易。 
3. 最后,如果还是不知道怎么选的话,就看哪个能用就接哪个吧。 
11.3.1.1.2 并行口 
用Centronics 连接线通过并口连接打印机和计算机。打印机的手册、计算机的手册这 
两者都可以给你足够的安装说明。记住你所使用的并行口。在FreeBSD 里,第一个并行口是 
/dev/lpt0;第二个则是/dev/lpt1,依此类推。 
11.3.1.1.3 串行口 
第4 页FreeBSD 使用手册 
用适当的连接线通过串行口连接打印机和计算机。打印机的手册、计算机的手册这两者 
都可以给你足够的安装说明。如果你不确定你的连线是否为“合适的串行口连接线”,你可 
以试试下面几种不同用途的线: 
1. 连接调制解调器的线。这种线是一个接脚对一个接脚直接对接的。这种线也叫做 
“DTE-to-DCE”连接线。 
2. Null-modem 连接线大部分是一个接脚对一个接脚直接对接,而有少部分接脚相互 
交换(如send data 和receive data);有少部分接脚则是两端都是短路。这种线 
也叫做“DTE-to-DTE”连接线。 
3. 并行打印机连接线,某些不常见的打印机需要这种线。这种线类似null-modem 连 
接线,但是有些信号是送到相对应的接脚而不是两端短路。 
你应当为打印机设置通讯参数,通常可以利用打印机上的控制面板或是DIP 开关设置。 
选择你的计算机和打印机同时支持的最高传输速率(单位为bps,bits per second,也称做 
baud rate)。选择7 或8 的数据位;无、奇数或偶数的同位检查;1 或2 停止位。同时也选 
择流量控制的方式:无、XON/XOFF (也称做“in-band”或“软件”)流量控制。记住你的软 
件设置也要使用同样的值。 
11.3.1.2 软件设置 
这节说明如何设置FreeBSD 下的LPD spooling 系统,使其能打印。 
下列是所需的步骤: 
1. 如果需要的话,设置你的kernel,使该连接端口可被打印机使用。设置Kernel 这 
一节将告诉你需要做些什么。 
2. 如果你使用的是并行口,那么你得设置并口的通讯模式。设置并列端口的通讯模式 
这一节有详细的说明。 
3. 测试操作系统是否可以将资料送给打印机。检查打印机连接状况这节将给你一些关 
于这一方面的建议。 
4. 修改/etc/printcap 以正确设置LPD。/etc/printcap 设置文件将告诉你如何做。 
第5 页FreeBSD 使用手册 
11.3.1.2.1 内核配置 
操作系统的kernel 为了能配合某些设备需要重新编译。而串口和并口就是这些设备之 
一。如果你的kernel 目前并不支持你想用的串口或并口,那么你可能需要将它们加入你的 
kernel 设置并重新编译。如果要检查你的kernel 目前是否支持串口,你可以用这个命令: 
# dmesg | grep sioN 
其中N 是串口的编号,从0 开始计算。如果你得到的结果类似下面这个样子: 
sio2 at 0x3e8-0x3ef irq 5 on isa 
sio2: type 16550A 
表示你的kernel 支持这个通讯端口。 
如果要检查你的kernel 目前是否支持并行口,你可以用这个命令: 
# dmesg | grep lptN 
其中N 是并行口的编号,从0 开始计算。如果你得到的结果类似 
lpt0 at 0x378-0x37f on isa 
表示你的kernel 支持这个通讯端口。 
你可能会需要重新设置你的kernel 使得操作系统可以辨认并使用你连接打印机的并口 
或串口。 
如果要让你的kernel 支持串口,请参考关于重新编译kernel 的那一节。如果要让你的 
kernel 支持并口,请参考关于重新编译kernel 的那一节以及下一节。 
11.3.1.3 为端口新增/dev 下的设备文件 
既然kernel 已经支持你所需的并口或串口,你仍然需要一个程序接口在系统里协助传 
送和接收资料。这也是/dev 里设备文件存在的目的。 
第6 页FreeBSD 使用手册 
如果要在/dev 目录下为你的通讯端口建立相对应的设备文件: 
1. 用su 命令切换成root。 
2. 更改当前的目录到/dev 下: 
# cd /dev 
3. 输入: 
# ./MAKEDEV port 
其中port 是你想要建立的设备文件名称。如果是第一个并口,你可以用lpt0;如 
果是第二个并口,你可以用lpt1,依此类推。如果是第一个串口,你可以用ttyd0 
如果是第二的串口,而用ttyd1;依此类推。 
4. 输入: 
# ls -l port 
以确定你刚刚是否建立成功。 
11.3.1.3.1 为并口设置通讯模式 
当你决定要用并口时,在FreeBSD 下你可以决定要用中断驱动(interrupt-driven)或是 
轮询(polled)的方式与打印机沟通。 
1. 中断驱动是GENERIC kernel 里默认的方式。如果选择这个方式,操作系统将利用 
IRQ 来判断打印机是否已经准备好接收资料。 
2. 而轮询的方式则是由操作系统一直重复地去询问打印机是否已经准备好可以接收 
资料。如果打印机已经准备好了,那么kernel 再将要打印的资料送过去。 
中断驱动的方式较快但是要占用一个IRQ。你可以从上述两者任选一个可以正常工作的 
来使用。设置通讯模式有两种方式:设置kernel 或是使用lptcontrol 这个程序。 
如果要从kernel 里设置: 
第7 页FreeBSD 使用手册 
1. 编辑你的kernel 设置文件。找出或是自行加入lpt0 这一项。如果你要设置使用第 
二个并口,那就加入lpt1 这项。如果是第三个并口就用lpt2,依此类推。 
如果你要设置使用中断驱动模式,那么要指定irq: 
device lpt0 at isa? port? tty irq N vector lptintr 
其中N 是你并口所使用的IRQ 编号。 
如果你要用轮询模式,那么就不要指定irq: 
device lpt0 at isa? port? tty vector lptintr 
2. 将设置文件存储好后,重新编译、安装kernel 并重新启动。你可以参考内核配置那 
一节里更详细的说明。 
如果你想用lptcontrol 来设置通讯模式: 
1. 输入: 
# lptcontrol -i -u N 
将lptN 设置为中断驱动模式。 
2. 输入: 
# lptcontrol -p -u N 
将lptN 设置为轮询模式。 
你可以把上述的命令加到你的/etc/rc.local 文件里使得每次启动时都可以自动设置。 
你可以查看lptcontrol 以得到更多有关的信息。 
11.3.1.3.2 检查打印机的通讯状况在设置spooling 系统前,你应该先确定你的操作系统可以成功地将资料送到你的打印 

机。将打印机的连接和spooling 系统分开来测试会较容易。 
你可以送一些文字来测试你的打印机。打印机应该会马上将它们收到的资料打出来。 
lptest 这个程序会送96 行每行96 个ASCII 文字的资料给你的打印机以协助测试。 
第8 页FreeBSD 使用手册 
使用PostScript(或是其它语言)的打印机测试起来较复杂。我们得先写一个较小的测 
试程序,像下面这样: 
%!PS 
100 100 moveto 300 300 lineto stroke 
310 310 moveto /Helvetica findfont 12 scalefont setfont 
(Is this thing working?) show 
showpage 
注意:上面这个小程序是给使用PostScript 的打印机用的,不能给比如说Hewlett 
Packard 公司的PCL 语言使用。PCL 语言可以让你打印纯文本,同时里面夹杂PCL 特别的命 
令。PostScript 不能直接打印纯文本,因此对于这样的打印机,我们必需做一些特别的设 
置。 
11.3.1.3.2.1 检查一下并口打印机 
这节将告诉你如何检查FreeBSD 是否可以使用接在并口的打印机。 
测试并口上的打印机: 
1. 用su 命令切换成root。 
2. 将资料传送给打印机。 
如果这个打印机可以直接打印纯文本,请使用lptest。输入: 
# lptest > /dev/lptN 
其中N 是你打印机所连接的并列端口。从0 开始计算。 
如果这个打印机使用PostScript 或其它的打印机语言,那么送一个小小的测试程序给 
打印机。输入: 
# cat > /dev/lptN 
然后,一行接着一行,小心的把你的命令打进去,因为你按下ENTER 后,就无法再修改 
了。当你输入完毕后,按CONTROL D 或是其它产生文件结尾字符的按键。或者是你可以将你 
的测试程序放在一个文件里并输入: 
# cat file > /dev/lptN 
第9 页FreeBSD 使用手册 
其中file 就是存储你测试程序的文件名。 
你应该可以看到有一些东西打出来了。如果打出来的资料看起来不大正确,别担心,我 
们等一会就修正它们。 
11.3.1.3.2.2 检查一下串口打印机 
这节将告诉你如何检查FreeBSD 是否可以使用接在串口的打印机。 
测试串口上的打印机: 
1. 用su 命令切换成root。 
2. 编辑/etc/remote 这个文件,并加入下列几行: 
printer:dv=/dev/port:br#bps-rate:pa=parity 
其中port 指的是哪一个串口(ttyd0、ttyd1、等等),bps-rate 指的是该串口的传 
输速度,而parity 是设置打印机是否需要同位检查(这个值可以是even、odd、none 
或zero)。 
下面这个例子是一台连接在串行端口上以19200 bps 传输的,同时不使用同位检查 
的打印机设置方式: 
printer:dv=/dev/ttyd2:br#19200:pa=none 
3. 用tip 命令连上打印机。输入: 
# tip printer 
如果失败的话,再次编辑/etc/remote 这个文件同时以/dev/cuaaN 取代/dev/ttydN。 
4. 将资料传送给打印机。 
如果这个打印机可以直接打印纯文本,请使用lptest。输入: 
~$lptest 
如果这个打印机使用PostScript 或其它的打印机语言, 那么送一个小小的测试程序给 
打印机。一行接着一行,非常小心地将程序输入,因为退格键或是其它编辑时常用的按键, 
第10 页FreeBSD 使用手册 
对打印机可能有特殊的意义。最后你可能要打一个给打印机的文件结尾的字符,让它知道程 
序结束了。对PostScript 的打印机来说,是用CONTROL D 键。 
或者是你可以将你的测试程序放在一个文件里并输入: 
~>file 
其中file 就是存储你测试程序的文件名。用tip 将这个文件送给打印机后,而按文件 
结尾字符。 
你应该可以看到有一些东西打出来了。如果打出来的资料看起来不大正确,别担心,我 
们稍待一会就修正它们。 
11.3.1.4 启用spooler:编辑/etc/printcap 文件 
到目前为止,你的打印机应该已经连接好了,你的kernel 应该也设置无误了,而且你 
也可以传送资料给打印机了。现在,我们应该可以开始设置LPD 来控制打印机了。 
LPD 的设置文件是/etc/printcap。每当spooler 被使用时,LPD spooling 系统就会来读这 
个文件,所以只要这个文件一被修改,马上就会生效。 
编辑printcap 这个设置文件是很简单的。用你喜欢的编辑器对/etc/printcap 这个设 
置文件做修改就可以了。这个文件的格式写法和其它的设置文件如 
/usr/share/misc/termcap 和/etc/remote 是相同的。关于这些设置文件的格式,请参考 
cgetent。 
要建立一个简单的spooler 设置,请按照下列步骤: 
1. 为你的打印机选择一个名字(以及一些方便的别名),并把它们放在/etc/printcap 
这个文件里。请阅读为打印机取名这一节。 
2. 用sh 关键词关闭打印header pages 的功能(默认是打开此功能)。请阅读不打印 
Header Pages 这一节。 
3. 用sd 关键词指定一个目录给spooler 用。请阅读建立Spooling 目录这一节。 
4. 在/etc/printcap 设置文件里用lp 关键词指定打印机连接端口在/dev 下使用的设备 
文件。请阅读辨认打印机设备这一节。如果你的打印机是接在串口,那么你可以用 
fs、fc、xs 以及xc 等关键词来设置通讯参数。请阅读设置Spooler 的通讯参数。 
5. 安装输入文字过滤程序;请参考安装文字过滤程序这一节。 
第11 页FreeBSD 使用手册 
6. 利用lpr 命令打印以测试设置是否正确;请阅读测试及疑难解答这两节。 
注意: 使用特定语言的打印机,比如说PostScrit 打印机,无法直接打印纯文本。上述 
以及下面要介绍的方法将假设你所要打印的文件都是不需要转换就能让打印机直接了解 
的。 
使用者通常会期望它们可以直接将纯文本的资料直接由打印机输出,而使用LPD 打印的 
程序通常也是这么假设的。如果你的打印机使用某个特定的打印机语言,且你希望可以同时 
处理特定打印机语言的资料以及纯文本的资料,那么你应该要另外再多安装一项以前没有提 
到的东西:纯文本转成PostScript(或其它打印机语言)的自动转换程序。在PostScript 打 
印机上打印纯文本这一节将告诉你要怎么做。 
11.3.1.4.1 为打印机命名 
第一就是为你的打印机取一个名字。此外,你也可为你的打印机取很多别名,因此,你 
要取符合功能的名字或是古怪的名字都可以。

 


香港云主机