НАИМЕНОВАНИЕ
lp -
устройства
для работы
с
принтерами
ОБЗОР
#include <linux/lp.h>
НАСТРОЙКА
lp[0–2] — это
символьные
устройства
для
параллельных
линейных
принтеров;
они имеют
старший
номер 6 и
младший
номер 0–2.
Младшие
номера
соответствуют
базовым
адресам
портов
принтера 0x03bc,
0x0378 и 0x0278. Обычно
они имеют
режим 220 и
принадлежат
пользователю
root и группе
lp. Вы можете
использовать
порты
принтера
либо с
опросом,
либо с
прерываниями.
Прерывания
рекомендуются,
когда
ожидается
большой
трафик,
например,
для
лазерных
принтеров.
Для
типичных
матричных
принтеров
опроса
обычно
будет
достаточно.
По
умолчанию
используется
опрос.
ОПИСАНИЕ
Поддерживаются
следующие
вызовы 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)
- Перезапускает
принтер.
Аргументы
не
используются.
ПЕРЕВОД
Русский
перевод
этой
страницы
руководства
разработал(и)
Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov
<azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh
<d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>,
Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov
<yuray@komyakino.ru>, Иван
Павлов <pavia00@gmail.com>
и Kirill Rekhov <krekhov.dev@gmail.com>
Этот
перевод
является
свободной
программной
документацией;
он
распространяется
на
условиях
общедоступной
лицензии GNU (GNU
General Public License - GPL,
https://www.gnu.org/licenses/gpl-3.0.html
версии 3 или
более
поздней) в
отношении
авторского
права, но
БЕЗ
КАКИХ-ЛИБО
ГАРАНТИЙ.
Если вы
обнаружите
какие-либо
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
сообщите
об этом
разработчику(ам)
по его(их)
адресу(ам)
электронной
почты или
по адресу
списка
рассылки
русских
переводчиков.