Разработка программных средств подсистемы Interlnk, страница 3

Вызвав функцию 00h прерывания 17h, программа должна проверить биты слова состояния и убедиться в том, что вывод байта произошел без ошибок. Пользователь часто забывает перевести принтер в состояние online, вставить бумагу либо вообще включить принтер. В этом случае целесообразность напомнить пользователю о необходимости выполнения этих действий и затем повторить попытку печати.

Если принтер неисправен, программа должна предоставить пользователю возможность отменить печать.

Следует обратить особое внимание на бит 7 из  байта состояния. Если принтер находится в состоянии offline, функция 00h прерывания INT 17h ожидает некоторое время готовности принтера, после чего, если принтер так и не перешел в состояние готовности, устанавливает бит 1 в байте состояния. Область данных BIOS по адресу 0000h:0478h содержит 4 байта, которые используются в качестве счетчика времени при ожидании готовности принтера.

2) Функция 01h инициализирует принтер.

Регистры на входе:

AH = 01h;

DX = номер параллельного адаптера: 0 - LPT1, 1 - LPT2, 2 - LPT3

Регистры на выходе:

АН = слово состояния принтера

Эта функция выполняет аппаратный сброс принтера. Если вы загрузили в принтер какой-либо шрифт (например, с символами кириллицы), после сброса загрузку шрифта придется выполнять заново. Обычно принтер приходится сбрасывать либо перед настройкой его на заданный режим работы, которая выполняется один раз, либо при изменении этого режима.

3) Слово состояния принтера может быть получено с помощью функции 02h.

Регистры на входе:

AH = 02h;

DX = номер параллельного адаптера: 0 - LPT1, 1 - LPT2, 2 - LPT3

Регистры на выходе:

АН = слово состояния принтера

Эту функцию удобно использовать перед началом печати для определения готовности принтера к работе.

3.1.4 Функции DOS для работы с параллельным адаптером

Операционная система MS-DOS имеет свое средство, предназначенное для работы с принтером. Это функция 05h прерывания INT 21h, которая предназначена для печати символа на стандартном печатающем устройстве PRN.

Регистры на входе:

AH = 05h;

DL = код ASCII символа для печати

Регистры на выходе:

АН = слово состояния принтера

Функция 05h по умолчанию работает с устройством PRN, однако с помощью команды MODE можно переназначить стандартное устройство печати LPT1. Также  функция 05h прерывания INT 21h не возвращает состояния принтера при ошибке ввода-вывода. Вместо этого вызывается стандартный обработчик критических ошибок MS-DOS.

3.1.5 Порты для работы с параллельным адаптером

Каждый параллельный адаптер обслуживается несколькими портами ввода-вывода.

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

Порт 378h. Этот порт, доступный как для записи, так и для чтения, предназначен для вывода данных. Программа может прочитать байт, только что записанный в порт 378h.

Порт 379h. Порт состояния принтера, доступен только для чтения. В табл.4 дано описание разрядов.

Таблица 4

Поля

Описание

0-2

Равно нулю

3

ERROR - Сигнал ошибки, активный уровень - 0, контакт 15

4

SLCT - Принтер выбран, контакт 13

5

PE - Конец бумаги, контакт 12

6

ACK - Готовность принтера, активный уровень - 0, контакт 10

7

BUSY - Если 0, принтер занят, находится в состоянии offline или произошла ошибка, контакт 11

Порт 37Аh. Порт обычно применяется для управления принтером, подключенным к параллельному адаптеру. Он доступен для чтения и записи. В табл.5 дано описание разрядов.

Таблица 5

Поля

Описание

0

STROBE - Строб данных, принимает значение 1 при выводе байта, подключен к 1-му контакту разъема параллельного адаптера

1

AUTO LineFeed - Автоматический перевод строки после символа возврата каретки CR, контакт 14

2

INIT - Сброс принтера, активный уровень - 0, контакт 16

3

SLCT IN - Выбор принтера для работы, контакт 17

Продолжение таблицы 5

Поля

Описание

4

IRQ Enable

Разрешение прерывания от принтера. Если прерывания от принтера разрешены, они вырабатываются, когда сигнал готовности принтера АСК (контакт 10) принимает уровень логического нуля.

5-7

Равно нулю

Для вывода символа на печать необходимо вначале убедиться, что бит 7 порта 379h равен 0, а бит 6 порта 379h равен 1. После этого следует установить код выходного символа в порту 378h.

Затем (не ранее чем через 0,5 мс) бит 0 порта 37Ah необходимо перевести в состояние логического 0. При этом выходной символ запишется во внутренний буфер принтера. Уровень логического 0 необходимо удерживать в течение как минимум 0,5 мс (это время необходимо для записи символа в буфер принтера). После истечения интервала времени бит 0 порта 37Ah необходимо перевести в состояние логической 1.

После установки в бите 0 порта 37Ah логического 0, бит7 порта 379h установится в 1, сигнализируя о том, что принтер занят обработкой полученного символа и временно не может принимать другие символы.

Когда принтер полностью обработает выведенный символ, бит 6 порта 379h установится в 0. Приблизительно через 5 мс после этого бит 7 порта  379h перейдет в 0.

3.1.6 Выбор методов и средств для исследования процессов обмена
информацией в учебном процессе

Для исследования процессов файловой передачи данных целесообразно использовать программную оболочку Norton Commander, так как у нее удобнее интерфейс для пользователя:

-  при подготовке компьютеров к сеансу связи не требуется предварительного выбора ролей компьютеров во время связи;

-  при разрыве связи достаточно на главном компьютере выдать команду Link, после чего в открывшемся боксе подтвердить завершение сеанса, или нажать на клавиатуре подчиненного компьютера комбинацию клавиш Ctrl-Break;

-  нет необходимости редактировать системный файл Config.sys.

Исследовать процессы байтовой передачи данных целесообразно на уровне портов параллельного адаптера ПК, так как:

-  в данном дипломном проекте задан язык высокого уровня Бейсик;

-  при разработке программ на этом языке по реализации байтовой передачи данных с помощью функций BIOS и DOS следует создавать дополнительный файл Interupt.bi;

-  при разработке программ на этом языке по реализации байтовой передачи данных на уровне портов параллельного адаптера в создание дополнительного файла Interupt.bi нет необходимости;

-  функции BIOS и DOS обращаются к регистрам микропроцессора, а студенты к моменту изучения дисциплины "Электронно-промышленные устройства" еще не ознакомлены со структурой микропроцессора.