Управление нагрузкой через LPT порт. Не печатает принтер через LPT. Рекомендации по настройке принтера Работа WndLpt по сценарию

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

Схема устройства

За исходную схему была взята одна из схем , найденных в Internet и выглядела она вот так:

Но только с небольшим изменением: между 1-ым пином оптопары 4N25 и 2-ым пином LPT был добавлен резистор на 390 Ом, и еще добавлен светодиод для индикации включения. Схема была собрана в тестовом режиме, т.е. просто соединена проводами так как нужно и проверена. В этом варианте она просто включала и выключала старый советский фонарик.
Было решено, что если уже делать управление, то не для одного устройства, а минимум на 4 устройства (из расчёта: одна лампа на столе, люстра на два выключателя, запасная розетка). На данном этапе стало необходимо построение полной схемы устройства, начался выбор различных программ.
Были установлены:

  1. KiCAD
  2. Eagle
Посмотрев все их них я остановился на Eagle, так как в его библиотеке были «похожие» детали. Вот что получилось в нем:

На схеме использован порт DB9 т.е. обычный COM порт, это сделано из соображений экономии как места на плате, так и самих разъёмов (COM"вские у меня были), а так как мы будем использовать только 5 проводников, то этого нам хватит с запасом. Таким образом делаем еще и переходник с DB25 (LPT) на DB9 (COM), в моем случае делается он следующим образом:
LPT 2-9 pin = COM 1-8 pin - это управляющие пины данных;
LPT 18-25 pin (зачастую они соединены между собой) = COM 9 pin - это наша земля.
Так же в схеме используется дополнительное питание на 12В для питания реле, по плану это будет простое китайское зарядное или может быть крона на 9В (одно реле срабатывает нормально, надо проверить на 4 одновременно). Отдельное питание и гальваническая развязка с помощью оптопары используется для того чтобы обезопасить порт компьютера. При желании можно конечно запитаться от 12В блока питания компьютера, но это каждый делает сам и на свой страх и риск.

Необходимые детали для создания устройства
  1. COM порт - 1 шт
  2. коннектор питания - 1 шт
  3. светодиод зелёный - 4 шт
  4. оптопара 4n25 - 4 шт
  5. посадочное место под оптопару (у меня было только на 8 ног) - 4 шт
  6. резистор 390 Ом - 4 шт
  7. резистор 4,7 кОм - 4 шт
  8. транзистор КТ815Г - 4 шт
  9. реле HJR-3FF-S-Z - 4 шт
  10. зажимы на 3 контакта - 4 шт
  11. фольгированный текстолит

Подготовка схемы печатной платы

Попытавшись использовать Eagle для подготовки печатной платы я понял, что это будет сложновато и решил найти более простой вариант. Этим вариантом стала программа sprint layout 5 пусть она и в исполнении для windows, но без проблем запускается в wine под linux. Интерфейс у программы интуитивно понятный, на русском языке и в программе имеется достаточно понятная помощь (help). Поэтому все дальнейшие действия по разработке печатной платы производились в sprint layout 5 (далее SL5).
Хоть и многие используют данную программу для разработки плат своих устройств, в ней не оказалось необходимых мне деталей (даже в куче скачанных коллекций макросов). Поэтому пришлось сначала создать недостающие детали:
  1. COM порт (тот что был не совпал с моим, по отверстиям крепления)
  2. гнездо питания
  3. зажим на три контакта
  4. реле HJR-3FF-S-Z
Вид этих деталей:

После добавления необходимых деталей началось само проектирование печатной платы. Проходило оно в несколько попыток, было их около пяти. Каждый вариант платы печатался на картоне прокалывались отверстия и в них вставлялись детали. Собственно так и было выяснено, что мой COM порт не совпадает с тем который был в SL5. Так же всплыла небольшая ошибка в схеме реле - реально корпус реле был сдвинут на 2-3 мм. Естественно все ошибки были исправлены.
На первом печатном варианте выяснилось еще и не правильное подключение транзистора, были перепутаны два контакта.
После всех исправлений и подгонок получилось плата следующего вида:

В SL5 есть функция «Фотовид» для просмотра платы, вот как она выглядит в нем:

На финальном варианте платы будут еще немного подправлены дорожки, а в остальном она выглядит так же.

В SL5 так же есть удобный вариант печати платы, можно скрывать не нужные слои и выбирать цвет печати каждого слоя, что очень пригодилось.

Подготовка печатной платы

Плату решено было делать методом ЛУТ (лазерно-утюговая технология). Далее весь процесс в фото.

Вырезаем необходимого размера кусок текстолита.

Берем самую мелкую наждачку и аккуратно зачищаем медную поверхность.

После зачистки поверхности её необходимо промыть и обезжирить. Промывать можно водой, а обезжиривать ацетоном (в моем случае это был растворитель 646).
Далее печатаем на лазерном принтере на мелованной бумаге нашу плату, не забыв в принтере установить самую жирную печать (без экономии тонера). Этот вариант получился немного не удачным, так как размазался тонер, но другая попытка была в самый раз.

Теперь необходимо перенести рисунок с бумаги на текстолит. Для этого вырезаем рисунок и прикладываем его к текстолиту, стараемся его выровнять как нужно и после этого прогреваем утюгом. Необходимо тщательно прогреть всю поверхность, что бы тонер расплавился и прилип к медной поверхности. Потом даем плате немного остыть и идём мочить её под струей воды. Когда бумага достаточно хорошо промокнет её необходимо отделить от платы. На плате останется только прилипший тонер. Выглядит это так:

Далее необходимо подготовить раствор для травления. Я использовал для этого хлорное железо. На банке с хлорным железом написано, что раствор необходимо делать 1 к 3. Я немного отступил от этого и сделал 60 г хлорного железа на 240 г воды, т.е. получилось 1 к 4, не смотря на это травление платы происходило нормально, только немного медленнее. Обратите внимание на то, что процесс растворения сухого хлорного железа в воде идёт с выделением тепла, поэтому всыпать его в воду необходимо небольшими порциями и размешивать. Естественно для травления необходимо использовать не металлическую посуду, в моем случае это была пластиковая ёмкость (вроде от селёдки). У меня получился вот такой раствор:

Перед тем как опустить плату в раствор, я с помощью скотча приклеил к её обратной стороне леску, что бы было удобнее доставать и переворачивать плату. Если раствор попадет на руки надо быстро его смыть с мылом (мыло его нейтрализует), но пятна могут все равно остаться, все зависит от конкретных условий. Пятна с одежды вообще не выводятся, но мне повезло этого не проверить на себе. Погружать плату в раствор надо медью вниз и не всю плашмя, а под углом. Время от времени плату желательно очищать от отработки, так как она мешает дальнейшему травлению. Делать это можно при помощи ватных палочек.

Весь процесс травления у меня занял 45 минут, хватило бы и 40 минут, но я был просто занят ещё одним делом.
После травления промываем плату с мылом отрываем скотч с леской и получаем:

Внимание! Не выливайте раствор хлорного железа в раковину (канализацию) - это может повредить металлические детали раковины, да и вообще раствор может ещё пригодиться.
Далее нам необходимо смыть тонер, это успешно делается тем же растворителем 646, который использовался для обезжиривания (долгий контакт растворителя с кожей может её повредить).

Следующим шагом является сверление отверстий. У меня на плате предусмотрены были отверстия 1мм и 1.5 мм изначально, так как найти более тонких свёрл не удалось. Так же найти у нас в городе цанговый патрон для крепления его на электромоторчик не удалось, поэтому все делалось большой дрелью.

Первое устройство подошло

На первый раз я взял только два сверла, а при использовании такой дрели этого оказалось мало. Одно сверло сломалось, а второе погнулось. Все что я успел просверлить в первый день:

На следующий день я купил пять свёрл. И их как раз хватило, так как если они не ломаются (кстати из пятёрки сломал только одно), то тупятся, а при сверлении тупыми - портятся дорожки, медь начинает отслаиваться. После полного сверления платы получаем:

После сверления необходимо провести лужение платы. Для этого я использовал старый способ - паяльник, флюс ТАГС и олово. Хотелось попробовать с использованием сплава Розе, но его не найти у нас в городе.

После лужения получаем следующий результат:

Далее необходимо промыть плату для удаления остатков флюса, так как ТАГС водоотмывной, то делать это можно или водой или спиртом. Я сделал что-то среднее - отмывал старой водкой и протирал ватными палочками. После всех этих действий наша плата готова.

Монтаж деталей

Для проверки правильности платы изначально собираю только одну(из четырёх) линию деталей, мало ли где закралась ошибка.

После монтажа деталей идём и подключаем устройство к компьютеру через LPT, для этого спаян переходник с DB25(LPT) на DB9(COM) в следующем виде:

  • 2 пин DB25 к 1 пину DB9
  • 3 пин DB25 к 2 пину DB9
  • 4 пин DB25 к 3 пину DB9
  • 5 пин DB25 к 4 пину DB9
  • 6 пин DB25 к 5 пину DB9
  • 7 пин DB25 к 6 пину DB9
  • 8 пин DB25 к 7 пину DB9
  • 21 пин DB25 (можно любой с 18 по 25) к 9 пину DB9
Так как в качестве провода использовалась обычная витая пара, то не хватило одного проводка, но для данного устройства достаточно только пяти проводов, так что данный вариант подходит. В качестве включаемой нагрузки у нас выступает простой советский фонарик. Ну и в качестве блока питания - универсальный китайский блок питания (4 коннектора и питание от 3 до 12 в). Вот все в сборе:

А вот уже устройство работает:

На этом закончился ещё один вечер и монтаж остальных деталей был оставлен на следующий день.

А вот и уже полностью собранное устройство:

Ну и небольшое видео о том как это работает (качество не очень, не было чем снять нормально)

Вот и все, осталось только найти нормальный корпус для устройства и запускать его в дело.

Программная часть

Естественно для управления LPT портом нужно какое-то ПО, но так как у меня дома linux, то было решено просто написать простейшую программку самому, а в последствии её уже дописать и адаптировать как надо. Выглядела она примерно так:
#include
#include
#include
#include
#define BASE 0x378
#define TIME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm()");
exit (77);
}
outb (x, BASE);
return 0;
}

