lp -
устройства
для работы
с
принтерами
#include <linux/lp.h>
lp[0–2] are character devices for the parallel line printers; they
have major number 6 and minor number 0–2. The minor numbers correspond
to the printer port base addresses 0x03bc, 0x0378, and 0x0278. Usually they
have mode 220 and are owned by user
root and group
lp. You can
use printer ports either with polling or with interrupts. Interrupts are
recommended when high traffic is expected, for example, for laser printers.
For typical dot matrix printers, polling will usually be enough. The default
is polling.
Поддерживаются
следующие
вызовы
ioctl(2):
-
int ioctl(int fd, LPTIME, int
arg)
- Устанавливает
время
между
опросами
принтера
драйвером
равным arg,
если
заполнен
буфер
принтера.
Если
принтер
быстрый, то
лучше
уменьшить
это число,
а если
медленный,
то лучше
увеличить.
Значение
выражается
в сотых
долях
секунды; по
умолчанию
равно 2, что
означает 0,02
секунды.
Влияет
только на
драйвер
опроса.
-
int ioctl(int fd, LPCHAR, int
arg)
- Устанавливает
максимальное
количество
циклов
равным arg, в
течение
которых
драйвер
опроса
ожидает
готовность
принтера к
приёму
символа.
Если
печать
медленная,
то
рекомендуется
увеличить
это число,
а если
система
начинает
медленно
работать,
то
уменьшить.
По
умолчанию
равно 1000.
Влияет
только на
драйвер
опроса.
-
int ioctl(int fd, LPABORT, int
arg)
- Если arg
равно 0, то
драйвер
принтера
будет
повторять
попытки
при
ошибках, в
противном
случае он
прекратит
работу. По
умолчанию
равно 0.
-
int ioctl(int fd, LPABORTOPEN, int
arg)
- Если arg
равно 0, то
open(2) будет
прерван
при ошибке,
иначе
ошибка
будет
проигнорирована.
По
умолчанию
равно 0.
-
int ioctl(int fd, LPCAREFUL, int
arg)
- Если arg
равно 0, то
для записи
необходимо,
чтобы
сигналы
нехватки
бумаги,
принтер
выключен
или ошибка,
были не
установлены.
По
умолчанию
они
игнорируются.
-
int ioctl(int fd, LPWAIT, int
arg)
- Устанавливает
число
циклов
ожидания в
значение
arg, которые
выполняются
перед
стробированием
принтера
для
получения
только что
записанного
символа, а
также
устанавливает
число
циклов
ожидания
до
остановки
стробирования.
В
спецификации
сказано,
что это
время
должно
равняться
0,5
микросекунды,
но опыт
показал,
что
хватает и
времени
задержки
при
выполнении
программы.
Поэтому
устанавливаемое
значение
по
умолчанию
равно 0.
Используется
как в
драйвере
опроса, так
и драйвере
прерывания.
-
int ioctl(int fd, LPSETIRQ, int
arg)
- Этот ioctl(2)
требует
прав
суперпользователя.
Он
принимает
int,
содержащий
новый
номер IRQ.
Побочный
эффект —
повторный
запуск
принтера.
Если arg
равно 0, то
будет
использован
драйвер
опроса (по
умолчанию).
-
int ioctl(int fd, LPGETIRQ, int
*arg)
- Сохраняет
используемый
в данный
момент
номер IRQ в arg.
-
int ioctl(int fd, LPGETSTATUS, int
*arg)
- Сохраняет
значение
состояния
порта в arg.
Биты имеют
следующее
значение:
LP_PBUSY |
инвертированный
входной
сигнал
занятости,
активен
по
высокому
уровню |
LP_PACK |
неизменённый
входной
сигнал
подтверждения,
активен
по
низкому
уровню |
LP_POUTPA |
неизменённый
входной
сигнал
отсутствия
бумаги,
активен
по
высокому
уровню |
LP_PSELECD |
неизменённый
входной
сигнал
выбора,
активен
по
высокому
уровню |
LP_PERRORP |
неизменённый
входной
сигнал
ошибки,
активен
по
низкому
уровню |
- Обратитесь
к
руководству
принтера
для
выяснения
значения
сигналов.
Заметим,
что в
зависимости
от
принтера
неописанные
биты тоже
могут
иметь
значение.
-
int ioctl(int fd, LPRESET)
- Перезапускает
принтер.
Аргументы
не
используются.
/dev/lp*
chmod(1),
chown(1),
mknod(1),
lpcntl(8),
tunelp(8)
Русский
перевод
этой
страницы
руководства
был сделан
Artyom Kunyov <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Katrin Kutepova <
[email protected]>,
Konstantin Shvaykovskiy <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]