| Сигнал | I/O¹ | Контакт | Назначение |
|---|---|---|---|
| Strobe# | I | 1 | Строб данных. Данные фиксируются по низкому уровню сигнала |
| Data [0:7] | I | 2-9 | Линии данных. Data 0 (контакт 2) — младший бит |
| Ack# | O | 10 | Acknowledge — импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования запроса прерывания |
| Busy | O | 11 | Занято. Прием данных возможен только при низком уровне сигнала |
| PaperEnd | O | 12 | Высокий уровень сигнализирует о конце бумаги |
| Select | O | 13 | Сигнализирует о включении принтера (обычно в принтере соединяется резистором с цепью + 5 В) |
| Auto LF# | I | 14 | Автоматический перевод строки. При низком уровне принтер, получив символ |
| Error# | O | 32 | Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера |
| Init# | I | 31 | Инициализация: сброс в режим параметров умолчания, возврат к началу строки и страницы |
| Select In# | I | 36 | Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса |
| GND | - | 19-30, 33 | Общий провод интерфейса |
¹ I/O задает направление (вход или выход) применительно к принтеру.
Рис. 8.5. Передача данных по протоколу Centronics
Передача данных начинается с проверки готовности принтера — состояния линии Busy. Строб данных может быть коротким — доли микросекунды, и порт заканчивает его формирование, не обращая внимания на сигнал Busy. Во время строба данные должны быть действительными. Подтверждением приема байта (символа) является сигнал Ack#, который вырабатывается после приема строба через неопределенное время (за это время принтер может выполнять какую-либо длительную операцию, например прогон бумаги). Импульс Ack# является запросом принтера на прием следующего байта, его задействуют для формирования сигнала прерывания от порта принтера. Если прерывания не используются, то сигнал Ack# игнорируется и весь обмен управляется парой сигналов Strobe# и Busy. Свое состояние принтер может сообщить порту по линиям Select, Error#, PaperEnd — по ним можно определить, включен ли принтер, исправен ли он и есть ли бумага. Формированием импульса на линии Init# принтер можно проинициализировать (при этом он очистит и весь свой буфер данных). Режимом автоматического перевода строки, как правило, не пользуются, и сигнал AutoLF# имеет высокий уровень. Сигнал SelectIn# позволяет логически отключать принтер от интерфейса.
Через параллельный порт (LPT) протокол Centronics может быть реализован чисто программно, используя стандартный режим порта (
Большинство современных принтеров с параллельным интерфейсом поддерживают и стандарт IEEE 1284, в котором оптимальным режимом передачи является ECP (см. п. 1.3.4).