Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват информации от программы к СОМ-порту 
:(
    Опции темы
TimeMan
Дата 25.10.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.9.2006

Репутация: нет
Всего: нет



Помогите пожалуйста решить одну проблему.

Ситуация такая: Есть программа, которая активно общается с устройством через СОМ-порт. Необходимо сделать программный эмулятор этого устройства (без применения каких-либо апаратных средств, таких как переходники с порта на порт), причем программа не должна знать, что общается с "подменой" настоящего устройства.

Конечно, можна  соединить между собой два порта компьютера кабелем. На один порт шлет свою информацию рабочая программа, на втором принимает программа-эмулятор устройства и на него же отсылает ответ. Но хотелось бы решить эту проблему, без привлечения каких-либо апаратных средств, и без использования дополнительных портов компьютера, поскольку они могут понадобиться для других целей... Тоесть, в и деале, 
хотелось бы чтобы это выглядело так: запускается рабочая программа настроенная для работы с каким-то СОМ-портом, после этого запускается программа-эмулятор устройства (которая каким-то образом получает данные отосланые первой программой на ее СОМ-порт и отправляет ей ответ, якобы от имени устройства, которое висит на СОМ-порте) и они себе преспокойно общаются (желательно, не подвешивая систему smile ).

 В связи с этим возникают несколько вопросов: Возможен ли перехват информации, которая поступает на СОМ-порт от одной программы, другой программой. Возможна ли отсылка информации программой, "от имени" СОМ-порта, другой программе (которой собственно и открыт этот порт, с правом монопольного доступа). 

Сначала я искал, что-то в функциях для роботы с СОМ-портом. Но, по-видимому, если какой-то программой получен дескриптор на один из СОМ-портов (они всегда открываются для монопольного доступа), то другие программы ничего не могут сделать с этим портом, пока не закрыт дескриптор  первой программой. Тогда  я начал искать возможность перехвата информации к порту. Единственное, что я нашел, о перехвате - в разделе Hooks документации MSDN, но там, я так понял, идет речь о перехвате сообщений для окон и т. п. 

Возможно ли вообще реализовать подобный принцип. и если возможно, то в каком направлении искать..

Это сообщение отредактировал(а) TimeMan - 25.10.2006, 16:38
PM MAIL   Вверх
Nastya
Дата 26.10.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



О варианте перехвата вызова API-функций думал?


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
TimeMan
Дата 26.10.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.9.2006

Репутация: нет
Всего: нет



Об этом варианте думал, точнее слышал, что такое можно сделать. Но с WIN API я столкнулся сравнительно недавно, поэтому даже представления не имею, где начинать искать информацию об этом способе перехвата. К какому разделу MSDN, что ли, относится эта возможность, где  находится описание работы с ней и т. п. не имею ни малейшего понятия. Поэтому, собственно, и обратился на форум....
PM MAIL   Вверх
Damarus
Дата 26.10.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 4
Всего: 29



PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.