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

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

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

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


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