lp(4)

НАИМЕНОВАНИЕ
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)
    If arg is 0, then the out-of-paper, offline, and error signals are required to be false on all writes; otherwise, they are ignored. The default is to ignore them.

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 <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>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (<debian-l10n-russian@lists.debian.org>).