UniSet 2.32.1
Заморозка (фиксация) значения датчика в SM

В библиотеке поддерживается механизм, позволяющий замораживать значение датчика и оно не будет меняться, пока не будет обратно"разморожено". При этом функция setValue() будет продолжать работать и будет менять значение датчика в памяти SM. Но пока датчик не будет разморожен эти изменения не будут видны. После разморозки датчика, будет выставлено текущее значение.

Для управления "заморозкой" существует две возможности

Заморозка значения при помощи утилиты uniset2-admin

Для того, чтобы заморозить какое-то значение достаточно вызвать команду

uniset2-admin --confile xxx --freezeValue SID@node=value 1

Где:

  • SID - это имя или идентификатор датчика
  • node - узел на котором датчик находится (необязательный параметр)
  • value - значение которое будет установлено у датчика (при "разморозке" значение не важно)
  • 1 - заморозить

Можно замораживать или размораживать сразу несколько датчиков.

  • Заморозить датчики
    uniset2-admin --confile xxx --freezeValue sens1=10,sens2=100,sens3=42 1
  • Разморозить датчики
    uniset2-admin --confile xxx --freezeValue sens1,sens2,sens3 0

Заморозка значения при помощи UInterface (в коде)

Для "заморозки/разморозки" значений в коде в UInterface предусмотрена функция

void freezeValue( const IOController_i::SensorInfo& si, bool set, long value, uniset::ObjectId supplier );

Пример заморозки:

...
IOController_i::SensorInfo si;
si.id = 100; // sensorID
si.node = conf->getLocalNode();
ui->freezeValue(si, true, 100);