Данная программка отправляет в LPT порт 0x0F = 00001111, т.е. подает 1 на 2-5 пины (Data0-Data3), а это и есть наше управляющее напряжение между 2-5 пинами и землей (18-25 пины), таким образом будут включаться все четыре реле. Точно так же действует программа для отправки 0x00 в порт для отключения, просто вместо x отправляется y - outb (y, BASE). Еще можно прочитать состояние порта:
#define BASEPORT 0x378 /* lp1 */
...
printf("статус: %d\n", inb(BASEPORT));
...

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

В последствии программа была доработана так, что бы передавая ей параметры командной строки можно было указывать с каким устройством и что сделать.
Вывод «sw --help»:
Программа для управления реле через LPT порт.
У программы может быть один или два параметра.
Формат параметров: sw [номер устройства] [действие]
номер устройства - от 1 до 8
действие - "on", "off", "st" - включение, выключение, статус
Пример: "sw 2 on" для включения второго устройства или "sw --help" для вывода помощи

PS если кому понадобится, то потом могу где-нибудь выложить файл схемы платы в sl5 и исходник программки управления.

Недавняя реализация простой на FreeBSD, дала почву для развития этой темы. По сути это ее продолжение но немного отделенное по смыслу.
В статье описан способ мониторинга наличия напряжения 220 вольт в электросети через LPT порт.

