Форма входа

Категории раздела

Мои статьи [15]

Поиск

Наш опрос

Оцените мой сайт
Всего ответов: 62

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0




Среда, 24.04.2024, 17:47
Приветствую Вас Гость | RSS

Delphiport.ucoz.com

Главная | Регистрация | Вход
Каталог статей


Главная » Статьи » Мои статьи

Работа с COM портом в Delphi - Реле времени (программно зажигаем светодиод на определенное время)
  
  В этой статье мы рассмотрим примитивный, но в то же самое время интересный примерчик работы с COM портом из Delphi. А именно, напишем программу, которая будет управлять светодиодом, будет включать светодиод и выключать через определенное время,... такое себе простенькое реле времени своими руками).
   Передача данных в цифровых устройствах осуществляется в двоичном виде, при помощи единиц и нулей, при этом, чаще всего нулю соответствует высокий уровень сигнала (напряжение), а единице низкий, - то есть либо его отсутствие, либо наличие но на таком не значительном уровне, когда бы он не мог распознаваться системой как 0. 
   Этот принцип мы и реализуем в нашем не большом эксперименте. Предупреждаю сразу, все выполняется на ваш страх и риск). Я экспериментировал на ноутбуке с переходником-конвертером с USB на COM, и прежде чем цеплять к нему нагрузку замерил напругу тестером (выводы №3 и №5), и в момент появления логического нуля она составила 4,3 - 4,5 v. На обычном ПК с оригинальным COM портом, отличается в большую сторону где то 11,2 - 12 v, однако сила тока не велика и светодиод спалить не получилось). Тут подходить нужно ко всему аккуратно, поскольку если что пойдет не так, то в лучшем случае умрет светодиод, а в худшем, можно попрощаться с контроллером COM порта, потому я использовал самое маломощное, что только можно было наскрести по сусекам). 
  И так, если вы еще не передумали и верите в свои силы, тогда приступаем. 
  Из оборудования нам понадобятся: 

1) ПК или ноутбук под OS Windows XP - 7 оснащенный COM портом, или если на вашем зверьке отсутствует COM порт, можно воспользоваться специальным переходником - конвертером USB/COM о котором я упоминал ранее, они не есть дефицит, и стоят не дорого) у меня вот такой например:



2) Девяти-контактный комовский разьем - "мама";                                     

3) Собственно сам светодиод;

4) Паяльник+флюс+припой;



Итак начнем с аппаратной части нашего эксперимента.

1) Берем комовский разьем "мама" и припаиваем к его контактам № 3 и №5 светодиод, (плюсовую ножку диода к контакту №3, минусовую к №5), должно
 
получиться примерно как на картинке ниже:



2) Вставляем получившийся девайс в имеющийся на вашей машинке COM порт и переходим к программной части;



3) Запускаем Delphi, создаем новый проект и размещаем на форме следующие компоненты: 1 компонент Сombobox, 1 Edit и 1 Button, и настраиваем 

примерно как у меня).


4) В разделе Var создаем глобальную переменную JRHandle тип Thandle (JRHandle: Thandle);

5) В строки items компонента Combobox, вбиваем цифры от 1 до 9, по одной в каждую строку, при помощи него мы будем выбирать номер COM порта для подключения;

6) Дважды кликнув на Button1, создаем для него обработчик событий, где между, прописываем следующий код:

begin

JRHandle := CreateFile(PChar('com'+ Combobox1.text),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,  0);
// Создание и открытие файла;

if JRHandle=INVALID_HANDLE_VALUE then

ShowMessage('Выбранный порт не найден на этом компьютере'); //Провека на обнаружение СОМ порта;

SetCommBreak(JRHandle); //Прерываем связь, приводим передачу в разорванное состояние - логический нуль (Высокий уровень сигнала);

sleep(StrToInt(Edit1.Text)); //Удержание прерывания;

ClearCommBreak(JRHandle); //Сброс состояния прерывания - восстанавливает передачу данных - логическая единица (опять в низкий уровень сигнала);

CloseHandle(JRHandle); //Закрытие порта;

end;

7) Заходим в диспетчер устройств Windows (Мой компьютер-Свойства-Диспетчер устройств) находим раздел Порты (COM и LPT),







































кликаем на нем и запоминаем номер который присвоен системой нашему COM порту (в моем случае это COM6), после мы будем выбирать его из списка портов нашего Combobox.

8) Запускаем наш проект, выбираем из списка запомненный ранее номер нашего порта, в Edit вбиваем время задержки в милисекундах например 20000, нажимаем "OK" и если вы все проделали в точности как я это описал, светодиод ярко засияет, и погаснет ровно через 20 секунд.

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

   А здесь можно взять исходник программы http://delphiport.ucoz.com/Ishodniki/Statji/Com_svetodiod/com_svetodiod.rar
Категория: Мои статьи | Добавил: Sashok (08.10.2013)
Просмотров: 9147 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright MyCorp © 2024