0 голосов
спросил от в категории MFCVisualC
Чтобы читать и писать одновременно, вы должны использовать перекрывающиеся ввода-вывода. Тогда вызовы чтения и записи не будут блокироваться, а сразу возвращаться. Конец операции ввода-вывода обозначается событиями. См. #Overlapped I/O and I/O Manager Driver Developer Tips # [#^ #] в MSDN.

Я рекомендую использовать рабочие потоки, потому что вы можете дождаться завершения ввода-вывода и обнаруживать определенные последовательные события, такие как изменения строки состояния и ошибки (см. <код> Функция SetCommMask () ). Использование двух потоков для чтения и записи или только одна обработка зависит от конкретного протокола связи и потока данных (например, если есть какое-то подтверждение).

Последовательный ввод-вывод , особенно при перекрытии и использовании потоков, является передовой темой. Вы должны прочитать о перекрытых вводах-выводах и рабочих потоках. Затем найдите некоторые статьи здесь и в других местах в Интернете для примеров. Вы можете найти тот, который может быть использован для вашей реализации с незначительными изменениями. Поиск того, который полностью соответствует вашим требованиям, маловероятен.

Если у вас есть конкретные вопросы по теме или вам нужна помощь с вашим кодом, вернитесь сюда снова. На данный момент ваш вопрос слишком сложный, чтобы ответить на него коротким.

[ОБНОВЛЕНИЕ]
Некоторая информация о последовательном общении:
Использование CreateFile () , ReadFile () , WriteFile () и CloseHandle () для выполнения операций ввода-вывода. См. #Communications Functions # [#^ #] для списка специфических функций последовательной связи. Используйте, по крайней мере, SetCommState () после открытия порта для передачи настроек. Читайте о перекрывающихся вводах/выводах (см. ссылку выше). Прочитайте о рабочих потоках. Используйте SetCommMask () и WaitCommEvent () внутри потоков для обнаружения и обработки определенных событий. Используйте WaitForMultipleObjects () внутри потоков, чтобы ждать событий.

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Похожие вопросы

0 голосов
0 ответов
0 голосов
0 ответов
0 голосов
0 ответов
спросил 20 Июнь, 17 от jochen arndt в категории MFCVisualC
0 голосов
0 ответов
спросил 31 Янв, 13 от merano в категории MFCVisualC
...