Linux 版 (精华区)

发信人: tcpip (高级草包), 信区: Linux
标  题: 打印及传真 - 3. 核心打印机装置
发信站: 紫 丁 香 (Tue Apr 11 19:08:08 2000) WWW-POST

打印及传真 - 3. 核心打印机装置  


3.1 lp 装置 
假如你已经编译或载入了 lp 装置(cat /proc/devices 的结果可以看到 lp), Linux 核
心 (<=2.1.32) 会提供一个或多个的 /dev/lp0, /dev/lp1, /dev/lp2 装置文件. 这些文
件不是随意指定的, 相反的, 每一个文件皆对应到一个特定的 I/O 地址. 这表示你的第
一部打印机可能是 lp0 或 lp1, 完全视你的硬件情况而定. 两个都试试看吧! 

有些使用者提到如果使用较旧的单向打印机连接线, 就无法侦测到他们的双向打印机连接
埠. 确定你使用了正确的连接线. 

一个打印机埠不能同时载入 plip 和 lp 的驱动程序, 如果你用的是 2.x 或是 1.3.x 版
以后的核心, 你可以用手动或核心的方式选择载入不同的驱动程序. 只要小心的设定中断
等设定, 你应该可以在一个埠上执行 plip, 而在另一个埠上载入 lp 的驱动程序. 曾经
有人修改驱动程序而成功; 我希望能早日听到有人以一个简单的指令完成相同的事情. 

有一个小程序 tunelp, 如果你是 root, 可以用来设定 Linux lp 装置使用的中断 
(interrupt), 轮询速率(polling rate) 和其它的项目. 

若是 1.3.x 版以后的核心编译时包括了 lp 驱动程序, 核心接受 lp= 参数设定中断及 
IO 地址: 

若将 lp 驱动程序编译入核心, 你可以用 LILO/LOADLIN 的命令列来指定使用的
IO 地址及中断.

语法:      lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]

范例:   lp=0x378,0   或   lp=0x278,5,0x378,7 **

要注意的是假如你使用这个功能, 你必须指定 *所有* 要用的打印机埠,
系统不提供预设值. 你可以用 lp=0 来停用内建的驱动程序.

若是在第二版或是晚期 1.3.x 版的核心以载入模组的方式执行, 可以在 insmod 指令的
命令列(或是在 /etc/conf.modules 来模拟核心模式) 以平常的语法来指定 IO 地址和中
断. 参数为 io=port0,port1,port2 和 irq=irq0,irq1,irq2. 请参考 insmod 的在线手
□以取得更进一步的信息. 


**给那些当需要时却总是找不到标准打印机埠地址的人, 地址便如同第二个范例中所示, 
另一个打印机埠 (lp0) 则在 0x3bc. 我不知道一般所用的中断是那一个. 


Linux 并口驱动程序的源代码在 /usr/src/linux/drivers/char/lp.c. 


3.2 parport 装置 (核心版本 >= 2.1.33) 
从 2.1.33 版本後的核心(2.0.30 版核心可取得修正档), lp 装置成为新增加的 
parport 装置的客户端. 增加 parport 装置解决了许多困扰旧有 lp 装置驱动程序的问
题 - 像是可以和其它的驱动程序共用一个连接埠, 可以动态指定可用的并口而不须将装
置档对应到固定的 I/O 地址等等. 

parport 装置的出现使得很多新的并口设备, 像是 Zip 磁盘机, 可携式 CD-ROM 和磁盘
机等等, 的驱动程序得以出现. 其中一些也有提供 2.0.x 核心可用的版本, 到网络上找
找看吧. 


当我使用了 parport 驱动程序後, 我会更完整地探讨它. 目前你可以看一下核心源代码
中的 Documentation/parport.txt. 或者你也可以到 parport web site 看看. 


3.3 序列装置(Serial devices) 
序列装置在 Linux 中通常有个像 /dev/ttyS1 这类的名称. stty 这个工具程序可以让你
查看及设定串行. setserial 可以让你调整更多的属性及设定使用非标准的 IRQ 及 I/O 
地址的串行. Serial-HOWTO 会对 Linux 下的串行做更进一步的探讨. 


如果你使用的是有流量控制的慢速序列打印机, 可能会发现有些报表被截断. 这是因为系
统预定在程序关闭串行 30 秒後, 所有在缓冲区内尚未传送的字符都会被清除. 缓冲区内
可容纳最多 4096 个字符, 假使你的打印机使用流量控制, 而且慢到无法在程序关闭串行
後 30 秒内印出缓冲区内的所有字符, 那么缓冲区内最后的内容就会遗失. 如果 cat 
file > /dev/ttyS2 这个指令可以完整印出较小的文件, 但会截断较长的文件时, 你可能
就是遇到了这种情况. 


30 秒的周期可以用 setserial (2.12 及以后的版本) 指令的 "closing_wait" 选项来调
整. 一台机器通常是在 rc.serial 开机档中调用 setserial 来初始化串行. 可以在这修
改连接打印机的串行的 closing_wait 选项. 

--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: tcpip.hit.edu.c] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.240毫秒