2. Интерфейсы принтеров и плоттеров
Современные принтеры, печатающие графические изображения (в том числе и текст в графическом режиме) с высоким разрешением, требуют высокоскоростной передачи данных по внешнему интерфейсу. Большинство принтеров имеют традиционный параллельный интерфейс Centronics или более производительный IEEE 1284, что позволяет достигать скоростей передачи 0,15-2 Мбайт/с, в зависимости от производительности компьютера и выбранного режима передачи. Эти же интерфейсы используются и в плоттерах.
Для подключения принтера с параллельным интерфейсом используется LPT-порт в различных модификациях, от традиционного SPP-порта до теперь уже стандартного и эффективного IEEE 1284.
Поначалу все принтеры с параллельным интерфейсом обязательно поддерживали протокол Centronics, а более «продвинутые» вдобавок могли работать и в режиме ЕСР, поддерживая согласование режимов по IEEE 1284. Их инсталляционные программы старались установить драйверы «продвинутых» режимов, если того позволяла ОС и возможности LPT-порта. Теперь ситуация изменилась, и появились принтеры с параллельным интерфейсом, не поддерживающие Centronics. При инсталляции они требуют подключения по «двунаправленному интерфейсу» IEEE 1284 (обычно режим ЕСР), и через LPT-порт в режиме SPP они работать отказываются. С такими принтерами в среде MS DOS без специальных драйверов работать невозможно.
В некоторых принтерах используется последовательный интерфейс RS-232C, RS-422 или «токовая петля», но здесь теоретический предел скорости около 11 Кбайт/с (115 Кбит/с), а практически она едва достигает 1 Кбайт/с (9600 бит/с). Эти принтеры можно подключать к СОМ-порту непосредственно или через адаптер — преобразователь уровня сигналов.
В последнее время стали чаще применять шину USB, однако этот переход не так уж безоблачен: шина USB поддерживается не всеми ОС. Старые приложения (ведь не всегда есть необходимость и возможность перехода на новые), работающие с принтером через функции BIOS Int 17h или непосредственно с регистрами LPT-порта, например для приглашения к подаче бланков, не могут работать с принтером USB даже в среде ОС, поддерживающих USB в полном объеме. Что касается скорости передачи данных, то у USB 1.0 со скоростью 12 Мбит/с скорость передачи данных отнюдь не достигает 1,5 Мбайт/с (12:8) хотя бы из-за накладных расходов шины. В USB 2.0, которая сейчас выходит на рынок, пиковая скорость может достигать 50 Кбайт/с (скорость в шине — 480 Мбит/с), что для принтера пока что более чем достаточно. Однако для этого и принтер, и компьютер должны поддерживать USB 2.0, и между ними не должно быть старых (USB 1.0) хабов.
Принтеры могут иметь интерфейс SCSI (редкий вариант), а также подключаться не к компьютеру, а к локальной сети по интерфейсу Ethernet (10 или 100 Мбит/с). Такое подключение удобно для принтеров коллективного пользования, и при грамотно построенной сети оно не доставляет забот пользователям. Шина Fire Wire для принтеров применяется пока очень сдержанно.
Параллельные интерфейсы — Centronics, IEEE 1284, ИPПP
Параллельный интерфейс Centronics ориентирован на передачу потока байт данных к принтеру и прием сигналов состояния принтера. Этот интерфейс поддерживается всеми LPT-портами компьютеров. Его отечественным аналогом является интерфейс ИPПP -М. Понятие «Centronics» относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему на принтерах. Назначение сигналов интерфейса приведено в табл. 1, а временные диаграммы обмена с принтером показаны на рис. 2.
Таблица 1.
Сигналы интерфейса Centronics


Рис. 2. Передача данных по протоколу Centronics
Передача данных начинается с проверки готовности принтера — состояния линии Busy. Строб данных может быть коротким — доли микросекунды, и порт заканчивает его формирование, не обращая внимания на сигнал Busy. Во время строба данные должны быть действительными. Подтверждением приема байта (символа) является сигнал Ack#, который вырабатывается после приема строба через неопределенное время (за это время принтер может выполнять какую-либо длительную операцию, например прогон бумаги). Импульс Ack# является запросом принтера на прием следующего байта, его задействуют для формирования сигнала прерывания от порта принтера. Если прерывания не используются, то сигнал Ack# игнорируется и весь обмен управляется парой сигналов Strobe# и Busy. Свое состояние принтер может сообщить порту по линиям Select, Error#, PaperEnd — по ним можно определить, включен ли принтер, исправен ли он и есть ли бумага. Формированием импульса на линии Init# принтер можно проинициализировать (при этом он очистит и весь свой буфер данных). Режимом автоматического перевода строки, как правило, не пользуются, и сигнал AutoLF# имеет высокий уровень. Сигнал Selectln# позволяет логически отключать принтер от интерфейса.
Через параллельный порт (LPT) протокол Centronics может быть реализован чисто программно, используя стандартный режим порта (SPP), достигая скорости передачи до 150 Кбайт/с при полной загрузке процессора. Благодаря «продвинутым» режимам порта протокол может быть реализован и аппаратно (Fast Centronics), при этом скорость до 2 Мбайт/с достигается при меньшей загрузке процессора.
Большинство современных принтеров с параллельным интерфейсом поддерживают и стандарт IEEE 1284, в котором оптимальным режимом передачи является ЕСР.
Для подключения принтера требуется кабель Centronics, пригодный для любых режимов параллельного интерфейса. Простейший вариант кабеля — 18-проводный с неперевитыми проводами — может использоваться для работы в режиме SPP. При длине более 2 м желательно, чтобы хотя бы линии Strobe* и Busy были перевиты с отдельными общими проводами. Для скоростных режимов (Fast Centronics, ЕСР) такой кабель может оказаться непригодным — возможны нерегулярные ошибки передачи, возникающие лишь при определенных последовательностях передаваемых кодов. Встречаются кабели Centronics, у которых отсутствует связь контакта 17 разъема PC с контактом 36 разъема принтера. При попытке подключения таким кабелем принтера, работающего в стандарте 1284, появится сообщение о необходимости применения «двунаправленного кабеля». Принтер не может сообщить системе о поддержке расширенных режимов, на что рассчитывает драйвер принтера. Другое проявление отсутствующей связи — «зависание» принтера по окончании печати задания из Windows. Эту связь можно организовать подпайкой дополнительного провода или же просто заменить кабель.
Идеальным вариантом являются кабели, в которых все сигнальные линии перевиты с общими проводами и заключены в общий экран — то, что требует IEEE 1248. Такие кабели гарантированно работают на скоростях до 2 Мбайт/с при длине до 10 м.
В табл. 2 приводится распайка кабеля подключения принтера с разъемом XI типа А (DB25-P) со стороны PC и Х2 типа В (Centronics-III или типа С (миниатюрный) со стороны принтера. Использование общих проводов (GND) зависит от качества кабеля. В простейшем случае (18-проводный кабель) все сигналы GND объединяются в один провод. Качественные кабели требуют отдельного обратного провода для каждой сигнальной линии, однако в разъемах типа А и В для этого недостаточно контактов (в табл. 2 в скобках указаны номера контактов разъема PC типа А, которым соответствуют обратные провода). В разъеме типа С обратный провод (GND) имеется для каждой сигнальной цепи; сигнальным контактам 1-17 этого разъема соответствуют контакты GND 19-35.
Таблица 2.
