Zaporedni tiskalniki so v lpd
bolj zapleteni.
Strežniku lpd lahko podaste pet atributov, ki jih nastavite v datoteki
/etc/printcap
, in s tem nadzorujete vse nastavitve zaporednih
vrat, na katerih je tiskalnik. Preberite stran referenčnega
priročnika o
printcap in
si poglejte pomen atributov br#, fc#,
xc#, fs# in xs#. Zadnji štirje
od teh atributov so bitne slike, ki pomenijo nastavitve za uporabo
vrat. Atribut br# je preprosto hitrost prenosa v baudih,
npr. ,br#9600
`.
Zelo lahko je preslikavati iz nastavitev
stty v
nastavitev zastavic v printcap. Če morate to storiti, zdaj poglejte
stran o stty
v referenčnem priročniku.
Uporabite stty
za postavitev tiskalniških vrat, tako da lahko
izpišete na njih datoteko (s cat
) in se ta pravilno natisne.
Takole je videti ,stty -a` za moja tiskalniška vrata:
Edine razlike med tem in načinom, kako se vrata inicializirajo ob zagonu, sodina:/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
-clocal
, -crtscts
in ixon
.
Vaša vrata so prav lahko drugačna, odvisno od tega, kako vaš tiskalnik
zganja kontrolo toka.
Pravzaprav uporabljate stty
nekam čudno. Ker
stty
deluje na terminalu, priključenem na standardni vhod, ga
uporabite za obvladovanje danih zaporednih vrat z uporabo znaka
,<
`, kakor zgoraj.
Ko ste enkrat zadeli svoje nastavitve v stty
tako, da ukaz
,,cat file > /dev/ttyS2
`` (v mojem primeru) pošlje datoteko
na tiskalnik, si oglejte datoteko
/usr/src/linux/include/asm-i386/termbits.h
. Ta vsebuje
veliko definicij z #define
in nekaj struktur
struct
(morda boste želeli natisniti to datoteko na
tiskalniku (saj vam deluje, kajne?) in jo uporabili kot papir za
čečkanje). Pomaknite se v razdelek, ki se začenja takole:
Ta razdelek našteva pomen posameznih bitov v fc# in fs#. Opazili boste, da se tamkajšnja imena (po hitrostih prenosa v baudih) ujemajo z eno od vrstic izhoda/* c_cflag bit meaning */ #define CBAUD 0000017
stty
. Vam nisem
rekel, da bo to lahko?
Poglejte, katere nastavitve izhoda stty se začnejo z znakom
,-
`. Seštejte vse take številke (osmiške so). To
predstavlja bite, ki bi jih radi ugasnili, zato je rezultat vaša
zmožnost fc#. Seveda, spomnite se, da boste prižgali
bite takoj, ko jih boste ugasnili, zato lahko le uporabite
,fc#0177777
` (jaz storim tako).
Zdaj napravite isto za tiste nastavitve (naštete v tem
razdelku), ki pred seboj nimajo znaka ,-
` v vašem izhodu
stty. V mojem primeru so pomembni biti CS8 (0000060), HUPCL
(0002000) in CREAD (0000200). Pazite tudi na zastavice za vašo
baudno hitrost (moja je 0000015). Seštejte vse to in v mojem primeru
boste dobili 0002275. To gre v vašo zmožnost fs#
(,fs#02275
` v mojem primeru deluje čisto v redu).
Napravite isto s prižiganjem in ugašanjem za naslednji razdelek
vključne datoteke, ,,c_lflag bits
``. V mojem primeru mi ni
bilo treba nastavljati ničesar, torej uporabim le
,xc#0157777
` in xs#0
`.
Jon Luckey opozarja, da nekateri starejši tiskalniki z zaporednimi
vmesniki za dva stotina in majhnimi vmesnimi pomnilniki zares
mislijo ,,stop``, ko tako pravijo s kontrolo toka. Opazil
je, da je onemogočenje FIFO na njegovih zaporednih vratih Linuxa s
čipom UART 16550 s pripomočkom
setserial
odpravilo težavo izgubljanja znakov (očitno za to le določite tip kot
UART 8250).