Provided by:
manpages-pl_20060617-2_all 
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 portu
równoległego kolejno 0x03bc, 0x0378 and 0x0278. Zwykle prawa dostępu do
plików tych urządzeń wynoszą 220 i należą do użytkownika root i grupy
lp. Porty równoległe 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. Standardowym trybem obsługi portu jest próbkowanie.
OPIS
Urządzenia lp obsługują 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 posiadamy szybką drukarkę możemy
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 s. Parametr ten ma wpływ jedynie w trybie próbkowania.
int ioctl(int fd, LPCHAR, int arg)
Ustawia maksymalną liczbę iteracji aktywnego oczekiwania (busy-
wait), jakie wykonuje sterownik próbkujący czekając aż drukarka
będzie gotowa na otrzymywanie znaków do arg. Jeśli drukowanie
odbywa się zbyt wolno należy zwiększyć tę liczbę; jeśli system
za bardzo zwalnia - należy ją zmniejszyć. Standardową 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 przeciwmym wypadku
przerwie w 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. Ustawienie standardowe polega na ignorowaniu błędów.
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() wymaga uprawnień administratora.
Funkcja pobiera argument typu int zawierający nowe przerwanie
IRQ. Skutekiem ubocznym jest inicjalizacja 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 znazenie:
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 sygnal 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)
Inicjalizuje drukarkę. Nie stosuje się żadnych parametrów.
PLIKI
/dev/lp*
AUTORZY
Sterownik drukarki został napisany przez Jima Weiganda i Linusa
Torvaldsa. Później został on ulepszony przez Michaela K. Johnsona.
Oprogramowanie przerwań wykonał Nigel Gamble. Zmodularyzował go Alan
Cox. LPCAREFUL, LPABORT, LPGETSTATUS dodał Chris Metcalf.
ZOBACZ TAKŻE
mknod(1), chown(1), chmod(1), tunelp(8), lpcntl(8)
1995-01-15 LP(4)