Опубликован: 12.11.2008 | Уровень: специалист | Доступ: платный
Лекция 7:

Использование принтеров

Таблица 7.1.
Буква Содержимое строки
= Это отделяющая строка, содержащая id запроса id пользователя и групповой id пользователя, полное количество байтов в исходных (неотфильтрованных) файлах, а также время постановки запроса в очередь. Эти элементы отделяются друг от друга запятыми и расположены следующим образом: id пользователя, групповой id, размер файла и предваряются словом uid, gid и size соответственно
C Количество распечатываемых копий
D Пункт назначения принтера или класса принтеров или слово any
F Имя распечатываемого файла. Эта строка повторя- ется для каждого распечатываемого файла
f Имя используемого формата
H Тип специальной обработки, называемой по буквам ( resume, hold, immediate )
N Тип предупреждения, используемый, когда запрос на распечатку успешно выполнен. Это буква M, если пользователь уведомляется почтой, или W - если пользователь уведомляется сообщением на терминале
O Параметр -o
p Приоритет запроса
P Список распечатываемых страниц
r Присутствует, если пользователь запросил команду LP с параметром -r
S Используемый набор символов
s Выход запроса в виде сочетания индивидуальных битов, выраженных в шестнадцатиричном виде. Несколько битов используется программой Spooler. Наиболее важные биты имеют значение: 0x0004 - медленная фильтрация успешно завершена 0x0010 - распечатка завершена успешно 0x0040 - запрос отменен 0x0100 - запрос не отфильтрован или не распечатан
T Заголовок размещен на заглавной странице
t Тип содержимого, находящегося в файла(ах)
U Имя пользователя, выдавшего запрос на распечатку
X Медленный фильтр, используемый для запроса
Y Список специальных режимов, задаваемых фильтрам, используемым для распечатки запроса
y Быстрый фильтр, используемый для запроса
z Принтер, используемый для распечатки запроса. Он будет отличаться от пункта назначения, если запрос ставится в очередь на любой принтер или класс принтеров, или если запрос был перемещен в другой пункт назначения администратором LP

Хотя LP отвечает большей части требований к распечатке, существуют принтеры, которые не совсем соответствуют способу обработки принтеров сервисом LP.

Вы можете осуществить настройку LP несколькими способами. В этом подразделе рассказывается как вы можете:

  • настроить характеристики портов принтеров;
  • настроить базу данных Terminfo ;
  • написать программу интерфейса.

7.12. Настройка сервиса принтера

7.12.1. Как LP обрабатывает файл запроса

Каждый запрос отсылается в spooling daemon, который следит за всеми запросами. Следящий процесс (демон) создается, когда вы запускаете сервис принтера LP. Этот процесс системы UNIX также отвечает за слежением за состоянием принтеров и медленных фильтров; когда принтер заканчивает распечатку файла пользователя, демон запустит на нем распечатку другого запроса, если он есть в очереди.

Вы можете настроить сервис принтера, если настроите или замените некоторые из элементов процесса.

  1. Для большей части принтеров вам нужно изменить конфигурацию, хранящуюся на диске. Некоторые из наиболее зависимых от конфигурации принтера данные - это характеристики порта принтера: скорость передачи, контроль четности и т.д.
  2. Для принтеров, которые не представлены в базе данных Terminfo, вы можете добавить новый элемент, который описывает возможности принтера. Эта база данных позволяет: просматривать запросы, чтобы гарантировать, что те, которые приняты к распечатке могут быть обработаны требуемым принтером; устанавливать принтеры в состояние, когда у него будет готовность распечатать запрос. Например, если база данных Terminfo показывает, что принтер не в состоянии установить длину страницы, запрошенную пользователем, следящий процесс отвергнет этот запрос. С другой стороны, если она показывает, что принтер может это сделать, то та же самая информация будет использована программой интерфейса для инициации принтера.
  3. Для особенно трудных в работе принтеров или когда вы хотите добавить средства, не обеспеченные поставленным сервисом LP, вы можете изменить стандартную программу интерфейса. Эта программа отвечает за управление принтером: она распечатывает заглавную страницу, инициирует принтер, а также вызывает фильтр для отсылки копий файлов пользователя на принтер.
  4. Чтобы обеспечить связь прикладных программ, используемых в вашей системе, и принтеров, вы можете добавить быстрые и медленные фильтры. Каждый тип фильтра может преобразовывать один набор последовательности переключения кода в другой, а также может обеспечить специальную установку, прервав режимы распечатки, запрошенные пользователем. Медленные фильтры функционируют отдельно с помощью демона, чтобы избежать ограничения принтера. Быстрые фильтры функционируют так, что их вывод идет прямо на принтер, таким образом, они могут управлять работой принтера.

7.12.2. Настройка характеристик порта принтера

Вам следует удостовериться, что характеристики порта принтера, установленные LP, согласуются с установками линии связи принтера. Стандартные установки порта были созданы для работы с типичными файлами системы UNIX и многими принтерами, но они не будут работать со всеми файлами и принтерами. Это не является шагом настройки, т.к. стандартным свойством LP является предоставление вам возможности указать установки порта для каждого принтера. Однако, это является важным шагом в подготовке вашего принтера к работе с LP.

