Шаблон для написания программ работы с LPT портами в Windows 9x/2000/XP
Это полностью готовый шаблон – заготовка для Вашей будущей программы работы с LPT портами в ОС Windows 9x/2000/XP работающий с драйвером ввода – вывода LPTWDMIO.
На основе этого шаблона была создана демонстрационная программа XP LPT, которую удобно использовать в качестве отладчика создаваемых Вами программ. Кроме того, Вы имеете возможность использовать код XP LPT и все реализованные в ней технические приёмы в своих разработках используя данный шаблон со встроенными функциями Pin. Шаблон содержит 17 функций, каждая из которых отслеживает логическое состояние своего Pin (Бита). Например, функция Pin2 возвращает значение true если на второй ножке LPT разъёма (это pin N2)присутствует логическая единица = 5 вольт или false если логический 0. Это позволяет очень быстро и просто создавать полнофункциональные программы не вникая в тонкости битовых операций и программирования вообще. Все инверсные биты автоматически инвертируются функциями, поэтому Вы не можете допустить ошибки на этапе проектирования.
Допустим требуется отслеживать состояние датчика подключенного к входному биту LPT порта. Окей, нет ничего проще:
Выбираем 11 pin – это один из пяти входных битов. По умолчанию, согласно стандарту, все входные биты имеют высокий уровень, поэтому датчик, срабатывая, переводит pin N11 в низкий (логический ноль).
Запустите файл проекта Project1.dpr и увидите форму шаблона где установлен только один элемент управления – ComboBox1 служащий переключателем установленных портов. На форме расположена панель Panel1 на которой он и установлен.
Устанавливаем на форму (прямо на Panel1) еще одну панельPanel2 в качестве индикатора и таймер.
Для удобства проверки воспользуемся Pin N2 и программой XP LPT, для управления его логическим состоянием. Для датчика (это может быть резистор 300 – 600 Ом поключенный к 11 ножке и подключающийся на массу для перевода в 0) вставте в код, Pin11 .
Опрашивать датчик будем по таймеру:
[pas]procedure TForm1.Timer1Timer(Sender: TObject);begin
if Pin2 = false then Panel2.Color := clred else Panel2.Color := clgreen;
end;[/pas]
Теперь когда датчик срабатывает – панель 2 красная, иначе – зеленая. Если нужно одной кнопкой установить / снять напряжение пять вольт лог.1 на второй ножке LPT разъёма – Pin2 используем следующую команду:
[pas]procedure Button1Click(Sender: TObject);begin
ButtonPin2;
end;[/pas]
Если нужно установить только логическую 1 = 5в Pin2 , тогда используйте:
[pas]procedure Button1Click(Sender: TObject);begin
if Pin2 = false then ButtonPin2;
end;[/pas]
Если нужно установить только логический ноль (снять 5в) Pin2 , тогда используйте:
[pas]procedure Button1Click(Sender: TObject);begin
if Pin2 = true then ButtonPin2;
end;[/pas]
———————— Работа с режимом EPP —————————————
[pas]procedure TForm1.Button1Click(Sender: TObject);begin
InOut; //– Переключает регистр данных в режим входов / выходов
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CheckBox1.Checked := InMode; //– если регистр данных в режиме входов – тогда галочка end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if InMode = false then InOut; //– Переключает регистр данных в режим входов
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if InMode = true then InOut; //– Переключает регистр данных в режим выходов
end;[/pas]
В принципе, Вы можете перевести любой двунаправленный (ЕРР) порт в режим входов (чтения) записав в регистр контроля (бит 5) число 32 ($20)и перевести обратно в режим выходов (записи) сбросив всё, записав ноль ($0).
Например:
Записываем число 32 ($20) в базовый порт, регистры контроля – 2, в результате на 5 бите повится лог. единица – порт перейдет в режим чтения (на всех восьми битах Pin 2-9 регистра данных будут лог. единицы = 5в – смотрите в XP LPT; перевести их в низкий уровень = лог. 0 можно присоединив на корпус и соотв. Pin (любой из 2-9)резистор 240 – 330 Ом )
begin
Lpt.WritePort (GetCurrentPort,2,$20);
end;[/pas]
————————————————————————————-
Вид до и после компиляции, при желании проверте в Windows XP
Содержимое шаблона:
Как видите, всё очень просто, даже проще чем в проекте PortCoding !
Далее – Шаг2: пишем в порт, читаем с портов, пишем логический индикатор и Pin клавиатуру.