Навигация:
<< >> Оглавление Указатель

Руководство программиста

Глава 2. Создание моделей блоков

§2.9. Использование таймеров

Рассматривается использование таймеров – объектов RDS, позволяющих организовать вызов модели блока через определенные промежутки времени. Описываются циклические таймеры, вызывающие модель постоянно с заданным интервалом, и однократные, вызывающие модель один раз через указанный промежуток времени и требующие явного перезапуска. Отдельно рассматриваются особенности работы модели блока с несколькими таймерами одновременно.

§2.9.1. Таймеры в RDS

Описывается создание таймеров в RDS, режимы их работы и возможные способы вызова модели блока при срабатывании таймера.

Достаточно часто модели блока приходится выполнять различные действия через заданный интервал времени. Это может быть опрос каких-либо датчиков, обновление информации на экране и т.п. RDS включает в себя набор сервисных функций, позволяющих модели создавать произвольное число таймеров и получать информацию об их срабатывании. Таймеры могут быть как однократными, срабатывающими один раз по истечении заданного интервала времени, так и циклическими, вызывающими функцию модели с заданной периодичностью.

Для создания нового таймера или изменения параметров существующего используется сервисная функция rdsSetBlockTimer, которая возвращает идентификатор созданного таймера:

    (
     timer, // Идентификатор таймера
     delay,       // Интервал срабатывания, мс
     mode,        // Режим и флаги
     start);       // Запустить таймер немедленно

Первый параметр функции timer – это идентификатор таймера, параметры которого необходимо изменить, или NULL, если необходимо создать новый таймер. Параметр delay указывает интервал работы таймера в миллисекундах. Если логический параметр start – истина (TRUE), созданный или измененный таймер будет немедленно запущен и начнет отсчитывать время до интервала delay, в противном случае он будет ждать команды запуска. И, наконец, в параметре mode передается режим работы таймера, способ информирования модели о его срабатывании, а также дополнительные флаги, объединенные побитовой операцией ИЛИ (или простым сложением) в одно целое число типа DWORD.

Таймер может работать в одном из трех режимов:

Таймер уведомляет модель о своем срабатывании несколькими разными способами:

Вместе со способом уведомления модели можно, при необходимости, указать флаг – это исключит данный таймер из автоподстройки частоты обновления окон. При включенной автоподстройке RDS постоянно вычисляет суммарное время обновления всех окон системы, и, если это время будет слишком большим, частота обновления будет автоматически понижаться. Если в параметрах таймера указать флаг , его частота изменяться не будет. При всех остальных способах уведомления модели о срабатывании таймера никакой автоподстройки не происходит и этот флаг игнорируется.


<< >> Оглавление Указатель