Когда вы добавляете новый принтер, прочтите документацию к нему, чтобы иметь представление о том, что он ожидает от главной машины. Затем изучите команду stty. Она сводит воедино различные характеристики, которые невозможно установить на терминале или в порт принтера.

В табл. 7.2 перечислены параметры команды stty, которые имеют значение для принтеров.

Таблица 7.2.
Параметр stty Значение
evenp Отсылает проверку на четность в 8-м разряде
oddp Отсылает проверку на нечетность в 8-м разряде
-parity Не формирует разряда четности, посылает все 8 разрядов без изменений
110 - 38400 Устанавливает скорость в линии передачи на эту скорость передачи
ixon Разрешает управление потоками XON/XOFF (также известное как START/STOP или DC1/DC3)
-ixon Отключает управление потоками XON/XOFF
-opost Не выполняет "постобработку вывода"
opost Выполняет "постобработку вывода" согласно установкам
onclr Вставляет символ "возврат каретки" перед любым символом "перевод строки"
-onclr Не вставляет символ "возврат каретки"
ocrnl Изменяет символ "возврат каретки" на символ "перевод строки"
-ocrnl Не изменяет символ "возврат каретки" на символ "перевод строки"
-tabs Заменяет метки табуляции на эквивалентное число пробелов
tabs Не заменяет метки табуляции на пробелы

7.12.3. Настройка базы данных Terminfo

LP полагается на страндартный интерфейс и базу данных Terminfo при иницииации каждого принтера и установке выбранного размера страницы, шага расположения символов, шага строки и набора символов. Обычно бывает достаточно сделать правильный ввод элементов в базу данных Terminfo, чтобы добавить новый элемент к LP . Несколько элементов принтеров AT&T поставляются вместе с элементами Treminfo в пакете LP.

Каждый принтер идентифицируется в базе данных Terminfo по короткому имени; этот вид имени идентичен тому, которое используется для установки пременной командного файла TERM. Например, принтер AT&T модель 455 идентифицируется по имени 455.

Если вы не можете найти элемент Terminfo для вашего принтера, вам надо его добавить. Если вы этого не сделаете, вы сможете использовать принтер с LP, но у вас не будет возможности получать автоматический выбор размера страницы, шага и набора символов, и у вас могут возникать трудности с установкой принтера в правильные режимы для каждого запроса на распечатку. Другим вариантом, которым можно воспользоваться вместо обновления элемента Terminfo, это настроить программу интерфейса, используемую с принтером.

В табл. 7.3 пречислены элементы, которые нужно определить, прежде чем добавить новый принтер в базу Terminfo.

Таблица 7.3.
Элемент Terminfo Значение
daisy Принтеру нужен оператор, чтобы изменить набор символов
bufsz Число байтов, помещаемых в буфер перед распечаткой
* cols Число колонок в строке
* it Метки табуляции, используемые вместо пробелов
* lines Число строк на странице
orc Разрешающая способность по горизонтали в единицах на символ
orchi Разрешающая способность по горизонтали в единицах на дюйм
orl Разрешающая способность по вертикали в единицах на символ
orvi Разрешающая способность по вертикали в единицах на дюйм
cps Средняя скорость распечатки в символах
* cr Возврат каретки
cpi Изменение числа символов на дюйм
lpi Изменение числа строк на дюйм
chr Изменение разрешающей способности по горизонтали
cvr Изменение разрешающей способности по вертикали
csnm Список имен набора символов
mgс Очистка всех полей (верхних, нижних и боковых)
* hpa Абсолютная позиция по горизонтали
* cud1 На одну строку вниз
* cuf1 Каретку вправо
swidm Разрешение печати удвоенной ширины
rwidm Запрещение печати удвоенной ширины
* ff Выдача страницы
* is1 Строка инициации принтера
* is2 Строка инициации принтера
* is3 Строка инициации принтера
* if Имя файла инициации
* iprog Полное имя программы инициации
* cud Перемещение кареткии на # строки вниз
* cuf Перемещение кареткии на # строки вправо
* rep Повтор символа # раз
* vpa Абсолютная позиция по вертикали
scs Выбор набора символов
smgb Установка нижних полей на текущей строке
smgbp Установка нижних полей
smgl Установка левых полей в текущей колонке
smglp Установка полей слева
smgr Установка правых полей в текущей колонке
smgrp Установка полей справа
smgt Установка верхних полей на текущей строке
smgtp Установка верхних полей
scsd Запуск определения набора символов
* ht Метка табуляции для следующих 8 пробелов

Те элементы, которые помечены звездочкой ( * ), имеются во всех версиях UNIX System V. Остальные можно добавить только, если вы используете систему UNIX System V версии 3.2 или более поздние.

После того как вы создали новый элемент, вам нужно скомпилировать его в базу данных, используя программу tic. Просто введите следующую команду:

tic filename

где filename - это имя файла, содержащего элемент Terminfo для нового принтера.

Примечание. Сервис принтера LP работает наиболее эффективно, если кэширует информацию из базы данных Terminfo. Если вы добавляете или удаляете элементы из Terminfo или изменяете значения, управляющие установками шагов, шириной и длиной страницы вам следует перезапустить LP, чтобы он использовал новую информацию.

Михаил Байков
Михаил Байков
Россия, Москва, Московский Авиационный Институт, 2009
Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008