int ioctl(int Ifd, 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. Der default beträgt 2, also 0,02
Sekunden. Dies beeinflußt nur den pollenden Treiber.
|
int ioctl(int fd, LPCHAR, int arg) |
|
Setzt die maximale Anzahl von busy-wait Iterationen des pollenden
Treibers, die gemacht werden wenn der Treiber darauf wartet daß der
Drucker bereit wird, auf
arg. Die Zahl sollte erhöht werden falls das Drucken zu langsam ist und
erniedrigt werden, wenn das System zu stark belastet wird. Der Standardwert
ist 1000. Dies beeinflußt nur den pollenden Treiber.
|
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.
Der default ist ignorieren.
|
int ioctl(int fd, LPCAREFUL, int arg) |
|
Falls arg 0 ist, müssen alle out-of-paper-, offline- und Fehlersignale bei allen Schreibzugriffen logisch falsch sein, ansonsten
werden sie ignoriert. Standard ist es, 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, daß 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 1 bis
500 Mikrosekunden vor. Der Impuls darf frühestens eine Mikrosekunde
nach dem Anlegen der Daten gegeben werden, welche mit seinem Ende
übernommen werden, und die Daten müssen noch mindestens eine Mikrosekunde
nach dem Ende anliegen. Der Default ist 0, es werden also keine
zusätzlichen Verzögerungsschleifen ausgeführt. Die Erfahrung hat gezeigt, daß
die verzögerung durch den code selbst ausreicht. Dies gilt für den
Interruptgetriebenen wie für den pollenden Treiber.
|
int ioctl(int fd, LPSETIRQ, int arg) |
|
Dieser
ioctl() benötigt superuser Privilegien.
arg gibt den neuen IRQ an, der Wert 0 schaltet interrupts ab und polling
ein, was auch default ist. Als Seiteneffekt wird der Drucker dabei
zurückgesetzt.
|
int ioctl(int fd, LPGETIRQ, int *arg) |
|
Speichert den zur Zeit genutzten IRQ in
arg. |
int ioctl(int fd, LPGETSTATUS, int *arg) |
|
Speichert den Wert des status port in
arg. Die Bits haben folgende Bedeutung:
LP_PBUSY | invertierter busy Eingang, aktiv high |
LP_PACK | unveränderter acknowledge Eingang, aktiv low |
LP_POUTPA | unveränderter out-of-paper Eingang, aktiv high |
LP_PSELECD | unveränderter selected Eingang, aktiv high |
LP_PERRORP | unveränderter error Eingang, aktiv low |
Siehe auch Dein Drucker Handbuch für die Bedeutung der Signale. Beachte
dabei, daß auch undokumentierte Bits, in Abhängigkeit vom Drucker,
gesetzt werden können.
|
int ioctl(int fd, LPRESET) |
|
Setzt den Drucker zurück. Ohne Argument.
|