Strežniku lpd lahko podate 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 štiri 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 izgleda ,stty -a` za moja tiskalniška vrata:
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
Edine razlike med tem in načinom, kako se vrata inicializirajo ob
zagonu, so -clocal
, -crtscts
, in ixon
. Vaša vrata so
prav lahko drugačna, odvisno od tega, kako vaš tiskalnik zganja
kontrolo toka.
Pravzaprav uporabljate stty
na nekam čuden način. Ker stty
deluje na terminalu, priključenem na standardni vhod, ga uporabite za
obvladovanje danih zaporednih vrat z uporabo znaka ,<
`, kot
zgoraj.
Ko ste enkrat zadeli vaše nastavitve v stty
tako, da ukaz
,,cat file > /dev/ttyS2
`` (v mojem primeru) pošlje datoteko
na tiskalnik, poglejte 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:
/* c_cflag bit meaning */
#define CBAUD 0000017
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 stty
. Vam nisem
rekel, da bo to lahko?
Poglejte, katere nastavitve izhoda stty se začnejo z znakom ,-
`.
Seštejte vse takšne š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 stvar 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 UART
8250).