Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

Впрочем, этот пример элегантным уже не назовешь, т.к. использование 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 |


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

   



Рефераты от А до Я


Полезные заметки

  •