lp - dispositivo de impressora de linha
lp[0–2] são dispositivos de caracter para
impressoras de linha paralelas; o maior número de dispositivo
é 6 e o menor é 0–2. O menor número de
dispositivo corresponde ao endereço basse da porta da impressora
0x03bc, 0x0378 e 0x0278. Usualmente eles tem modo 220 e são and
propriedadades do super usuário e do grupo lp. Você pode usar
a porta de impressora em um dos dois modos polling ou com
interrupção. Interrupções são
recomendadas quando tráfego alto é esperado, por exemplo para
impressoras laser. Para impressoras matriciais polling é usualmente
suficiente. O padrão é polling.
As seguintes chamadas ioctl(2) são suportadas:
- int ioctl(int
fd, LPTIME, int arg)
- Seleciona a quantia de tempo que o controlador aguarda antes de
reverificar a impressora quando o buffer da impressora mostra-se cheio
para arg. Se você tem uma impressora rápida, diminua
este número, se você tem uma impressora lenta aumente-o.
Isto é um centésimo de segundo, o padrão 2 estando a
0.02 segundos. Ele somente influência o controlador de
polling.
- int ioctl(int
fd, LPCHAR, int arg)
- Seleciona o número máximo de iterações
ocupada-espera o qual faz controlador de polling passar o tempo aguardando
pela impressora para preparar-se para recepção de um
caractere para arg. Se a impressora é muito lenta, aumente
este número; se o sistema também é lento, diminua
este número. O padrão é 1000. Ele somente
influência o controlador de polling.
- int ioctl(int
fd, LPABORT, int arg)
- Se arg é 0, o controlador de impressora irá tentar em
erro, de outro forma ele irá abortar. O padrão é
0.
- int ioctl(int
fd, LPABORTOPEN, int arg)
- Se arg é 0, open(2) irá abortar em erro, de
outra forma erros serão ignorados. O padrão é para
ignorar.
- int ioctl(int
fd, LPCAREFUL, int arg)
- Se arg é 0, então fim-de-papel, fora-de-linha e sinal
de erros são requeridos para ser falso em todas as escritas, de
outra forma eles são ignorados. O padrão é para
ignora-los.
- int ioctl(int
fd, LPWAIT, int arg)
- Seleciona o número de iterações de esperar ocupado
para aguardar antes strobing a impressor para acessar um caractere
justamente escrito, e o número de iterações para
aguardar antes de tornar o strobe desligado novamente, para arg. A
especificação diz que este tempo precisaria ser de 0,5
microsegundos, mas a experiência tem mostrado o intervalo de tempo
causado pelo código é suficiente. Por essas razões, o
valor padrão é 0. Isto é usado por ambos os modos
polling e controlador de interrupção.
- int ioctl(int
fd, LPSETIRQ, int arg)
- Esta ioctl() requer privilégios de super usuário. Isso exige
um inteiro contendo o novo argumento IRQ. Como um efeito colateral, a
impressora deverá ser religada. Quando arg é 0, o
controlador polling irá ser usado, o qual é, além
disso, padrão.
- int ioctl(int
fd, LPGETIRQ, int *arg)
- Armazena oa IRQ atualmente usada em arg.
- int ioctl(int
fd, LPGETSTATUS, int *arg)
- Armazena o valor do status da porta em arg. Os bits tem o seguinte
significado:
LP_PBUSY |
entrada invertida ocupada, alta atividade |
LP_PACK |
entrada reconhecida inalterada, baixa atividade |
LP_POUTPA |
entrada "sem papel" inalterada, alta atividade |
LP_PSELECD |
entrada selecionada inalterada, alta atividade |
LP_PERRORP |
entrada de erro inalterada, baixa atividade |
Refira-se para o manual da sua impressora para entender sobre
os sinais. Note que bits não documentados também podem ser
selecionados, depende da sua impressora.
- int ioctl(int
fd, LPRESET)
- Religa sua impressora. É usado sem argumentos.
O controlador de impressão foi originalmente escrito por
Jim Weigand e Linus Torvalds. Ele tem sido aprimorado por Michael K.
Johnson. O código da interrupção foi escrito por Nigel
Gamble. Alan Cox fez a modularização. LPCAREFUL, LPABORT,
LPGETSTATUS são adições de Chris Metcalf.
André L. Fassone Canova
<lonelywolf@blv.com.br> (tradução)
Carlos Augusto Horylka <horylka@conectiva.com.br>
(revisão)