Текущий раздел:

Описания RDS

Приложения

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

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

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

# Приложения

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

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

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

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

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

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

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

servSize(DWORD)
  Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_TIMERDESCRIPTION).
Delay(DWORD)
  Интервал в миллисекундах перед срабатыванием таймера (между срабатываниями для циклических таймеров).
StartTime(DWORD)
  Время начала отсчета таймера в миллисекундах. Это значение функции Windows API GetTickCount() на момент запуска таймера. Таким образом, таймер сработает тогда, когда значение GetTickCount() станет большим или равным (StartTime+Delay).
On(BOOL)
  TRUE, если данный таймер включен, и FALSE, если выключен.
Mode(DWORD)
  Режим работы таймера. Формируется как объединение битовым ИЛИ константы режима (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