Радиоэлектроника начинающим и не только!
Уроки начинающим.
НОВОСТИ
Главная
Введение
Урок-1
Урок-2
Урок-3
Урок-4
Урок-5
Урок-6
Урок-7
Урок-8
Урок-9
Урок-10
Уроки по темам.
Транзисторные УНЧ
Ламповые УНЧ-УМ
Мультивибратор
Схемы начинающим
Библиотека начинающего радиолюбителя
Начинающим
Радио КВ - УКВ
Справочники по радиоэлементам.
Диоды
Стабилитроны

Маркировка

Резисторы-Конденсаторы
Диоды
Стабилитроны
Транзисторы
Измерение параметров электрических цепей.
Измерение напряжения
Проверка транзистора
Радиолюбительские технологии.
Основы пайки
Изготов. печатных плат
Связь КВ-УКВ.
Азбука коротких волн
Приемник прямого усил.
КВ-приемник начинающим
Микроконтроллеры начинающим.
Светодиодное информ. табло на PIC контроллере
Программатор “ICProg 105”
Осваиваем LPT порт
Программирование LPT под DOS
Программирование LPT под Windows
Программирование LPT под WinNT
Вспомогательные радиолюбительские программы.
Вспомогательные программы
Радиолюбительский калькулятор
Онлайн расчет антенн
Рассчет КФ
Мастерская радиолюбителя.
Лабораторный БП
Консультации-предложения.
Форум
Связь с автором

Программирование LPT порта в Delphi, под Win9x, WinXP на основе метода «inpout32»

В этой статье, я хочу подробно остановиться еще на одном методе, программирования LPT порта под Win9x, WinXP. Возможно, кому то он покажется более удобным нежели программирование с помощью драйвера LPTWDMIO, описанного в предыдущей статье. Будем учиться управлять регистрами порта LPT, из программы на Delphi с помощью библиотеки inpout32.dll.
Сразу скачайте файлы проекта (среда программирования: Borland Delphi 5.0 - 7.0).
А теперь рассмотрим, как это приложение сделать. Итак, запускаем Borland Delphi 7.0. Перед нами должна сразу появиться рабочая среда и заготовка формы будущего приложения.

Давайте прикинем, каким будет наше приложение. Наверное, нам хотелось бы иметь возможность указать адрес порта с которым будем работать, значение которое мы захотим туда (в порт) записать и две кнопки: одна предназначена для записи данных в порт, другая для чтения. Сказано - сделано. С верхней панели перетаскиваем на форму нужное количество edit-окошек, статических текстов и кнопок. При выделении нужного элемента на форме справа в окне Object Inspector можно задавать различные свойства для элемента. В итоге сформируйте форму, так как на рис. ниже.

Тестовая программа для программирования LPT порта

Среда программирования Delphi.

Теперь возьмемся собственно за программирование. Для начала нам нужно как-то подсоединить inpout32.dll к нашему проекту. Для этого в Delphi есть несколько вариантов, но остановимся на следующем: в папку где расположен проект программы помещаем только библиотеку inpout32.dll (см. пример в папке Eximp архива). Далее в заголовке программы в секции uses помещаем прототипы функций Out32 и Inp32 со специальной директивой компилятора external, говорящей откуда нужно эти функции брать.

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: word; Data: byte): byte;
stdcall;
external 'inpout32.dll';

Ok. Теперь создадим обработчики на нажатие кнопок. Для этого дважды щелкаем на кнопке в редакторе формы. Нас автоматом переносит к коду функции-обработчика. Рассмотрим сначала функцию для записи данных в порт. Тут особенно сложно ни чего нет. В переменные Port и Data, помещаем данные из соответствующих окошек ввода предварительно преобразовав их из текста в целое число. Затем вызываем функцию Out32()с этими параметрами.

procedure TForm1.Button1Click(Sender: TObject);
var
Port: word;
Data: Byte;
begin
Data:= StrToInt(Edit1.Text);
Port:= StrToInt(Edit2.Text);
Out32(Port, Data);
end;

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

procedure TForm1.Button2Click(Sender: TObject);
var
Port: word;
Data: Byte;
begin
Port:= StrToInt(Edit3.Text);
Data:= Inp32(Port);
MessageDlg('Value: '+ IntToStr(Data), mtInformation, [mbOK], 0);
end;

Компилируем, запускаем (можно одной кнопкой в виде зеленой стрелки на верхней панели). Протестируем приложение. Попробуем записать в регистр DATA LPT порта число 0. Для этого в качестве адреса указываем 888 (или $378, что одно и тоже), в качестве данных - 0. Нажимаем на соответствующую кнопку. Должно быть все Ok (наблюдаем это на LPT-тестере - заранее подготовленная схема, о которой рассказывалось в предыдущих уроках, см. рис ниже). Аналогично проводим чтение.

Схема LPT порта

Готовая тестовая программка. Если вы еще не скачали архив, качайте. В папке Demo, лежит тренировочная программа, написанная мною, для более глубокого понимания, возможностей вышеописанного метода программирования, LPT порта.

Тестовая программа для работы с LPT портом

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

Вверх | Главная




Hosted by uCoz