Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение номера com-порта  (Прочитано 11424 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NeferSky
Постоялец

ru
Offline Offline
Бессмертный


« : 10-02-2011 08:26 » 

Доброго времени суток, Земляне.
Затея состоит в том, чтобы определить, с какого com-порта пришел сигнал.
Использую компонент comm32, создаю массив ком-портов (12 штук), присваиваю им номера, скорости и т.д., и стартую их. Процедура Comm32xReceiveData одна на всех, но в ней не передается номер порта. А хотелось бы. Итак, вопрос: как это лучше реализовать? Стоит ли пытаться добавить номер порта в процедуру OnReceiveData или есть другие пути? Писать 12 процедур для массива ведь не единственное решение?
Записан

Не тронь налаженный механизм, и он тебя не подведет.
Делать надо хорошо, а плохо - само получится.
Kivals
Команда клуба

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-02-2011 11:39 » 

NeferSky, ИМХО у тебя всегда есть Handle порта - а его можешь сопоставить с номером при инициализации.
Да и вроде ничего не мешает наследовать comm32 и добавить в него реквизит...

P.S. рассуждения теоретические - я общение с comm в Delphi писал на чистом WinAPI
Записан
NeferSky
Постоялец

ru
Offline Offline
Бессмертный


« Ответ #2 : 10-02-2011 15:22 » 

Аааа, да... О хендле я, как обычно, не подумал...

До WinAPI я пока не дорос, а о наследовании можно поподробнее? Добавить свойство самому компоненту я умею, а вот параметр в процедуру - даже не представлю как.

Если нужно, процедура объявляется так:
procedure Comm321ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word) // Реагирует, если на порт чё-нибудь пришло
Компонент Comm321: TComm32.
Могу еще и код comm32.pas выложить, с которого ставил компонент...
Записан

Не тронь налаженный механизм, и он тебя не подведет.
Делать надо хорошо, а плохо - само получится.
Kivals
Команда клуба

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 10-02-2011 15:29 » 

Ой - с подробностями не помогу: последний раз в Дельфи програмил года 4 назад.
Но попробуй прилепить сюда comm32.pas - ИМХО там легко как-то должно быть.
Записан
NeferSky
Постоялец

ru
Offline Offline
Бессмертный


« Ответ #4 : 10-02-2011 15:40 » 

Comm32.pas...

Kivals, все же за напоминание о хендле спасибо))) Попробую через него реализовывать, например, если массив будет двумерным, и в нем будут валяться com'ы и соответствующие хендлы - вроде, ничего решение?

Добавлено через 14 часов, 20 минут и 15 секунд:
Ничего не понимаю - у comm32 нет свойства хендла...

* Comm32.pas (31.58 Кб - загружено 706 раз.)
« Последнее редактирование: 11-02-2011 06:00 от NeferSky » Записан

Не тронь налаженный механизм, и он тебя не подведет.
Делать надо хорошо, а плохо - само получится.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines