Основы программирования LPT для DOS и Win9x
В этой части повествования, я подробно и доступно, расскажу про программирование LPT порта. Почти все описаные ниже примеры будут работать только в DOS и Win9x. В системах WinNT, Win2K и WinXP, это работать не будет, т.к. эти операционные системы, не разрешают напрямую общаться с портом. Теоретическая часть одинакова для всех систем.
Теория:
Как я уже говорил, у lpt порта есть 8 основных выходов - выводы 2-9. Управлять ими не сложно, нужно просто посылать в порт определенное число:
1 выход - 1
2 выход - 2
3 выход - 4
4 выход - 8
5 выход - 16
6 выход - 32
7 выход - 64
8 выход - 128
Чтобы запитать первый выход, нужно послать в порт единицу. Чтобы запитать пятый посылаем 16 и т.п.. Ноль, посланный в порт, погасит все выходы, а число 256 запитает все сразу.
Сразу напрашивается вопрос - как запитать несколько выходов сразу. Ответ - просто сложить коды выходов. Например: - нам нужно запитать выходы 3, 6 и 8, берем и складываем коды этих выводов: 4+32+128=164, посылаем в порт число 164. Так, а теперь погасим один из выходов... например, 6. Сейчас на порт у нас послано 164, отнимем от этого код шестерки(32). Считаем 164-32=132, посылаем в порт число 132 и 6-й выход гаснет.
Сложно? Тогда ещё вариант без вычислений вообще:
Берем обычный калькулятор из windows (calc.exe), выбираем инженерный вариант в меню "вид". Переходим на двоичную систему (bin). Так, теперь если нам нужно запитать выходы 3 и 5, располагаем выходы по порядку от 8 до 1 8-7-6-5-4-3-2-1, теперь заменяем всё, что нужно запитать, на 1, а что должно быть погашено - на 0.
0-0-0-1-0-1-0-0, вводим в калькулятор полученную комбинацию 00010100 и переключаемся назад на десятичную систему (Dec), введенное нами число, меняется на 20. Значит, чтобы запитать выходы 3 и 5 нам нужно послать в порт число 20.
Практика:
Давайте для начала выполним несложные примерчики, так сказать для закрепления знаний. Для этого нам понадобится среда программирования Turbo Pascal, которая так же прекрасно работает и под Windows XP, и уже известное нам устройство для тестирования наших программ.
Для того чтобы послать в порт какое-то число, нужно знать базовый адрес порта. Обычно первый LPT порт находится по адресу 378. Адрес знаем, попробуем послать туда что-нибудь. Запускаем среду программирования Turbo Pascal (перед работой, желательно изучить эту среду программирования). Новички, не пугайтесь, язык очень простой. Профи, не ругайтесь - он ещё не слишком стар и для ДОСа, писать на нем очень удобно.
Uses crt;
Var
data:byte; {переменная DATA типа byte}
Begin
Readln(data) {читаем переменную-ввод ентером}
Port[378]:=data; {посылаем в порт}
End.
Если этот код набрать в Turbo Pascal 7.0 и скомпилировать, то получим простейшую программу для управления портом. В программе нужно ввести нужное число и нажать Enter. Прога пошлет введеное число в порт и закроется. Чтобы узнать какое число сейчас присвоено порту (что там сейчас лежит) можно использовать такой код:
Uses crt;
Var
data:byte; {переменная DATA типа byte}
Begin
data:=Port[378]; {читаем значение порта}
writeln(data); {выводим на экран полученое значение}
End.
Это был пример на Pascal и работать он будет под DOS. В Win9x, а так же последующих клонах, операционной системы Windows. Программа откроется в окне, в режиме эмуляции MSDOS. Для дальнейших экспериментов, предлагаю скачать исходный и исполняемый код программы, "бегущих огней", попробовать в ней разобраться. Программа не сложная, разобравшись с ней, вы получите не плохие навыки работы в среде Turbo Pascal. Исходный код этой программы, представляет собой практически готовый набор используемых возможностей порта, который можно использовать в дальнейшем, в своих разработках.
Вверх | Главная | Далее..