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

Приложения

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

А.2. События блока и связанные с ними описания

А.2.4. События общего назначения

А.2.4.11. RDS_BFM_LOADSTATE – загрузка состояния блока

Поток, в котором вызывается функция модели

Главный поток RDS или поток расчета (тот же поток, в котором вызвана сервисная функция загрузки состояния блока rdsLoadSystemState).

Первый параметр функции модели (int CallMode)

Константа RDS_BFM_LOADSTATE.

Третий параметр функции модели (void *ExtParam)

Не используется (NULL).

Возвращаемое функцией модели значение

Не используется, можно возвращать любое значение.

Примечания

Реакция на событие RDS_BFM_LOADSTATE вызывается в процессе работы сервисной функции rdsLoadSystemState для восстановления состояния каждого блока, ранее сохраненного функцией rdsSaveSystemState. В этой реакции модель должна загрузить из памяти все данные, сохраненные в реакции на событие RDS_BFM_SAVESTATE.

Сохранение и загрузка состояния одного или нескольких блоков используется в RDS для управления расчетом: вызовом сервисной функции rdsSaveSystemState можно сохранить в памяти текущее состояние одного или нескольких блоков, а затем, вызвав rdsLoadSystemState, вернуть эти блоки в запомненное состояние. Таких сохраненных состояний может быть сколько угодно – при сохранении каждое получает уникальный целый идентификатор, который используется в функции rdsLoadSystemState для указания конкретного восстанавливаемого состояния. При сохранении состояния значения статических переменных блока записываются в память автоматически, а все остальные данные должны быть сохранены моделью при помощи вызова rdsWriteBlockData в реакции на событие RDS_BFM_SAVESTATE. Загрузка сохраненных моделью данных в реакции на событие RDS_BFM_LOADSTATE осуществляется вызовом rdsReadBlockData. Сохранение и загрузка состояний блоков и подсистем подробно описана в §2.14.3 руководства программиста.

Пример

Пример сохранения и загрузки переменных, хранящихся в личной области данных блока.

  // Структура  блока
  typedef struct
  { // Переменные состояния
    int IntState;
    double DoubleState;
  } TMyBlockData2;
  
  // Модель блока
  extern "C" __declspec(dllexport) int  (
    int CallMode,             // Событие
     BlockData, // Данные блока
    LPVOID ExtParam)          // Дополнительные параметры
  { TMyBlockData2 *data=(TMyBlockData*)(BlockData->BlockData);
    switch(CallMode)
      {
    ...
        case :	// Сохранение состояния
          (&IntState,sizeof(IntState));
          (&DoubleState,sizeof(DoubleState));
          break;
        case :	// Загрузка состояния
          (&IntState,sizeof(IntState));
          (&DoubleState,sizeof(DoubleState));
          break;
    ...
      }
    return ;
  }

См. также

RDS_BFM_SAVESTATE, rdsLoadSystemState, rdsDeleteSystemState, rdsSaveSystemState, rdsReadBlockData, rdsWriteBlockData.


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