Статья будет полезна тем, у кого есть ПК с LPT портом, UPS без возможности управления с ПК, желающим корректного завершения работы ОС, вырубания соседних машин и уведомления при отсутствии электричества.

Дано:

UPS без возможности подключения к ПК.
Сервер FreeBSD с LPT портом
Простейшая безопасная схема для подключения 220 к LPT =).
Программа lptmon

Пример работы:

Гдето работает сервер, внезапно пропадает электричество. Cервер и его друзья: конвертер, маршрутизатор, серверы и пр. продолжают работать от UPS.
Cервер, почуяв неладное отправляет об этом смс админу, пишет лог, ждет минуту (вдруг это 5ти секундный сбой) и вырубает другие серверы. Все корректно завершено, данные не утеряны, админ в курсе.
Если электричество появилось, но минута не прошла и сервер не успел вырубиться, он отправляет смс админу что все впорядке и продолжает работать.
Если сервер успел вырубиться, и электричество появилось например через час, то при появлении 220 сервер врубается (через опцию в биосе), загружается, врубает другие сервера через Wake on LAN (прим: настройка Wake on LAN в статье не описывается) и отправляет смс админу о том что все ок.

Инструменты:

FreeBSD + mysql (второе не обязательно, только для лога)
LPT порт
Паяльник, припой, канифоль, провода
Cхема мониторинга 220 (блок питания и оптрон)
программа lptmon

