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

Приложения

Приложение А. Функции, константы и структуры RDS

А.4. Структуры RDS

А.4.16. RDS_TIMERDESCRIPTION – описание таймера

Структура RDS_TIMERDESCRIPTION используется для получения описания программируемого таймера блока. Эта структура заполняется сервисной функцией rdsGetBlockTimerDescr, пример ее использования приведен в §2.9.2 руководства программиста.

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

  typedef struct {
     servSize;  // Размер этой структуры в байтах
     Delay;     // Задержка таймера (мс)
     StartTime; // Время начала отсчета (мс)
     On;         // Таймер включен
     Mode;      // Флаги режима
  } RDS_TIMERDESCRIPTION;
  typedef RDS_TIMERDESCRIPTION *RDS_PTIMERDESCRIPTION;

Поля структуры

servSize (DWORD)
Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_TIMERDESCRIPTION).
Delay ()
Интервал в миллисекундах перед срабатыванием таймера (между срабатываниями для циклических таймеров).
StartTime ()
Время начала отсчета таймера в миллисекундах. Это значение функции Windows API GetTickCount() на момент запуска таймера. Таким образом, таймер сработает тогда, когда значение GetTickCount() станет большим или равным (StartTime+Delay).
On (BOOL)
TRUE, если данный таймер включен, и FALSE, если выключен.
Mode ()
Режим работы таймера. Формируется как объединение битовым ИЛИ константы режима (RDS_TIMERM_*), константы способа срабатывания (RDS_TIMERS_*) и флагов режима (RDS_TIMERF_*). Константа режима может быть одной из следующих:
RDS_TIMERM_LOOP Таймер циклический, после срабатывания он автоматически перезапускается с той же задержкой.
RDS_TIMERM_STOP Таймер однократный, после срабатывания он будет остановлен. Его можно перезапустить сервисными функциями rdsSetBlockTimer или rdsRestartBlockTimer.
RDS_TIMERM_DELETE Таймер однократный, после срабатывания он будет автоматически удален.
Константа способа срабатывания может быть одной из следующих:
RDS_TIMERS_SIGNAL При срабатывании таймера у блока-владельца взводится сигнал запуска, то есть его первой сигнальной переменной присваивается значение 1. Таймер работает только в режиме расчета.
RDS_TIMERS_TIMER При срабатывании таймера модель блока-владельца вызывается в потоке расчета для реакции на событие RDS_BFM_TIMER. Таймер работает только в режиме расчета.
RDS_TIMERS_WINREF При срабатывании таймера модель блока-владельца вызывается в главном потоке для реакции на событие RDS_BFM_WINREFRESH. Таймер работает только в режиме расчета.
RDS_TIMERS_SYSTIMER При срабатывании таймера модель блока-владельца вызывается в главном потоке для реакции на событие RDS_BFM_TIMER. Таймер работает во всех режимах.
На данный момент поддерживается единственный флаг режима:
RDS_TIMERF_FIXFREQ При способе срабатывания RDS_TIMERS_WINREF к этому таймеру не будет применяться автоматическое снижение частоты при чрезмерной загрузке процессора процедурами обновления окон. При остальных способах срабатывания флаг игнорируется.
Для выделения из поля Mode трех его компонентов (режима, способа срабатывания и флагов) можно использовать следующие битовые маски:
RDS_TIMERMASK_M Маска режима работы.
RDS_TIMERMASK_S Маска способа срабатывания.
RDS_TIMERMASK_F Маска флагов.

См. также

rdsGetBlockTimerDescr


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