Справочник программиста на персональном компьютере фирмы IBM. Принтер


MS DOS может работать с тремя параллельными устройствами (LPT1 - LPT3) и в этой главе показано как управлять ими. Последователь- ные принтеры управляются в точности так же, как и параллельные, за исключением способа, которым данные посылаются на принтер; эта информация приведена в разделе 1 главы 7. Каждое параллельное устройство имеет свой адаптер. Адаптер управляется тремя регист- рами ввода/вывода и адреса портов этих регистров различны для каждого адаптера.       Раздел 1. Управление работой принтера.
        Инициализация  порта  принтера/повторная  инициализация
        принтера.
        Проверка того, что принтер связан с машиной.
        Интерпретация  ошибок принтера и  восстановление  после них.
        Переключение между двумя или несколькими принтерами.
      Раздел 2. Установка спецификаций печати.
        Установка текстового и графического режимов.
        Управление расстоянием между строками.
        Управление движением бумаги.
        Управление положением печатающей головки.
        Установка позиций табуляции.
        Изменение шрифта печати.
        Сравнение возможностей принтеров IBM.
      Раздел 3. Посылка данных на принтер.
        Вывод текстовых или графических данных на принтер.
        Выравнивание правого поля.
        Пропорциональная печать.
        Печать специальных символов.
        Копирование экрана на принтер (дамп экрана).

Глава 6. Принтер.


     Раздел 1. Управление работой принтера.


   Область данных BIOS содержит базовые адреса для
каждого  адаптера.  Базовый адрес соответствует  младшему  адресу
группы  из  трех  адресов  портов.   Базовый  адрес  для  LPT1  -
0040:0008,  для  LPT2 - 0040:000A и т.д.  Какой адаптер  назначен
какому номеру LPT - не определено , как видно из  нижеприведенной
таблицы. По этой  причине  программа,  котрая  прямо адресуется в
параллельный  порт, должна выискивать адреса, которые он  исполь-
зует. Отметим, что при инициализации базовому адресу присваивает-
ся значение 0, когда соответствующий адаптер не установлен.

   Адаптер                  Выходных данных  Статуса  Управления

Монохромная карта (PC/XT/AT)       3BCH        3BDH      3BEH

Адаптер принтера PC/XT
Адаптер принтера PCJr              378H        379H      37AH
Последовательная/параллельная
карта AT (установленная как LPT1)

Последовательная/параллельная      278H        279H      27AH
карта AT (установленная как LPT2)

   Регистр  выходных данных - это тот адрес порта, через  который
проходит каждый байт данных, посылаемый в принтер. Регистр стату-
са  сообщает  различную информацию о  принтере;  процессор  может
постоянно опрашивать его,  чтобы  распознать  момент, когда все в
порядке и можно посылать данные.  Регистр статуса сообщает также,
что произошла ошибка на принтере.  Регистр управления инициализи-
рует адаптер и управляет выводом данных. Он может также подготав-
ливать параллельный порт  для  операций  прерывания,  с тем чтобы
принтер  посылал прерывание к процессору, когда он готов к приему
очередного символа, оставляя процессор  свободным для других дел.
Вот значение битов регистров статуса и управления:

Регистр управления
   бит  0    0 = нормальная установка, 1 = вызывает  вывод  байта
                 данных
        1    0 = нормальная установка, 1 = автоматический перевод
                 строки после возврата каретки
        2    0 = инициализировать порт принтера, 1 = нормальная
                 установка
        3    0 = отмена выбора принтера, 1 = нормальная установка
        4    0 = прерывание принтера запрещено, 1 = разрешено
      5-7    не используются

Регистр статуса
   бит 0-2   не используются
         3   0 = ошибка принтера, 1 = нет ошибки
         4   0 = принтер off-line, 1 = принтер on-line
         5   0 = бумага вставлена, 1 = нет бумаги
         6   0 = принтер подтверждает прием символа, 1 = нормаль-
                 ная установка
         7   0 = принтер занят, 1 = принтер свободен

   Не имеется никаких оснований,  чтобы  любая программа не имела
процедуру  восстановления  при ошибках, возникающих при работе  с
принтером. Хорошо написанная программа должна начинать с проверки
того, что принтер связан с машиной (on line). Если присоединен не
один принтер, то программа должна  позволять пользователю выбрать
с каким из них он будет работать. Кроме того, эта процедура долж-
на восстанавливать ситуацию при любых  ошибках принтера, при этом
хотелось  бы,  чтобы не было необходимости  снова  печатать  весь
документ.

 
« Предыдущая статья   Следующая статья »