Вообще говоря, под Windows со стороны приложения работать "напрямую" с прерываниями (почти) невозможно, (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Antimouse 13 октября 2003 г. 10:32
В ответ на: Я пытаюсь заставить нашего программиста написать программу (для РС) обмена данными по RS232 с использованием прерываний(а не тупого ожидания флагов), а он говорит, что это невозможно. Он прав? отправлено 220V 13 октября 2003 г. 07:00

поэтому разберитесь с программистом, что же он все таки имел ввиду,
когда уверял, что это так. :) Реально обработка прерываний - удел
драйверов, а WinAPI предлагает свои средства и возможности для работы
с потоками данных. В случае Com-порта открывается файл для устройства
ComХ:, гда Х-номер открываемого порта. Далее реализация раздваивается
на синхронную и асинхронную. В случае синхронной (попроще) Вы сможете
работать только под Win98, асинхронная же универсальна. И в том и в
другом случае придется создать отдельный поток (приоритет NORMAL) для
того, чтобы "выгребать" данные. В синхронной реализации вызывается
функция WaitCommEvent(...), в асинхронной WaitForSingleObject(...),
например. Которые работают по типу "спусковых крючков", настроенных
на определенные события (прием символа во входной буфер и т.д.).
Следующей в реализации стоит ClearCommError(...), определяете полон
ли буфер, ошибки (frame, break...). После этого шлете сообщение
своему основному окну (или другим способом уведомляете), что пришли
данные, которые или уже считаны из открытого файла, или надобно
прочитать. И так далее.
Могу посоветовать написать все от и до своими ручками, но в примеры
заглядывать нужно непременно, так будет быстрее и глюков меньше
скушаете (знать будете, что вообще Ваша программа делает).

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru