Форум программистов CodeGuru
20 Октябрь 2018, 08:44:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как зажечь лампочку подключенную к СОМ-порту  (Прочитано 18709 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« : 29 Сентябрь 2006, 16:19:11 »

Всем Доброго времени суток!

Есть задача: на С++ под Windows XP зажечь лампочку подключенную к СОМ-порту. Как это сделать, в принципе, понятно... Нужно в соответсвующих пинам порта регистрах установить либо 0, либо 1. Но как это запограммировать - не понимаю...

И второй вопрос, сколько лампочек можно одновременно зажечь от одного СОМ-парта?

Может кто сталкивался...

Заранее благодарен,
Антон.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 29 Сентябрь 2006, 18:59:40 »

Вы прямо на выход порта лампочку подключаете ?
А конкроллер не сгорит ? Или там светодиоды используются ?
Вообще, стандартная работа с COM портом под винду подразумевает использование CreateFile (имя файла COM1, COM2...COM9), DeviceIoControl, и.т.д.
Код:
hComm = CreateFile( "COM1",
       GENERIC_READ | GENERIC_WRITE,
       0,
       NULL,
       OPEN_EXISTING,
       FILE_FLAG_OVERLAPPED,
       NULL  
       );

Вообще, на тему ввода/вывода в порты неплохо все расписано в MSDN.
Посмотрите сначала справку по CreateFile. Там про использование COM - портов упоминается. Далее - по ссылкам.

Если что то не понятно - спрашивайте, попробуем помочь Улыбка
Записан

ajl
Новичок
*
Офлайн Офлайн

Сообщений: 1


Просмотр профиля
« Ответ #2 : 30 Сентябрь 2006, 14:00:48 »

Хорошо горят светодиоды, которые подключаются через сопротивление. Сопротивление подбирается по типу светодиода (Закон Ома;). Можно подключить несколько. В инете полно схем для контроля работоспособности порта. Открыв порт можно использовать, например, функцию EscapeCommFunction() для активизации канала. Каждая ножка +, корпус - минус.
Записан
Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #3 : 02 Октябрь 2006, 16:07:35 »

Цитата: ajl
Хорошо горят светодиоды, которые подключаются через сопротивление. Сопротивление подбирается по типу светодиода (Закон Ома;). Можно подключить несколько. В инете полно схем для контроля работоспособности порта. Открыв порт можно использовать, например, функцию EscapeCommFunction() для активизации канала. Каждая ножка +, корпус - минус.


Спасибо,  EscapeCommFunction() посмотрел, а принципе, подходит... Но, на сколько я понял, можено сделать активными (+12 вольт) только 3 пина: 1.EscapeCommFunction(m_hPort, SETDTR);
2.EscapeCommFunction(m_hPort, SETRTS);
3.EscapeCommFunction(m_hPort, SETBREAK);

Я прав? Если так, то следующий вопрос: сколько пинов можно запитать в LPT-порту?

В общем, опишу задачу, может что другое предложите... Мне нужно управлять реле, которые подключены к компьютеру, их порядка 12 штук... Как мне это сделать с наименьшими затратами? Если подключать к СОМ, то нужно 4 порта, а это много!!!

Заранее благодарен,
Антон.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #4 : 03 Октябрь 2006, 21:36:23 »

Цитировать
Как мне это сделать с наименьшими затратами?

С наименьшими через COM, наверно - облом.
COM - последовательный порт. А тебе надо фактически, выдавать сигнал в параллельной форме. Это можно сделать, подключив к порту дополнительное устройство, которое, собственно, и будет преобразовывать сигнал.
Я в электронике и схемотехнике не силен, но суть в том, что должен быть некий сдвиговый регистр. По сигналу с одного пина, он будет сдвигать данные, производя при этом запись с другого пина. Ну и еще сброс надо предусмотреть. А вот с выходов этого регистра уже сигнал и надо будет брать.
Записан

Dmitry_
Новичок
*
Офлайн Офлайн

Сообщений: 1


Просмотр профиля
« Ответ #5 : 22 Ноябрь 2006, 20:30:34 »

http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html#anchor1154232
RS232 + на выбор микроконтролер с UART - например http://www.atmel.com/dyn/products/product_card.asp?PN=ATtiny2313
и  через ком-порт можно управлять чем угодно...  даже светодиодами.
там же много примеров от разработчиков
Записан
PupaJr
Пользователь
***
Офлайн Офлайн

Сообщений: 33


Просмотр профиля
« Ответ #6 : 24 Ноябрь 2006, 17:53:51 »

Если Вы пытаетесь запустить реле, то судя по всему разбираетесь в электронике, можно сделать и по COM и LPT порту, в первом случае используем 2 сдвиговых регистра например типа к155ир13,  во втором 2 реристра параллельной загрузки ну типа 555ИР22 или ИР23, а загрузку в них использует такты включения порта, а выдачу на выход - выключение порта, всё можно проверить осциллографом встав на порты. При этом, учтите, ток порта не более 15мА - того и другого - для реле надо своё питание, лучше развязать оптронами, если вдруг ваши реле управляют скажем лампами на 220в - всётаки безопаснее для PC.
Программно с портами работаете как с файлом, вместо имени файла пишем порт (ну тут есть конечно тонкости в языках.....) - система сама ставит нужные биты.
Можно конечно непосредственно управлять каждым выводом порта - поставить драйвер прямого доступа типа USERPORT и и в NT и W2k делай что хош. Если 3.1 95 98 то пиши напрямую биты портов, описание есть везде.
Записан
Антон
Интересующийся
**
Офлайн Офлайн

Сообщений: 14


Просмотр профиля
« Ответ #7 : 24 Ноябрь 2006, 17:59:20 »

Всем СПАСИБО! Пошел другим путем... Разработал и заказал контроллер управдения... Управляется сообщениями через СОМ-порт, и зажигает выходы которые нужны...

Антон
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!