Рефераты | Рефераты по информатике, программированию | Ещё раз о прямом доступе к аппаратуре | страница реферата 3 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Впрочем, этот пример элегантным уже не назовешь, т.к. использование COM-порта дает возможность избавиться от периодического опроса, используя асинхронную работу через WaitCommEvent и WaitForMultipleObjects.

    Ниже приведен код примера. Для пояснения сути происходящего код обильно прокомментирован. Но все-таки обращу внимание на некоторые нюансы:

    WaitForMultipleObjects ждет бесконечно. Никаких периодических опросов — значит и никакого потребления ресурсов. Всё реализовано на событиях.

    Нет необходимости в TerminateThread для принудительного прекращения выполнения потока. Выполнение может быть «культурно» завершено в любой момент. Для этого используется отдельное событие.

    Простая реализация неблокирующей задержки для подавления дребезга. Поскольку периодический опрос мы не применяем, то, чтобы избавиться от ложных срабатываний программным путем, нужно подождать несколько десятков миллисекунд, и если состояние за это время не изменилось, то замыкание/размыкание цепи состоялось. В качестве таймера используется WaitableTimer. Обратите внимание на его теоретическую точность.

    Ключевой метод

    procedure TComWatchdogThread.Execute;

    var

     // структура, используемая Win32 для хранения внутренней информации при

     // асинхронной работе. Ничего кроме поля hEvent нам от неё не требуется

     eOverlapped: TOverlapped;

     // запрос ожидания асинхронного события изменения состояния порта

     //...........................................................................

     procedure InitWaitCommEvent;

     var

     eEventMask: DWORD;

     begin

     // ошибки ERROR_IO_PENDING нужно просто игнорировать - их наличие означает

     // только то, что последняя операция с портом ещё не завершена.


    Рекомендуем скачать другие рефераты по теме: экзамены, реферат на тему мир.



    Предыдущая страница реферата | 1  2  3  4  5  6 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •