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.71 projektu Linux
man-pages. Opis projektu, informacje dotyczące zgłaszania
błędów, oraz najnowszą wersję
oryginału 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.71 oryginału.