Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 12:50   #1
TESLEX
 
Регистрация: 06.06.2011
Сообщений: 4
По умолчанию Управление пинами в LPT

Доброго времени суток. Подскажите пожалуйста как сделать чтобы можно было управлять независимо выходами в LPT порту. "написал" программу которая проверяет всего одну цифру 0 или 1 в 12 файлах config.01 - config.12 Задача стоит чтобы удалённо через браузер включать и выключать нагрузки. Сервер на Апаче. При нажатии кнопки записывается 0 или 1 в нужный файл. Электронная часть работает. С программной у меня проблема.

rocedure TForm1.Timer1Timer(Sender: TObject);
var
Port: word;
Data: Byte;
begin
Memo1.Lines.LoadFromFile('config.01 ');

if Memo1.Lines[0]='1' then Out32(888, 64);

if Memo1.Lines[0]='0' then Out32(888, 0);

end;

функция then Out32(888, 64); включает нужный мне пин вместо 64 (1 2 4 8 16 32 64 128) then Out32(888, 0) выключает все.
Изображения
Тип файла: jpg Сервер.JPG (13.3 Кб, 100 просмотров)
Вложения
Тип файла: txt КОД.txt (5.7 Кб, 142 просмотров)

Последний раз редактировалось TESLEX; 06.06.2011 в 12:52.
TESLEX вне форума Ответить с цитированием
Старый 06.06.2011, 14:52   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
управлять независимо выходами в LPT порту
задача сводится к раздельному управлению битами:
Код:
function SetBit(AWord: word; ABit: byte; AState: integer): word;
begin
 if AState>0 then Result:= AWord or (1 shl ABit)
  else Result:= AWord and (not (1 shl ABit))
end;
p.s.: качаем Delphi-World, пользуемся справочником.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 06.06.2011, 16:49   #3
TESLEX
 
Регистрация: 06.06.2011
Сообщений: 4
По умолчанию

Я использую библиотеку inpout32.dll. Как через неё организовать управление. Светодиоды напаяные для теста к потру зажигаются раздельно. надо теперь их раздельное выключение. Весь мой опыт программирования сводится к этой проге. Если возможно направьте на путь истинный уже кучу всего перелопатил. сегодня до 5 утра просидел. Голова пухнет. Видно мелочь но натыкаюсь на одни и теже вилы.

Последний раз редактировалось TESLEX; 06.06.2011 в 16:57.
TESLEX вне форума Ответить с цитированием
Старый 06.06.2011, 16:59   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Светодиоды напаяные для теста к потру зажигаются раздельно. надо теперь их раздельное выключение
вы читаете между строк? Тогда вам сюда
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.06.2011, 22:02   #5
TESLEX
 
Регистрация: 06.06.2011
Сообщений: 4
По умолчанию

С битами разобрался. как теперь две команды связать с двумя равенствами.
if Pin2 = false then ButtonPin2; бит включен

if Pin2 = true then ButtonPin2; бит выключен

begin
Memo1.Lines.LoadFromFile('config.01 ');

if Memo1.Lines[0]='1' выполняется if Pin2 = false then ButtonPin2;

if Memo1.Lines[0]='0' выполняется if Pin2 = true then ButtonPin2;

end;
TESLEX вне форума Ответить с цитированием
Старый 12.06.2011, 00:17   #6
TESLEX
 
Регистрация: 06.06.2011
Сообщений: 4
По умолчанию

Кажется я сам нашёл решение своей проблемы

procedure TForm1.Timer1Timer(Sender: TObject);

begin
Memo1.Lines.LoadFromFile('config.01 ');

if Memo1.Lines[0]='1'= Pin2 = false then ButtonPin2;
if Memo1.Lines[0]='0'= Pin2 = true then ButtonPin2;

end;

и так далее для каждого пина. Тест 4 выходов показал что работает как мне и было нужно.
TESLEX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление ШД через LPT - порт remz Общие вопросы Delphi 17 06.10.2010 22:39
Управление lpt стороней программой. Кирилл Игоревич Фриланс 9 11.07.2010 22:20
Управление LPT портом nikleb Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 19:40
Управление LPT портом Kuzmichinishe Помощь студентам 3 28.09.2009 11:07
Управление LPT под winXP maestrog Общие вопросы Delphi 1 03.04.2009 01:26