?? printing-howto-16.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux Printing HOWTO 中文版: 在 lpd 下使用序列式印表機(jī)</TITLE>
<LINK HREF="Printing-HOWTO-17.html" REL=next>
<LINK HREF="Printing-HOWTO-15.html" REL=previous>
<LINK HREF="Printing-HOWTO.html#toc16" REL=contents>
</HEAD>
<BODY>
<A HREF="Printing-HOWTO-17.html">Next</A>
<A HREF="Printing-HOWTO-15.html">Previous</A>
<A HREF="Printing-HOWTO.html#toc16">Contents</A>
<HR>
<H2><A NAME="s16">16. 在 lpd 下使用序列式印表機(jī)</A></H2>
<H2><A NAME="ss16.1">16.1 設(shè)定 printcap</A>
</H2>
<P>Lpd 在 <EM>/etc/printcap</EM> 中提供了五個可以設(shè)定的屬性,
讓你用來控制印表機(jī)所連接的序列埠的設(shè)定. 閱讀 <EM>
<A HREF="http://www.picante.com/~gtaylor/pht/man/printcap.5.html">printcap</A></EM>
的線上手□(man page), 并請注意 <EM>br#</EM>, <EM>fc#</EM>, <EM>xc#</EM>,
<EM>fs#</EM> 和 <EM>xs#</EM> 的意義. 其中最後的四個屬性是位元組列(bitmap),
用來代表該序列埠的使用設(shè)定. 而 <EM>br#</EM> 屬性只是單純的鮑率(baud rate),
例如 `<CODE>br#9600</CODE>'.
<P>
<P>要將
<A HREF="http://www.picante.com/~gtaylor/pht/man/stty.1.html">stty</A> 的設(shè)定轉(zhuǎn)換為
printcap 的旗標(biāo)設(shè)定(flag settings) 非常簡單. 假使你需要, 請現(xiàn)在就看看 stty
的線上手□.
<P>
<P>你可以用 stty 來設(shè)定印表機(jī)埠, 以便讓你可以將一個檔案 cat 到該埠,
并且使它正確地列印出來. 這兒是我的印表埠 `<EM>stty -a</EM>' 的結(jié)果:
<BLOCKQUOTE><CODE>
<PRE>
dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
-igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase
-tostop -echoprt -echoctl -echoke
</PRE>
</CODE></BLOCKQUOTE>
這□和開機(jī)時序列埠初始化的設(shè)定方式唯一的不同在於 <CODE>-clocal</CODE>, <CODE>-crtscts</CODE>,
和 <CODE>ixon</CODE>. 根據(jù)你的印表機(jī)的流量控制(flow control) 方式, 你的設(shè)定可能會不同.
<P>
<P>實際上, 你是以特殊的方式使用 stty. 因為 stty 的對象是連接在標(biāo)準(zhǔn)輸入(standard
input) 上的終端機(jī)裝置, 你是用如上所示的 `<CODE><</CODE>' 字元, 來使得 stty
處理所指定的序列埠.
<P>
<P>只要你的 stty 設(shè)定正確, `<EM>cat file > /dev/ttyS2</EM>' (在我的例子中)
就可以將檔案送到印表機(jī)了, 請看一下這個檔案
/usr/src/linux/include/asm-i386/termbits.h, 它包含了很多的
#define 和一些 struct (你可能想把它 cat 到印表機(jī) (已經(jīng)可以用了吧, 對不對?),
然後把它當(dāng)做便條紙). 找到下面這一行:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/* c_cflag bit meaning */
#define CBAUD 0000017
</PRE>
</CODE></BLOCKQUOTE>
這一段列出了 <EM>fc#</EM> 和 <EM>fs#</EM> 位元的意義. 你會發(fā)現(xiàn)到那兒的名稱
(在鮑率之後) 和 stty 輸出的結(jié)果其中一行相符合, 我不是說這會很容易嗎?
<P>
<P>找到那些在你的 stty 結(jié)果中前面有減號(-) 的設(shè)定, 把那些數(shù)字(是八進(jìn)位的) 加起來.
這代表了你要清除的位元, 結(jié)果就是你的 <EM>fc#</EM> 能力. 當(dāng)然你也可以直接用
`<CODE>fc#0177777</CODE>' (我就是), 因為你將會在清除之後立刻設(shè)定這些位元.
<P>
<P>現(xiàn)在對那些在 stty 的結(jié)果中沒有減號在前面的設(shè)定 (在這一段中所列出的) 做同樣的事.
在我的例子中, 重要的設(shè)定有 CS8 (0000060), HUPCL (0002000), 和 CREAD
(0000200). 同時也找到代表你的鮑率的旗標(biāo) (我的是 0000015), 把它們統(tǒng)統(tǒng)加起來,
在我的例子中會得到 0002275. 這就是你的 <EM>fs#</EM> 能力 (`<CODE>fs#02275</CODE>'
在我的例子中運作的很好).
<P>
<P>用同樣的方式針對這個標(biāo)題檔(include file) 中的下一段, "c_lflag bits",
做設(shè)定和清除的動作. 在我的例子中我不需要設(shè)定任何東西, 所以只要用
`<CODE>xc#0157777</CODE>' 和 `<CODE>xs#0</CODE>' 就可以了.
<P>
<H2><A NAME="ss16.2">16.2 會掉字的舊型序列式印表機(jī)</A>
</H2>
<P>Jon Luckey 指出有些具有 ten-cent
序列介面和小緩沖區(qū)的舊型的序列式印表機(jī), 當(dāng)使用流量控制時,
說停止就是<EM>真的</EM>表示停止. 他發(fā)現(xiàn)用 <CODE>
<A HREF="http://www.picante.com/~gtaylor/pht/man/setserial.8.html">setserial</A></CODE>
停用他的 Linux 機(jī)器的 16550 序列埠的 FIFO 功能後, 掉字的問題就解決了
(如果你要這樣做, 似乎只要將 uart 的種類指定為 8250 就可以了).
<P>
<HR>
<A HREF="Printing-HOWTO-17.html">Next</A>
<A HREF="Printing-HOWTO-15.html">Previous</A>
<A HREF="Printing-HOWTO.html#toc16">Contents</A>
</BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -