NAZWA¶
lp - urządzenia drukarek wierszowych
SKŁADNIA¶
#include <linux/lp.h>
KONFIGURACJA¶
Pliki
lp[0–2] są urządzeniami znakowymi
obsługującymi drukarki dołączone do portów
równoległych; numer główny tych urządzeń jest
równy 6, numer podrzędny 0–2. Numery podrzędne
odpowiadają adresom bazowym portu drukarki: 0x03bc, 0x0378 i 0x0278.
Zwykle prawa dostępu do plików tych urządzeń wynoszą
220, a ich właścicielem jest użytkownik root i grupa lp. Porty
drukarki mogą być obsługiwane zarówno przy wykorzystaniu
próbkowania, jak i przerwań. Stosowanie przerwań jest zalecane,
gdy spodziewamy się dużego ruchu, np. wynikającego z
używania drukarki laserowej. W przypadku zwykłych drukarek
mozaikowych wystarczające jest próbkowanie. Domyślnym trybem
obsługi portu jest próbkowanie.
OPIS¶
Obsługiwane są następujące wywołania funkcji
ioctl(2):
- int ioctl(int fd, LPTIME, int
arg )
- Ustawia okres, przez jaki sterownik jest uśpiony,
zanim powtórnie sprawdzi stan drukarki w sytuacji, gdy bufor drukarki
zdaje się być wypełnionym do arg. Jeśli
drukarka jest szybka, można zmniejszyć ten parametr. Jeśli
drukarka jest wolna, należy zwiększyć ten parametr. Jest to
liczba określająca czas w setnych częściach sekundy,
wartość domyślna wynosi 2, co oznacza 0,02 sekundy.
Parametr ten wpływa jedynie na tryb próbkowania.
- int ioctl(int fd, LPCHAR, int
arg )
- Ustawia na argv maksymalną liczbę iteracji
aktywnego oczekiwania (busy-wait), jakie wykonuje sterownik
próbkujący czekając, aż drukarka będzie gotowa na
otrzymywanie znaków. Jeśli drukowanie odbywa się zbyt wolno
należy zwiększyć tę liczbę; jeśli system za
bardzo zwalnia — należy ją zmniejszyć.
Domyślną wartością tego parametru jest 1000. Parametr
ma wpływ na sterownik jedynie w trybie próbkowania.
- int ioctl(int fd, LPABORT, int
arg )
- Jeśli parametr arg jest równy 0, wtedy
sterownik drukarki będzie powtarzał operację po
wystąpieniu błędu; w przeciwnym wypadku przerwie
działanie. Standardową wartością tego parametru jest
0.
- int ioctl(int fd, LPABORTOPEN, int
arg )
- Jeśli arg jest równy 0, funkcja
open(2) zostanie przerwana po wystąpieniu błędu; w
przeciwnym wypadku błąd zostanie zignorowany. Standardowe
zachowanie polega na ignorowaniu błędów.
- int ioctl(int fd, LPCAREFUL, int
arg )
- Jeśli arg jest równy 0, wtedy wymaga
się, aby sygnały "out-of-paper", "offline"
oraz sygnały błędów były puste (false) we
wszystkich operacjach zapisu, w przeciwnym wypadku są ignorowane.
Domyślnie są ignorowane.
- int ioctl(int fd, LPWAIT, int
arg )
- Ustawia na arg liczbę iteracji aktywnego
oczekiwania (busy-wait) przed spróbkowaniem, czy drukarka
zaakceptowała właśnie zapisany znak, oraz liczbę
iteracji, które należy przeczekać przed kolejnym
próbkowaniem. Specyfikacje określają ten czas jako 0.5
mikrosekundy, lecz doświadczenie wykazało, że
opóźnienie spowodowane wykonaniem kodu jest już
wystarczające. Z tego powodu wartością domyślną
dla tego ustawienia jest 0. Jest ono wykorzystywane w sterowniku
zarówno w trybie próbkowania, jak i w trybie przerwań.
- int ioctl(int fd, LPSETIRQ, int
arg )
- To wywołanie funkcji ioctl(2) wymaga
uprawnień administratora. Funkcja pobiera argument typu int
zawierający nowe przerwanie IRQ. Skutkiem ubocznym jest inicjacja
drukarki. Gdy arg jest zerem, to stosowany będzie sterownik z
próbkowaniem; jest to równocześnie zachowanie
domyślne.
- int ioctl(int fd, LPGETIRQ, int
*arg )
- Zachowuje w parametrze arg aktualnie stosowane
przerwanie IRQ.
- int ioctl(int fd, LPGETSTATUS, int
*arg)
- Zachowuje wartość stanu portu w zmiennej
arg. Poszczególne bity mają następujące
znaczenie:
LP_PBUSY |
odwrócony sygnał zajętości, |
|
aktywny w stanie wysokim |
LP_PACK |
niezmienione potwierdzenie wejścia, |
|
aktywny w stanie niskim |
LP_POUTPA |
niezmieniony sygnał braku papieru, |
|
aktywny w stanie wysokim |
LP_PSELECD |
niezmieniony sygnał wyboru, |
|
aktywny w stanie wysokim |
LP_PERRORP |
niezmieniony sygnał błędu, |
|
aktywny w stanie niskim |
Znaczenia sygnałów należy szukać w dokumentacji
drukarki. Należy pamiętać, że dla niektórych
drukarek ustawiane mogą być też nieudokumentowane tu
bity.
- int ioctl(int fd, LPRESET)
- Inicjuje drukarkę. Nie stosuje się żadnych
parametrów.
PLIKI¶
/dev/lp*
ZOBACZ TAKŻE¶
chmod(1),
chown(1),
mknod(1),
lpcntl(8),
tunelp(8)
O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux
man-pages. Opis projektu oraz informacje dotyczące zgłaszania
błędów można znaleźć pod adresem
http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika man
są: Piotr Pogorzelski (PTM) <piotr.pogorzelski@ippt.gov.pl> i
Michał Kułach <michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią projektu manpages-pl;
uwagi, pomoc, zgłaszanie błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją
3.40 oryginału.