lp(4) Zeilendrucker (line printer devices)

ÜBERSICHT

#include <linux/lp.h>

KONFIGURATION

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 sind ihre Zugriffsrechte 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.

BESCHREIBUNG

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_PBUSYinvertierter Busy-Eingang, aktiv hoch
LP_PACKunveränderter Acknowledge-Eingang, aktiv niedrig
LP_POUTPAunveränderter »out-of-paper«-Eingang, aktiv hoch
LP_PSELECDunveränderter Selected-Eingang, aktiv hoch
LP_PERRORPunverä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.

DATEIEN

/dev/lp*

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 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 <[email protected]> und Martin Eberhard Schauer <[email protected]> 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 <[email protected]>.