Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / как сообщить программе о события COM-порта / 10 сообщений из 10, страница 1 из 1
30.01.2007, 10:36
    #34291812
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
Хочу написать библиотеку для работы с последовательным портом под Windows. Как лучше сообщать программе о событии, связанным портом (например, пришёл символ, переда очередной пвкет)? Как я понимаю, можно использольвать механизм сообщения, использовать объекты ядра Event. Может быть есть какой-нибудь другой вариант. Хотелось бы, чтобы класс для работы с устройством имеел удобный интерфейс и мог легко использоваться любой программой Windows, которой нужно использовать последовательный порт. Зараннее спасибо за любую информацию по данному вопросу.
...
Рейтинг: 0 / 0
30.01.2007, 10:50
    #34291859
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
Да. Каким-то образом обработчик вешается.

В классе можно сдалать регистрацию каллбеков. Любой класс использующий этот класс порта будет регестрировать свой каллбек.
...
Рейтинг: 0 / 0
30.01.2007, 10:51
    #34291864
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
OLEG_2005Хочу написать библиотеку для работы с последовательным портом под Windows. Как лучше сообщать программе о событии, связанным портом (например, пришёл символ, переда очередной пвкет)? Как я понимаю, можно использольвать механизм сообщения, использовать объекты ядра Event. Может быть есть какой-нибудь другой вариант. Хотелось бы, чтобы класс для работы с устройством имеел удобный интерфейс и мог легко использоваться любой программой Windows, которой нужно использовать последовательный порт. Зараннее спасибо за любую информацию по данному вопросу.Странное желание, ибо:
1)есть давно и много софта с разным подходом;
2)RS-232(485) умирает и спроса у новых софтверов нет, старые и так знают как работать.
3)удобный внешний интерфейс - дело вкуса. Внутри обслуживание любого внешнего устройства реализуется через прерывания (дабы не загружать процессор). Снаружи: мне, например, не нравятся прерывания, и я предпочитаю писать отдельный поток ожидания входного символа, т.е. весь интерфейс сводится к read/write и функции проверки. Кому-то нравится прописывать обработку прерывания по приходу символа, но надо обеспечивать реентерабельность.
Пакет, который я использую для BCB (AsyncProfessional) - open-source, поддерживает все механизмы. Полно также готовых ActiveX.
...
Рейтинг: 0 / 0
30.01.2007, 11:09
    #34291956
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
Внутри класса есть поток, который читает данные из порта и пишет в порт. Меня интересует, как лучше информировать программу о событии. Задача с COM-портом частная, вопрос можно сформулировать так, как оповещать программу о каком-то событии, которое происходит асинхронно.
...
Рейтинг: 0 / 0
30.01.2007, 11:37
    #34292064
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
OLEG_2005Внутри класса есть поток, который читает данные из порта и пишет в порт. Меня интересует, как лучше информировать программу о событии. Задача с COM-портом частная, вопрос можно сформулировать так, как оповещать программу о каком-то событии, которое происходит асинхронно.Упрощая: модуль-контейнер передаст твоему классу адрес функции(ий), которую(ые) твой класс будет вызывать в разных ситуациях. Такая функция называется callback.
...
Рейтинг: 0 / 0
30.01.2007, 15:27
    #34293254
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
Я правильно понял нужно использовать указатель на функцию?
...
Рейтинг: 0 / 0
30.01.2007, 17:44
    #34293890
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
OLEG_2005Я правильно понял нужно использовать указатель на функцию?Правильно. Но (см. мой первый пост) зачем? Я же написал есть open source.
...
Рейтинг: 0 / 0
30.01.2007, 17:54
    #34293923
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
Хотелось бы, чтобы библиотека была максимально компактной.
...
Рейтинг: 0 / 0
30.01.2007, 18:30
    #34294034
Тынц.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
CreateFile + FILE_FLAG_OVERLAPPED
+
CreateEvent + SetCommMask + SetCommTimeouts + WaitComEvent + GetOverLappedResult + и т.д.
Всё в отдельном потоке + синхронизация ...

Это если так хочется делать самому.

С этим всем, конечно, надо разобраться, чтобы понимать, как оно работает, но стоит сначала попробовать готовый велосипед, который уже называли: http://sourceforge.net/projects/tpapro/
Вполне может подойти...
...
Рейтинг: 0 / 0
31.01.2007, 08:36
    #34294787
OLEG_2005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сообщить программе о события COM-порта
А так уж нужно использовать WaitComEvent. Нельзя ли в асинхронному режиме обойтись только функциями ReadFile и WriteFile? Поток для работы с портом мог бы сначала писать в порт, если что-порт, а зате читать порт.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / как сообщить программе о события COM-порта / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]