Управление устройствами при помощи компьютера
используя LPT порт
LPT порт когдато использовался для подключения принтера к компьютеру. Но теперь практически все принтеры подключаются или к USB порту или по Ethernet. LPT порт стал вроде как ненужен. Однако его можно использовать для управления различными устройствами типа освещения или отопления вообщем всего чего только фантазия позволит.
LPT порт содержит несколько регистров в которые можно записывать данные и читать из них. Разряды регистров выведены на разъем порта.
Разряды данных LPT порта
Если в любой разряд регистра записать единичку то на соответствующем контакте разъема порта появляется некоторое напряжение (3.5 - 5 вольт), а если записываем ноль то напряжение пропадает. Подключив к разъему порта устройства можно ими легко управлять. Важно только учесть что устройства должны быть развязаны с цепями порта. Тоесть не должны иметь прямых электрических соединений. Этого можно достичь использованием реле, оптронов, оптореле.
Подключение реле к LPT
Подключение оптореле к LPT
Для записи данных в порт нужна специальная программка. Для Windows ее не трудно найти в сети. Для Linux программку написал сам на C. Исходный код программки можно скачать тут useLPT.c Для того чтобы скомпилировать программку надо выполнить комманду:
gcc -Wall -o useLPT useLPT.c
Или можно скачать скомпилированную (x86) версию программки useLPT
Программка испытана под Mandriva 11.1 и Ubuntu 12.04 .
Чтобы записать какое то значение в порт можно просто дать команду
./useLPT 0xff
где 0xff - байт данных который будет отправлен в порт. При этом на всех линиях порта появится высокий уровень.
Если адрес порта отличается от стандартного 0x378 то его можно задать при помощи ключа -base например для порта с адресом 0x278 команда будет выглядеть так:
./useLPT -base 0x278 0xff
Если надо перевести какие-то разряды порта в 0 (низкий уровень), то можно использовать ключ -clr. Например команда:
./useLPT -clr 0 -clr 7
запишет нули только в нулевой и седьмой разряды.
Аналогичным образом можно использовать ключ -set который наоборот установит указанные разряды порта в единички. Например команда:
./useLPT -set 1 -set 6
запишет единички в 1 и 6 разряды.
Важно что ключ -clr имеет больший приоритет и если в одной команде встретится установка одного разряда порта и в 0 и в 1 то разряд порта будет установлен в 0. Например:
./useLPT -clr 4 -set 4
четвертый разряд будет установлен в логический 0.
Если вместе с ключами -set/-clr указать значение байта данных для записи в порт то значения ключей -set/-clr будут применены не к значению в порту а к байту данных который после этого будет записан в порт. Например:
./useLPT -clr 0 -set 7 0x7f
в порт будет записан байт 0xfe
Чтобы узнать какое значение записано в порт можно использовать ключ -read. При этом будет прочитано состояние порта но никакие данные в порт переданы не будут. Пример:
./useLPT -read
Ключ -help покажет краткую справку по программке.