Суть:

У LPT порта есть 5 ног чтения (они же пины) 10,11,12,13 и 15, заметьте 14й тут нет!. Они являются входами и используются принтерами как тумблеры, при событиях например:
кончилась бумага,
принтер занят,
ошибка печати, итд итп.

Они то нам и нужны, к ним можно подключить 5 разных устройств.

Распиновка LPT порта

Под FreeBSD работает программа lptmon которая мониторит эти пины.
Если взять кусок проволоки и замкнуть любой из вышеперечисленных
пинов на землю. (земля - любой с 18 по 25 пин этого же LPT порта) то программа
будет считать что пин включился. Каждый пин, через программу lptmon, может вызывать 3 события при которых можно выполнять комманды или запускать скрипты:
1. Пин включился
2. Пин работает (срабатывает каждую секунду пока пин замкнут)
3. Пин выключился

Собстно lptmon выполняя комманды при событиях от пинов запускает скрипты которые пишут в базу лог срабатывания, текущее состояние устройств подключенных к lpt порту, сохраняет скриншоты с камеры на винт, отправляют смс если нада итд.

План действий

1. Собрать схему, подключить ее к LPT
2. Настроить lptmon
3. Настроить скрипты.

1. Сборка и подключение схемы

Т.к мы будем подключать 220 к порту, необходимо позаботиться о его безопасности. Для этого нужно использовтаь небольшое напряжение, для чего берем блок питания (я нашел на 5в, 2.5А от конвертера) подключаем его к оптрону через резистор и потом уже к LPT.
Оптрон, грубо говоря, работает по принципу: если есть достаточное напряжение и сила тока на 1 и 2 ногах то он замыкает 5 и 4 ноги. Если силы и напряжения не достаточно (когда БП выключен) то он не замыкает 4 и 5 ноги. А если более чем достаточные (например бп переглючил и он стал давать 120вольт) то оптрон сгарает и это не влияет на 4 и 5 ноги (т.е на вторую цепь).
Поскольку оптрон (4n35) штука защитная, имеющая две цепи не связанные между собой, он еще и призван умирать при силе тока большей чем 60мА (это 0.06А, а у моего БП аж 2.5А). То есть, силы тока 2.5А более чем достаточно для того чтоб он испугался и умер. По этому, для того чтобы ограничить силу тока используем резистор. В моем случае это 500ом. Резистор подбирается индивидуально под блок питания. Вычислить резистор можно формулой R=U/I где U - напряжение дающее БП (вольты), I - нужная оптрону сила тока (Амперы) для работы. Сила тока нужная оптрону для замыкания второй цепи лежит в пределах от 0 до 60 мА, Допустим решили подавать ему 1мА для чего расчитаем резистор: R=5в/0.01А, R = 500 следовательно нам нужен резистор 500ом. Можно взять и меньше, 400, 300 ом главное чтоб сила тока не получилась больше 60мА.

Для подключения к LPT был разобран старый шнур от принтера. В корпусе от шнура собраны гнездо для подключения БП и оптрон.
Вот что получилось:

Готовый lpt разьем и черный кабель от БП.


Оптрон с резистором, они внутри разъема


2. Настройка lptmon

Создаем директорию /usr/local/etc/lptmon
качаем архив lptmon.tar.gz с программой lptmon и примерами скриптов и распаковываем:

#mkdir /usr/local/etc/lptmon #cd /usr/local/etc/lptmon #fetch http://zgbox.ru/files/notes/lptmon.tar.gz #tar -xzvf lptmon.tar.gz

Зеркало:

313 26.3kb 2011-06-29 lptmon, скрипты, исходники

В архиве лежит lptmon.c - это исходники программы, писал я ее сам, это моя первая программа на С++ под FreeBSD как и в прочем первая на C =) так что если есть примечения, дополнения - в студию.
Также там лежит сам уже откомпелированный файл lptmon, можно юзать его, установив chmod 777 lptmon если необходимо, а можно откомпелировать исходники коммандой

Теперь программа lptmon будет стартовать с системой, также ее можно стартовать вручную как просто запустив./lptmon так и выполнив rc.d скрипт /usr/local/etc/rc.d/lptmon start или stop
В запуске нет ничего особенного, просто запускается /usr/local/etc/lptmoon/lptmon а при stop убивается коммандой killall lptmon
Но пока не нужно ничего запускать, сначала нужно настроить конфиг, об этом чуть пожже.
Директория testlpt, в ней лежит программа pr22 и ее исходник для тестирования lpt порта. Работает просто: запускается, получает состояния с 10 по 15 пинов и если какойто пин замкнут на землю то выдает pin10 on
у меня в данный момент 10й пин замкнут на что программа отвечает

#./pr22 pin10 on

Можно смело использовать в своих скриптах
Итак собсно пробуем замнкть один или несколько из 10,11,12,13,15 пинов на землю (на любой с 18 по 25 пин) и запустить./pr22
Если программа показывает что замкнутые пин(ы) on значит все ок, если нет - то я хз почему не видит ваш lpt порт, ковыряйте исходники %)

Переходим к настройке самого lptmon.
Итак, исходя из того, что у нас будет подключена схема к 12 пину то сконфигурим так чтоб при событиях 12 пина при старте и запуске выполнялись скрипты 12_start, 12_end.

Ложим конфиг lptmon.config из расспакованного архива в /usr/local/etc/lptmon.config и редактируем любимым редактором, у меня это mcedit от mc.

#cp lptmon.config /usr/local/etc/lptmon.config #mcedit /usr/local/etc/lptmon.config

Это сокращенный, необходимый только для этой статьи конфиг, подробный в архиве.

#конфиг файл lptmon.config программы lptmon #должн лежать в /usr/local/etc/ #в параметрах допускаются табы и пробелы #ковычки не допустимы! #каждый пин может вызывать 3 события (выполнять комманды) при смене состояния: #1. при переходе из пассивного состояния в активное #2. при работе в цикле (срабатыват каждый раз при опросе если пин # в активном состоянии) #3. при переходе из активного состояния в пассивное pin12enable = yes pin12onstart = /usr/local/etc/lptmon/220v/12_start pin12oncycle = /usr/local/etc/lptmon/220v/12_cycle pin12onend = /usr/local/etc/lptmon/220v/12_end

3. Настройка скриптов

Листинг 12_start

#!/bin/sh #скрипт срабатывает когда дали электричество #или загрузился комп #двумя запросами пишем лог в базу и устанавливаем статус on для устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","on",now());" #echo $sql /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass sql="use $db_name ; update objects set status ="on", dtstart=now() \ where obname="$obname ";" /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс админу о том что 220 дали или серв включился /usr/local/etc/lptmon/sms "220v ON "`date +%m.%d-%H:%M:%S`

листинг 12_end

#!/bin/sh #срабатывает когда отключилось 220 db_host=localhost db_pass= db_user=root db_name=security obname=220v #пишем в базу логи и состояние off устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","off",now());" #echo $sql sql="use $db_name ; update objects set status ="off", dtend=now() \ where obname="$obname ";" #/bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс о том что нет электричества и ставим таймер на 60 сек #по завершению которого скрипт 12_cycle вырубит компы /usr/local/etc/lptmon/sms "220v OFF "`date +%m.%d-%H:%M:%S` echo 60 > /usr/local/etc/lptmon/220v/timer

Эти скрипты выполняют по два Sql запроса к mysql. Запросы обновляют текущее состояие устройства с именем 220v в таблице objects и пишут лог в таблицу objects_hist. Дамп структуры таблиц dump_security.sql также лежит в архиве.
Помимо этого скрипты отправляют смс.
Скрипт 12_end записывает цифру 60 в файл /usr/local/etc/lptmon/220v/timer для того чтобы потом скрипт 12_cycle который будет срабатывай каждую секунду пока нет электричества, брал эту цифру и отнимал по единице. Когда станет 0 он запустит программу wudown которая вырубит по сети комп с windows (ip 192.168.97.52) и вырубит сервак коммандой shutdown -p now.
листинг 12_cycle

#!/bin/sh path=/usr/local/etc/lptmon/220v/timer timer=`cat $path ` timer=`expr $timer - 1`; if [ $timer -gt 0 ]; then echo $timer > $path echo $timer else echo "shuttdowning..." /usr/local/bin/wudown 192 .168 .97 .52 1209 shutdown shutdown -p now fi

размещено: 2011-06-29,
последнее обновление: 2011-08-21,

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

