Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с LPT... [D6, D7, Win95/98]


XP ©   (2004-01-26 17:21:00) 

Уважаемые Мастера, у меня есть ряд вопросов по работе с LPT портом:
1. Я знаю что на ножках LPT по команде появляется напряжение в 5V, вопрос-какое напряжени постоянное или импульс и как его проверить?
2. Как мне измерить это напряжение.
3. И можно ли переключать режимы: постоянное-импульс.
4. Как включать каждую ножку.

Заранее спасибо.


hyper_omsk   (2004-02-11 06:55:00) [1]

Пробуй проще (или вместо integer ставь word или еще что, пробуй)

Простой код

procedure TForm1.ButtonOnClick(Sender: TObject);
begin
asm
mov ax,2
mov dx,888
out dx,ax
end;
end;

procedure TForm1.ButtonOffClick(Sender: TObject);
begin
asm
mov ax,0
mov dx,888
out dx,ax
end;
end;


XP   (2004-02-10 23:16:00) [2]

hyper_omsk, я использовал вот этот код:
procedure TForm1.Button1Click(Sender: TObject);
var DataByte,PortAddr:integer;
begin
DataByte:=0; //была 2
PortAddr:=888;
asm
mov al,Databyte
mov dx,PortAddr
out dx,al
end;
end;

Мне уже достатачно, чтоб прога работала только под 98.
Спасибо за ответы.


hyper_omsk   (2004-02-09 11:29:00) [3]

ХР почему не работает у тебя я конечно не знаю.
Сразу задам тебе встречный вопрос.
Ты использовал dll из папки Demo
Если что не получится пиши.


XP   (2004-02-08 23:13:00) [4]

Уважаемы hyper_omsk, не могу понять почему код который ты мне дал не работатет. Делфи говорит-Operand size mismath. Чё делать?
Заранее спасибо.


RedSerg   (2004-01-30 12:16:00) [5]

to XP. Я ставлю два реле! певое с маленькым потребляемым током и напряжением(РГК15), а второе уже на 220(помощьнее- любое ). Первое реле замыкает цепь 220В на второе (мощьное реле срабатывает от напр 220В). Почему би не использовать только первое ! Потому, че оно не потянет той нагрузки котороя нужна для роботы ел. приборов .


Dmitriy_G   (2004-01-30 06:24:00) [6]

Ну нет, реле не переключится факт. Токи сколько не знаю врать не буду (20 мА, около). Но транзистор ставится в любом случае. Или даже еще лучше uln2003, кажется так.


XP   (2004-01-29 18:16:00) [7]

И последний вопрос, какие сила тока и напряжение на выходе, а то реле не переключается. Сегодня подключил 3-х вольтовое реле и нихрена! Что делать???


XP   (2004-01-29 18:10:00) [8]

RedSerg, не могу подключить реле к LPT, оно не переключается. Что делать?


RedSerg   (2004-01-29 15:25:00) [9]

Хочу что б мой комп управлял електро сетью через LPT. Апаратная часть проблем не вызывает, а вот програмная!!!(для меня дремучий лес). Мне надо что б на ножках (2-9 на одной из них) LPT порта повллась 1 (5В) в то время когда я запрогпамирую. Видел проги под Win98, а вот под NT !!!?


Dmitriy_G   (2004-01-29 06:55:00) [10]

hyper_omsk, вышли мне тоже. Еще один драйвер лишним не будет.


hyper_omsk   (2004-01-29 05:25:00) [11]

Кстати я ошибся в коде (наверно уже заметили)

Выключить светодиод (D1)

procedure TForm1.Button1Click(Sender: TObject);
var DataByte,PortAddr:integer;
begin
DataByte:=0; //была 2
PortAddr:=888;
asm
mov al,Databyte
mov dx,PortAddr
out dx,al
end;
end;


hyper_omsk   (2004-01-29 05:13:00) [12]

XP проверь почту.


XP   (2004-01-28 13:12:00) [13]

Если не сложно, не могли бы Вы дать код который будет работать и под XP...


hyper_omsk   (2004-01-28 09:34:00) [14]

Я так понял ты пишишь под 98, если так то лучьше на ассемблере
адрес порта 378 в шесть-ричном виде то есть 888 в десятич.
для того чтоб на второй ножке точнее (D1) был сигнал а на остальных не то тебе необходимо записать двойку
(кстати светодиот загорается напряжения хватает это при условии если используешь обыкновенные светодиоды, есть светодиоды которым этого тока мало например инфрокрасные)
Вот пример:

Включить светодиод (D1)

procedure TForm1.Button1Click(Sender: TObject);
var DataByte,PortAddr:integer;
begin
DataByte:=2;
PortAddr:=888;
asm
mov al,Databyte
mov dx,PortAddr
out dx,al
end;
end;


Выключить светодиод (D1)

procedure TForm1.Button1Click(Sender: TObject);
var DataByte,PortAddr:integer;
begin
DataByte:=2;
PortAddr:=888;
asm
mov al,Databyte
mov dx,PortAddr
out dx,al
end;
end;


icWasya   (2004-01-27 18:03:00) [15]

в статье по ссылке написано - какие разряды каких портов каким контактам соответствуют


pavel_guzhanov   (2004-01-27 17:50:00) [16]

Я для этого использовал WinIO. Если интересно, скажи, мыльну пример и саму библиотеку. Только мне лично не понятно, как у тебя загорелся светодиод, ведь в порт выдается очень маленький ток, которого не хватит, чтобы зажечь  светодиод. Я использовал светодиодную матрицу, и между ней и LPT собирал еще дополнительную схему


XP   (2004-01-27 14:15:00) [17]

Спасибо за ответ. Я вчера припоял светодиод к LPT  и естественно он загорелся(почему это произошло я понял из ответа Dmitriy_G), немогли бы вы дать код на делфи, чтобы у меня напряжение подавалось только на вторую ножку, и соответственно светодиод горел тоько когда он подключен ко второй ножке.
Заранее спасибо...


Dmitriy_G   (2004-01-27 06:34:00) [18]

Читать ссылку влом. Так что отвечу
1 Напряжение стоит до тех пор пока в рег не запишутся новые данные так называемый рег защелка.
2 Вольтметром мериют или осцилографом
3 Чтобы подавать импульсы нужно инвертировать значение рег данных, с частотой которая требуется для импульсов
4 И опять таки пишем данные в рег. А в данных устанавливаем определенный бит


icWasya   (2004-01-26 18:07:00) [19]

http://gzw1.narod.ru/prog/prg_004/prog_4.html


Наверх

Титульная страница Поиск, карта сайта Написать письмо