lp - Zeilendrucker (line printer devices)
ÜBERSICHT
#include <linux/lp.h>
lp[0…2] sind zeichenorientierte Geräte
für Drucker an der parallelen Schnittstelle; ihre Hauptnummer (Major
Number) ist 6, ihre Nebennummern (Minor Numbers) sind 0…2. Die
Nebennummern korrespondieren mit den Basisadressen 0x03bc, 0x0378 und 0x0278
der Druckerports. Normalerweise ist ihr Zugriffsmodus 220, der Besitzer ist
root und die Gruppe lp. Die Druckerports können
entweder im Polling- oder Interrupt-Betrieb benutzt werden. Falls ein
größerer Datendurchsatz erwartet wird, z.B. für
Laserdrucker, sollten Interrupts benutzt werden. Für typische
Matrixdrucker sollte Polling ausreichen. Der Vorgabewert ist Polling.
Die folgenden Aufrufe von ioctl(2) werden
unterstützt:
- int ioctl(int
fd, LPTIME, int arg)
- Wenn der Druckerpuffer voll ist, schläft der Treiber für
arg Hundertstelsekunden, bevor er den Puffer erneut prüft.
Für einen schnellen Drucker sollte dieser Wert niedrig, für
einen langsamen Drucker dagegen hoch gewählt werden. Die Vorgabe
ist 2, also 0,02 Sekunden. Dies beeinflusst nur den abrufenden Treiber
(Polling).
- int ioctl(int
fd, LPCHAR, int arg)
- Setzt die maximale Anzahl der Durchgänge, die der abrufende Treiber
wartet, bis der Drucker bereit ist, ein Zeichen für arg zu
empfangen. Die Zahl sollte vergrößert werden, falls das
Drucken zu langsam ist und verkleinert werden, wenn das System zu langsam
wird. Der Standardwert ist 1000. Dies beeinflusst nur den abrufenden
Treiber (Polling).
- int ioctl(int
fd, LPABORT, int arg)
- Falls arg 0 ist, wird es der Druckertreiber bei Fehlern erneut
versuchen, ansonsten aufgeben. Der Standardwert ist 0.
- int ioctl(int
fd, LPABORTOPEN, int arg)
- Falls arg 0 ist, wird open(2) bei auftretenden Fehlern
abgebrochen, ansonsten werden Fehler ignoriert.
Standardmäßig werden Fehler ignoriert.
- int ioctl(int
fd, LPCAREFUL, int arg)
- Falls arg 0 ist, müssen die Signale
»out-of-paper«, »offline« und
»error« bei allen Schreibzugriffen logisch falsch sein,
ansonsten werden sie ignoriert. Es ist Standard, sie zu ignorieren.
- int ioctl(int
fd, LPWAIT, int arg)
- Setzt die Anzahl von »busy-wait«-Iterationen, die
ausgeführt werden, bevor der Strobe-Impuls beginnt. (Strobe
signalisiert dem Drucker, dass die Daten am Datenport stabil anliegen und
ein neues Zeichen enthalten.) Es werden ebenfalls arg Iterationen
ausgeführt, bevor der Strobe-Impuls beendet wird. Die Spezifikation
gibt eine Impulslänge von 0,5 Mikrosekunden vor. Die Erfahrung hat
gezeigt, dass die Verzögerung durch den Code selbst ausreicht.
Darum ist der Standardwert 0. Er wird für den interruptgetriebenen
wie für den abrufenden Treiber verwendet.
- int ioctl(int
fd, LPSETIRQ, int arg)
- Dieser ioctl(2) benötigt Superuser-Rechte. Das Argument
arg ist die Nummer des neuen IRQs. Der Wert 0 schaltet Interrupts
ab und Polling ein, was auch Standard ist.
- int ioctl(int
fd, LPGETIRQ, int *arg)
- Speichert den zurzeit genutzten IRQ in arg.
- int ioctl(int
fd, LPGETSTATUS, int *arg)
- Speichert den Wert des Statusports in arg. Die Bits haben folgende
Bedeutung:
LP_PBUSY |
invertierter Busy-Eingang, aktiv hoch |
LP_PACK |
unveränderter Acknowledge-Eingang, aktiv niedrig |
LP_POUTPA |
unveränderter »out-of-paper«-Eingang, aktiv
hoch |
LP_PSELECD |
unveränderter Selected-Eingang, aktiv hoch |
LP_PERRORP |
unveränderter Error-Eingang, aktiv niedrig |
- Lesen Sie auch Ihr Drucker-Handbuch für die Bedeutung der Signale.
Beachten Sie, dass abhängig vom Drucker auch undokumentierte Bits
gesetzt werden können.
- int ioctl(int
fd, LPRESET)
- Setzt den Drucker zurück. Ohne Argument.
Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts
Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
finden sich unter https://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Michael Haardt <michael@moria.de>, Martin Eberhard Schauer
<Martin.E.Schauer@gmx.de> und Dr. Tobias Quathamer
<toddy@debian.org> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General
Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite
finden, schicken Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer.