Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.07.2010, 19:06
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию Как программно работать с внешними устройствами?

Здравствуйте, уважаемые дельфисты
Столкнулся с достаточно сложной проблемой: Как программно работать с внешними устройствами через Delphi?
Общая задача сводится к элементарному: необходимо программно зажечь лампочку, внешне подключенную любыми средствами непосредственно к компьютеру.
Поискав в интернете, ничего подходящего не нашел.
Буду признателен тем, кто поможет мне разобраться с этой проблемой.
Заранее спасибо! Жду ваших ответов
Ответить с цитированием
  #2  
Старый 20.07.2010, 19:25
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от cyberexpert
Здравствуйте, уважаемые дельфисты
Столкнулся с достаточно сложной проблемой: Как программно работать с внешними устройствами через Delphi?
Общая задача сводится к элементарному: необходимо программно зажечь лампочку, внешне подключенную любыми средствами непосредственно к компьютеру.
Поискав в интернете, ничего подходящего не нашел.
Буду признателен тем, кто поможет мне разобраться с этой проблемой.
Заранее спасибо! Жду ваших ответов
вводную информацию пожалуйста, через что собираешься "зажигать"? COM аль LPT? когда определишься переходи к изучению функции CreateFile
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #3  
Старый 20.07.2010, 19:29
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

А можете поподробнее рассказать про CreateFile.
Думаю буду использовать com порт.
Просто я нигде не нашел ничего про CreateFile

Последний раз редактировалось cyberexpert, 20.07.2010 в 19:32.
Ответить с цитированием
  #4  
Старый 20.07.2010, 19:33
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от cyberexpert
А можете поподробнее рассказать про CreateFile.
Думаю буду использовать com порт.
Просто я нигде не нашел ничего про CreateFile
http://yandex.ru/yandsearch?text=cre...94 &rstr=-194
если на Win32 работаешь, ищи не в каком то яндексе, а в MSDN, CreateFile function
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #5  
Старый 20.07.2010, 19:34
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

спс))
довольно исчерпывающая ссылка
Ответить с цитированием
  #6  
Старый 20.07.2010, 19:40
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

AleD, можете привести пример, как зажечь лампочку через COM??
Ответить с цитированием
  #7  
Старый 20.07.2010, 19:50
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от cyberexpert
AleD, можете привести пример, как зажечь лампочку через COM??
только лишь программными средствами ты не сделаешь это, нужно в платах, диодах всяких разбираться, я в этом не шарю, то что по программной части то:
Код:
var
  port: Cardinal;
...
function Init(): Boolean;
begin
  port := CreateFile(‘COM1’, GENERIC_WRITE, 0, nil,
    OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
  Result := port<>INVALID_HANDLE_VALUE;
end;

function SwitchLight(): Boolean;
var
  writed: Word;
begin
  Result := WriteFile(port, 1, 1, writed, nil);
  Result := Result and (writed=1);
end;
ну это дело прикрутить к кнопкам и должно работать
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #8  
Старый 20.07.2010, 19:52
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

В платах и диодах всяких я разбираюсь, так что проблем не должно быть!
огромное спасибо, AleD!
Очень мне помог!
Ответить с цитированием
  #9  
Старый 20.07.2010, 19:59
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от cyberexpert
В платах и диодах всяких я разбираюсь, так что проблем не должно быть!
огромное спасибо, AleD!
Очень мне помог!
если действительно разбираешься, то отпишись здесь как ты эту задачу решил, по части электроники мне интересно, но не разбираюсь
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #10  
Старый 20.07.2010, 20:11
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

хорошо, отпишусь
Ответить с цитированием
  #11  
Старый 20.07.2010, 21:41
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как вариант (использование LPT) - здесь есть инфа :

http://valery-us4leh.narod.ru/main.html
http://www.pcports.ru/articles/2.php
http://programmersclub.ru/lpt-delphi/

В частности:
"XP LPT - программа управления LPT портами OC Windows 9x/2000/XP + исходный код."
"Работа с LPT под Win 2000, XP: библиотека inpout32.dll"
Ответить с цитированием
  #12  
Старый 20.07.2010, 22:38
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от roamer
Как вариант (использование LPT) - здесь есть инфа :

http://valery-us4leh.narod.ru/main.html
http://www.pcports.ru/articles/2.php
http://programmersclub.ru/lpt-delphi/

В частности:
"XP LPT - программа управления LPT портами OC Windows 9x/2000/XP + исходный код."
"Работа с LPT под Win 2000, XP: библиотека inpout32.dll"

Подойдет как запасной вариант
Ответить с цитированием
  #13  
Старый 21.07.2010, 14:17
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
По умолчанию

еще тут нашел материал
http://cxem.net/uprav/uprav14.php
есть такой компонент TCommPortDriver
но идет он только под Delphi 2

Последний раз редактировалось cyberexpert, 28.07.2010 в 16:04.
Ответить с цитированием
  #14  
Старый 28.07.2010, 16:00
cyberexpert cyberexpert вне форума
Прохожий
 
Регистрация: 10.07.2009
Сообщения: 20
Репутация: 10
Хорошо

с лампочкой я разобрался - удалось ей поморгать!
Но поморгать удалось ей только через lpt. в моем случае Lpt использовать
гораздо удобнее
все классно работает
я использовал библиотеку inpout32.dll - кому надо, тот может поискать в инете и скачать. там есть очень хорошие функции:
inp32 и out32
inp32 возвращает значение заданного регистра lpt порта
out32 записывает байт на заданный регистр порта
вообщем достаточно рациональное и оптимальное решение которое не требует никаких микросхем припаивать к lpt
можно напрямую подключить лампочку ко 2 разъему и 25 (земля) и смело юзать
out32(888, 1);
чтобы зажечь лампочку.
чтобы погасить лампочку юзаем: out32(888, 0);

Последний раз редактировалось cyberexpert, 28.07.2010 в 16:18.
Ответить с цитированием
  #15  
Старый 28.07.2010, 20:19
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

А слаб'О действующий пример (вместе со всеми "причиндалами", подробным описанием и схемами) где-то выложить и ссылку сюда кинуть ?
А еще лучше - отдельную тему создать ???
Когда-то (еще по Win-95) делал ПО для замены телемеханики ТМ-322 (если не ошибаюсь) в контексте управления лифтами города (через LPT).
Но в Win-95 была возможность обращаться к портам явно.
С тех пор много чего изменилось.
За всем не успеть.
И такая инфа (конкретный опыт под WinXP, Win2000) была бы крайне интересна и полезна.

Последний раз редактировалось roamer, 28.07.2010 в 20:24.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter