Вы сейчас на:  Главная страница - Ввод данных в компьютер через LPT
Программирование
 Определение адреса LPT - Порта
 Управление LPT портом из Delphi 7
 Регистр данных LPT порта Delphi 7
 Интернет с 3g модема на роутер

Прошивки
 Прошивка Wi-Fi точки DWL 2100
 Программа для модема ZTE MF100
 Прошивка модема ZTE MF 626
 Программа для прошивки китайских телефонов
 Драйверы на Acer Aspire

ОC и утилиты
 Установка Windows XP c флешки
 Загрузка с флешки XP Live USB
 Загрузка Windows PE Mini CD
 Создание флешки с MS DOS

Онлайн самоучители
 Самоучитель по Visual Basic 6 0
 Самоучитель по php
 Самоучитель по JavaScript
 Kylix 3 - Delphi 7 для Linux

Игры
 Сервер World of WarCraft 2.4.3
 Cкачать World of WarCraft 2.4.3
 Анлокер для Warhammer 40K
 Counter Strike 1.6 install

Программы для Windows
 Антивирусы
 Архиваторы
 Графика
 Для Мобильного
 Интернет и сеть
 Мультимедиа
 Переводчики
 Система

Радиотехника
 Усилитель на микросхеме PAL007
 Цветовая маркировка резисторов
 Устройство для управление электроприборами с ПК
 Программа для черчения электрических схем
 Программа для создания печатных плат

Графика
 Визитки для парикмахеров
   Визитки для парикмахеров [2]
   Визитки для парикмахеров [3]
   Визитки для парикмахеров [4]
 Визитки для маникюра
   Визитки для маникюра [2]
   Визитки для маникюра [3]

Использование регистра данных lpt для ввода информации

Добро пожаловать!

Как управлять LPT портом из Delphi 7 или
Использование регистра данных ЛПТ порта для ввода данных в компьютер.


        Как известно LPT порт можно использовать для управления какими-либо устройствами или электроприборами с персонального компьютера. Но что делать, если этого мало? Если нам нужно не просто управлять приборами, но и получать какие-либо ответы от этих приборов.
В этом случае можно использовать регистр состояния с цепями Error, Sel, Pe, ASK, Busy (Рис 1).

lpt порт

Рис. 1

Но что делать, если этих регистров мало, например: необходимо ввести данные с 6-8 датчиков, которые используются в устройстве...
В этом случае для ввода данных в пк и использовании их в программе подойдет 8-и битная шина данных с цепями D0-D7, так как она двунаправленная.
Для того, чтобы использовать ЛПТ порт нам прежде всего понадобится динамически подключаемая библиотека inpout32.dll. Как её подключить и использовать описано тут.

Ну что ж, приступим... Запустим Delphi и создадим новый проект, после чего поместим на форму все необходимые элементы управления... (Рис.2)

Form1

Рис.2

Прежде чем начать работать с регистром данных в режиме ввода данных, нужно установить на всех его цепях логическую "1", для этого пишем следующую процедуру для Button1 ("Задать")

procedure TForm1.Button1Click(Sender: TObject);
begin
out32(65000,strtoint(edit1.Text));
end;


Красным цветом выделен адрес порта. У Вас он может отличаться (стандартный адрес: 378 (888)). Если Вам необходимо узнать адрес Вашего порта, то Вам сюда.

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

function IntToBinary(x: integer): string;
var
str: string;
begin
str:='';
while x>1 do
begin
if x mod 2=0 then str:=str+'0' else str:=str+'1';
x:=x div 2;
end;
if x=0 then str:=str+'0' else str:=str+'1';
Result:=str;
end;


Внимание! Функция должна быть написана выше использующей её процедуры, иначе возникнет ошибка (Целесообразно написать её в самом верху)

Теперь пишем процедуру для Button2 ("Считать"). В ней мы:

procedure TForm1.Button2Click(Sender: TObject);
begin
x:=inp32(65000); //считываем данные с порта
y:= IntToBinary(x);//отправляем их в функцию
label1.Caption := y;//выводим результат перевода данных в двоичный код в Label1
end;


Вот что получается в результате:

Form1

Рис. 3
Теперь осталось разбить строку по одному символу и привязать их значения к CheckBox'ам:

procedure TForm1.Button2Click(Sender: TObject);
begin
x:=inp32(65000); //считываем данные с порта
y:= IntToBinary(x);//отправляем их в функцию
label1.Caption := y;//выводим результат перевода данных в двоичный код
if label1.Caption[8]='1' then checkbox8.Checked := false else checkbox8.Checked := true;
if label1.Caption[7]='1' then checkbox7.Checked := false else checkbox7.Checked := true;
if label1.Caption[6]='1' then checkbox6.Checked := false else checkbox6.Checked := true;
if label1.Caption[5]='1' then checkbox5.Checked := false else checkbox5.Checked := true;
if label1.Caption[4]='1' then checkbox4.Checked := false else checkbox4.Checked := true;
if label1.Caption[3]='1' then checkbox3.Checked := false else checkbox3.Checked := true;
if label1.Caption[2]='1' then checkbox2.Checked := false else checkbox2.Checked := true;
if label1.Caption[1]='1' then checkbox1.Checked := false else checkbox1.Checked := true;
end;


Теперь при заземлении любых из цепей регистра данных в программе всё будет видно. Для примера я заземляю 7-й и 9-й пин (D5,D7) результат на рис.4. Обратите внимание, что при заземлении старшего регистра последний ноль не выводится в лейбл (Особенность алгоритма функции).

Form1

Рис. 4


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


Листинг программы:


Исходник на Delphi 7 + библиотека inpout32.dll


Другие сайты
 Серебряный пес
 Delphi World
 RepitoriX
 Изготовление наружной рекламы в г. Буденновске

Изготовление наружной рекламы в г. Буденновске

Обмен Webmoney




Получить WMR-бонус Balans.kz на свой кошелек!


Copyright LexCorp © 2010-2013