Порты персонального компьютера

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

  • Внутренние - для подключения устройств внутри ПК (жесткие диски, видеокарты, платы расширения).
  • Внешние - для подключения внешней периферии (сканера, монитора, клавиатуры, фотоаппарата, флешки).

В данной статье мы рассмотрим один из видов внешнего порта, а именно LPT-port, его принцип работы, подключаемые устройства и современное применение.

Появление LPT-порта

Изначально LPT-port (его еще называют разрабатывался только для подключения к ПК принтеров, это отражено даже в его названии - Line Printer Terminal, построчный принтерный терминал. Но в дальнейшем этот интерфейс стал применяться и для подключения других устройств: сканеров, дисководов и даже компьютеров между собой.

LPT-port был разработан компанией Centronics, занимавшейся в 70-х годах прошлого века производством матричных принтеров. Но уже через 10 лет его стала использовать фирма IBM для подключения своих скоростных устройств. Дело дошло до того, что было несколько вариантов данного интерфейса от разных производителей периферии.

В первоначальной версии этот порт был однонаправленным, то есть мог передавать данные только в одном направлении: от компьютера к периферийному устройству. Но это ограничение вскоре перестало устраивать пользователей, так как на рынок массово начали выходить устройства с возможностью передачи данных в обоих направлениях. Для этого различные производители предлагали свои усовершенствования - двунаправленный, ECP, EPP и другие. Пока в 1994 году не был принят международный стандарт IEEE 1284.

Схема LPT-порта

LPT-порт называется параллельным потому, что передача данных с помощью него осуществляется по нескольким проводникам одновременно, то есть параллельно. Этот интерфейс имеет 8-битную шину для передачи данных, 5-битную шину передачи сигналов и 4-битную шину передачи состояния.

Ниже представлена схема контактов LPT-порта.

Принцип работы LPT-порта

В простейшей конфигурации, чтобы реализовать принцип работы параллельного интерфейса, хватило бы только одиннадцати проводов, а именно: 1 провод на корпус (масса), 2 провода подтверждения и 8 проводов передачи данных. Но, по общепринятому стандарту IEEE 1284, каждый из восьми проводов передачи (2-9) данных имеет отдельное заземление.

Во время передачи данных оба устройства должны сообщать друг другу сведения о своем состоянии. Это реализуется с помощью контактов 18 и 35, на которые подается напряжение 0 В либо 5 В.

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

По контакту 11 передается компьютеру сигнал BUSY, сообщающий, что устройство выполняет действие (занято), обрабатывая ту информацию, что находится в буфере.

По контактам 12-14 передаются сигналы, сообщающие контрольные сигналы о состоянии принтера и конфликтах в его оборудовании.

По проводнику 12 на ПК передается информация о том, что в принтере нет бумаги. Компьютер реагирует на это передачей сигналов по линиям SELECT и ERROR и останавливает печать.

По проводнику 13 на компьютер передается информация о состоянии принтера - включен и готов или выключен и не готов.

По контакту 14 принтеру передается сигнал об автоматическом переводе строки.

По контакту 31 (16) передается сигнал о переводе принтера в начальное состояние и очищается буфер данных, т. е. все данные стираются из памяти принтера.

По контакту 32 (15) передаются все сигналы об ошибках во время передачи данных. Сигналы, передаваемые по этой линии, влияют на все остальные контакты и могут остановить печать. Например, часто возникающая ошибка принтера - Time Out, возникающая, когда принтер занят однотипной работой с данными и не может передать на ПК через сигнал BUSY, что он не готов к получению новых данных. Через некоторое время по линии ERROR на компьютер передается ошибка Time Out и новые данные не передаются. Иначе, при отсутствии сигнала ERROR, происходила бы дальнейшая передача данных, что привело бы к зависанию всей системы.

По контакту 36 (17) передается информация о готовности принтера к работе, например после устранения ошибки.

Режимы работы LPT-порта

Существует несколько режимов работы LPT-порта, которые позволяет использовать стандарт IEEE 1284:

  • SPP (Standard Parallel Port) — представляет собой однонаправленный порт, который отлично совмещается в работе с интерфейсом Centronics.
  • NibbleMode — использование этого порта является возможностью организации двунаправленного обмена данными в режиме SPP, при помощи использования управляющих линий (4 бит) для передачи данных от периферийного устройства к контроллеру.
  • Byte Mode— режим для двустороннего обмена данными, который используется довольно редко. Его применяли в некоторых старых контроллерах до принятия стандарта IEEE 1284.
  • EPP (Enhanced Parallel Port) — над разработкой этого порта работали сразу несколько известных компаний: Intel, Xircom и Zenith Data Systems. По своей работе это двунаправленный порт, который передает данные со скоростью до 2 Мбайт/сек.
  • ЕСР (Extended Capabilities Port) — этот вариант порта появился в результате работы двух компаний: HP и Microsoft. У него появились уже дополнительные возможности, например, возможность аппаратного сжатия данных, присутствие буфера и способность работать в режиме DMA. Также поддерживает работу двунаправленного обмена данными (симметричного), скорость которого может быть до 2,5 Мбайт/с.

Настройка LPT-порта

Настройка LPT-порта происходит в два этапа: предварительная настройка аппаратных средств порта и текущее переключение режимов порта прикладным ПО.

Способ и возможности настройки LPT-порта зависят от его местоположения и вида исполнения. Порты, расположенные на картах расширения, обычно конфигурируются через перемычки на самих платах, а порты, размещенные напрямую на материнской плате компьютера, - через настройки BIOS.

Выборы режимов напрямую или через BIOS сами по себе не приводят к повышению скорости обмена данными между ПК и периферией, а служат для возможности выбора драйвером оптимального режима работы. Но драйверы современных устройств сами автоматически выставляют наиболее эффективные режимы работы параллельного порта, поэтому ручная настройка в большинстве случаев уже не требуется.

Виды реализаций LPT-порта

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

  • PCI - LPT-port. Переходник между LPT-портом и более современным разъемом PCI.
  • PCI2 - LPT-port (PCI-Ex. 2.0). Переходник между LPT-портом и разъемом PCI-Ex.2.0
  • USB - LPT-port. Переходник между LTP-портом и современной версией широко используемого USB-разъема.

Современное применение LPT-порта

Из-за способности параллельной передачи данных такого порта, в 70-х - 80-х годах он зарекомендовал себя одним из самых быстроработающих интерфейсов компьютера. Поэтому он использовался даже для соединения 2-х компьютеров между собой. Но эта же особенность накладывает и ограничение на максимальную длину кабеля из-за возникающих помех в соседних проводниках. Длина не может превышать 5 м, иначе искажения сигналов превышают допустимые для корректного распознавания данных.

C появлением более скоростных интерфейсов актуальность LPT-порта сошла на нет. Второе дыхание ему придали радиолюбители, которые используют его для управления собранными схемами (освещение в доме, светомузыка и другие устройства).

Приветствую, вас друзья! Сегодняшнюю статью я хочу посветить старым принтерам, которые подключатся с помощью LPT кабеля. А точнее, хочу более подробно раскрыть тему о том, почему может не печать принтер подключены по LPT соединению, и что можно предпринять для того, что бы принтер начал работать нормально.

Конечно на дворе сегодня 21-й век, в котором уже даже не выпускаются подобные принтеры, также как и на материнских платах, более новых моделей, порт LPT тоже исчез. Это конечно всё верно, но, даже в наше время сейчас у многих подобные принтеры ещё есть и используются, при этом полностью в рабочем состояние, с отличным качеством печати.

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

Поэтому, сейчас я рассмотрю самые основные проблемы, рекомендации и советы, которые помогут настроить ваш аппарат и понять почему принтер не печатает через LPT кабель.

Список самых популярных причин, почему не печатает принтер подключённый по LPT

  • Первым номером в этом списке, является проверка кабеля. Да-да банально, но все же как ни крути сначала проверяем на целостность наш кабель LPT. А именно, что бы на нем не было различных физических повреждений, так же, обратите внимание непосредственно на сами коннекторы, которые подключаются к принтеру и компьютеру, они должны быть тоже в хорошем состояние, без каких либо поломанных частей или креплений.
  • Следующей причиной почему может не печатать принтер подключенный по LPT – это не плотно подсоединён кабель к LPT порту на задней стенке системного блока. На крепление по обеим сторонам присутствуют 2 винта, которые вам нужно обязательно, подключив LPT, закрепить его с помощью отвёртки.Как два незакрепленных винтика могут повлиять на работу принтера? Смотрите, ну например, так, кабель который вы подключили, через время чуть отошел, вследствие чего соединение между устройствами уже не полноценное. В результате, ваш принтер в списке устройств будет отображать состояние «Подключен » но, на самом деле печать не будет работать.

    Этот вариант проверен мной уже не раз на практике, так что такое бывает и очень даже часто, рекомендую не относится к этому совету легкомысленно, а обязательно принять его во внимание.
  • Итак, идем дальше. Третей причинной из-за которой не печатает принтер подключенный по LPT является драйвера. В начале, я упоминал о том, что многие принтеры уже не поддерживаются производителями в виде программного обеспечения, что является очень не удобный для того чесла потребителей которые до сих порт используют подобные устройства.

    Так вот, если у вас Windows 7,8 или 10, рекомендую заходить на сайт производителя и качать от туда драйвера для Windows Vista. Хоть эти операционные системы разные, но архитектура у них одна поэтому, все драйвера, которые идут на Vista подойдут и для остальных более новых систем.Этот вариант я тоже практикую постоянно и он ни разу меня ещё не подводил, принтеры которые не печатали по LPT, начинали работать как ни в чём не бывало.
  • Если вы всё-таки не нашли нужный вам драйвер для вашего устройства (Например: HP LaserJet 5L или 4L ) и вам не подошли, то программное обеспечение, которое заранее установлено в операционной системе, тогда я, вам рекомендую, попробовать скачать «универсальный драйвер для печати ».

    Как правило, подобные драйвера присутствуют у всех производителей принтеров и МФУ. Заметил такую штуку, что при обращение в техническую поддержку с проблемой связанной с драйверами (Например, не можете найти нужный драйвер ), тех. служба сразу же рекомендует попробовать и проверить результат.Скажу от себя, что иногда он помогает, но, попадаются случаи, когда установив этот драйвер, с принтером ничего не происходит и он продолжает молчать как и ранее.Но всё же, если у вас не печатает принтер подключенный по LPT и вы не можете найти нужное вам программное обеспечение, тогда обязательно скачайте и попробуйте тот универсальный драйвер, который вам предложит производитель вашего принтера. Возможно вы окажитесь счастливчиком и он вам поможет, но может быть и на оборот, так что не огорчайтесь.
  • Попробуйте подключить другой LPT кабель. Конечно, если вы не нашли на основном кабеле ни одного повреждения о которых я говорил в первом пункте, тогда скорей всего с ним всё нормально. Но все же, если у вас есть такая возможность как взять совсем другой LPT и подключить его, тогда сделайте это, да бы полностью исключить этот вариант неисправности устройства
  • Иногда, причиной по которой не печатает принтер подключенный по LPT капелью, является неправильная настройка принтера при первом его подключение. А именно, я имею веду тот момент, когда вы начинаете , у вас просят выбрать порт к которому подключено устройство, вам нужно однозначно выбрать LPT1 (Так как на материнской плате обычно присутствует только один порт LPT ).

    Многие по случайности выбирают LPT2 или LPT 3, что неверно и в результате в дальнейшем тратят уйму времени на то, что бы разобраться в чем была ошибка из-за которой не печатает принтер и как её исправить. Так что при выборе порта будьте внимательны, и обязательно выбирайте LPT 1, и тогда всё у вас будет работать нормально.
  • Ну и в заключительном пункте, расскажу о такой штуке, как Parallel port, с помощью которого и подключается принтер к компьютеру. Данный порт включается, отключается и полностью настраивается в БИОСе, кстати, именно из-за этих настроек иногда принтер подключённый по LPT и не печатает.Дело в том, что на некоторых материнках Parallel port по умолчанию отключен и принтер начинает печатать только после его включения. Но, чаще всего это происходит в тех случаях, когда , и все установки сбрасываются к заводским, как в общем и настройки порта.

    В результате при следующем включение принтер уже не будет печатать так, как нужный порт, будет попросту отключен в меню BIOS. Поэтому, и проверяем не отключен ли там нужный нам Parallel por, если стоит «Disable», тогда включаем его и радуемся работе принтера.

Хочу заметить, что данная статья не является пошаговой инструкцией, а просто советами, которыми можно воспользоваться при настройке вашего устройства. Возможно именно эти советы вам и помогут разобраться, почему не печатает ваш принтер который был подключен по LPT.