Naprej Nazaj Vsebina

16. Zaporedni tiskalniki pod lpd

16.1 Postavitev v printcap

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`.

16.2 Starejši zaporedni tiskalniki, ki izgubljajo znake

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).


Naprej Nazaj Vsebina