Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.4. События общего назначения
А.2.4.9. RDS_BFM_GLOBALPARAMCHANGE – изменение глобального параметра схемы
Поток, в котором вызывается функция модели
Главный поток RDS или поток расчета (вызов выполняется в одном потоке с моделью, изменяющей параметр).
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_GLOBALPARAMCHANGE.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру RDS_SGPDATA, в которой содержится описание и значение изменившегося парамера.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
При изменении глобального параметра схемы функцией rdsSGPSetData или его удалении функцией rdsSGPDelete модели всех блоков схемы вызываются для реакции на событие RDS_BFM_GLOBALPARAMCHANGE. В третьем параметре функции модели при этом передается указатель на структуру RDS_SGPDATA, которая также используется в функциях доступа к глобальным параметрам:
typedef struct { DWORD servSize; // Размер этой структуры в байтах RDSINT32 Id; // Уникальный идентификатор параметра RDSCSTR NameA; // Имя параметра (UTF8) RDSWCSTR NameW; // Имя параметра (UTF16) //RDSXCSTR Name; // Имя параметра (поле-псевдоним) RDSINT32 Type; // Тип параметра (RDS_VARTYPE_INT,RDS_VARTYPE_DOUBLE,RDS_VARTYPE_STRING,RDS_VARTYPE_BINARY) // Значения (заполняются только те поля, которые соответствует Type) double DoubleValue; // Вещественное значение RDSINT32 IntValue; // Целое значение RDSCSTR StrValueA; // Текстовое значение (UTF8) RDSWCSTR StrValueW; // Текстовое значение (UTF16) //RDSXCSTR StrValue; // Текстовое значение (поле-псевдоним) RDSBYTES Bytes; // Значение - массив байтов RDSINT32 BytesCount; // Размер массива байтов DWORD Flags; // Флаги RDS_SGP_* BOOL Exists; // Параметр существует } RDS_SGPDATA; typedef RDS_SGPDATA *RDS_PSGPDATA;
Поля структуры
- servSize (DWORD)
- Размер этой структуры в байтах. В реакции на событие RDS_BFM_GLOBALPARAMCHANGE значение этому полю присваивает RDS. При вызове функций доступа к глобальным параметрам модель блока должна присвоить этому полю значение sizeof(RDS_SGPDATA).
- Id (RDSINT32)
- Уникальный ненулевой идентификатор глобального параметра, ранее полученный вызовом функции регистрации имени параметра rdsSGPRegisterName. В реакции на событие RDS_BFM_GLOBALPARAMCHANGE это поле всегда заполнено. При вызове функций доступа к глобальным параметрам в это поле можно записать ноль, в этом случае имя, записанное в поле NameA/NameW/Name (в зависимости от суффикса вызванной функции) будет зарегистрировано в RDS автоматически и в поле Id будет записан присвоенный этому имени идентификатор.
- NameA (RDSCSTR), NameW (RDSWCSTR), Name (RDSXCSTR)
- Имя глобального параметра. В реакции на событие RDS_BFM_GLOBALPARAMCHANGE это поле всегда заполнено. При вызове функций доступа к глобальным параметрам это поле игнорируется, если в поле Id находится ненулевое значение. Если же в Id записан ноль, из структуры будет считано поле, соответствующее суффиксу вызванной функции.
- Type (RDSINT32)
- Тип глобального параметра, определяющий, в каком из полей структуры записано его значение:
RDS_VARTYPE_INT Целое число в поле IntValue. RDS_VARTYPE_DOUBLE Вещественное число в поле DoubleValue. RDS_VARTYPE_STRING Строка, указатель на которую находится в поле StrValueA/StrValueW/StrValue. При вызове функций доступа к глобальным параметрам считывается поле с суффиксом вызванной функции, при реакции на событие RDS_BFM_GLOBALPARAMCHANGE заполнены все поля. RDS_VARTYPE_BINARY Двоичные данные, указатель на начало которых находится в поле Bytes, а длина в байтах – в поле BytesCount. - DoubleValue (double)
- Вещественное значение параметра при Type==RDS_VARTYPE_DOUBLE.
- IntValue (RDSINT32)
- Целое значение параметра при Type==RDS_VARTYPE_INT.
- StrValueA (RDSCSTR), StrValueW (RDSWCSTR), StrValue (RDSXCSTR)
- Строковое значение параметра при Type==RDS_VARTYPE_STRING.
- Bytes (RDSBYTES)
- Указатель на начало двоичных данных параметра при Type==RDS_VARTYPE_BINARY.
- BytesCount (RDSINT32)
- Размер в байтах области памяти с двоичными данными, на которую указывает поле Bytes.
- Flags (DWORD)
- Битовые флаги глобального параметра. На данный момент поддерживается единственный флаг:
RDS_SGP_TRANSLATE Требуется перевод текста для строкового параметра. - Exists (BOOL)
- TRUE – параметр существует, FALSE – параметр не существует или удаляется в данный момент.
См. также