mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Добавляем запись значений в глобальное хранилище, если отсутвует представитель в итемсах
This commit is contained in:
@@ -56,18 +56,26 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// VariableExprAST - Класс узла выражения для переменных (например, "a").
|
/// VariableExprAST - Класс узла выражения для переменных (например, "a").
|
||||||
class VariableExprAST : public ExprAST {
|
class VariableExprAST : public ExprAST, IoTItem {
|
||||||
String Name;
|
String Name;
|
||||||
IoTItem* Item; // ссылка на объект модуля (прямой доступ к идентификатору указанному в сценарии), если получилось найти модуль по ID
|
IoTItem* Item; // ссылка на объект модуля (прямой доступ к идентификатору указанному в сценарии), если получилось найти модуль по ID
|
||||||
IoTValue val; // хранение данных для внешних переменных если не найдены в итемсах
|
//IoTValue value; // хранение данных для внешних переменных если не найдены в итемсах берем из базового класса IoTItem
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VariableExprAST(const String &name, IoTItem* item) : Name(name), Item(item) {}
|
VariableExprAST(const String &name, IoTItem* item) : Name(name), Item(item), IoTItem("") {}
|
||||||
|
|
||||||
int setValue(IoTValue *val) {
|
int setValue(IoTValue *valueIn) {
|
||||||
if (Item) {
|
if (Item) {
|
||||||
//Item->value = *val; // устанавливаем значение в связанном Item модуля напрямую
|
//Item->value = *val; // устанавливаем значение в связанном Item модуля напрямую
|
||||||
Item->setValue(*val);
|
Item->setValue(*valueIn);
|
||||||
|
} else {
|
||||||
|
// Итем ноль, значит это переменная отсутсвует в Итемсах, значит пишем в глобальное хранилище
|
||||||
|
if (valueIn->isDecimal) {
|
||||||
|
jsonWriteFloat_(paramsHeapJson, Name, valueIn->valD);
|
||||||
|
} else {
|
||||||
|
jsonWriteStr_(paramsHeapJson, Name, valueIn->valS);
|
||||||
|
}
|
||||||
|
IoTItem::setValue(*valueIn);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -84,11 +92,11 @@ public:
|
|||||||
// смотрим в хранилище
|
// смотрим в хранилище
|
||||||
String valueStr;
|
String valueStr;
|
||||||
jsonRead(paramsHeapJson, Name, valueStr);
|
jsonRead(paramsHeapJson, Name, valueStr);
|
||||||
if (val.isDecimal = isDigitDotCommaStr(valueStr))
|
if (value.isDecimal = isDigitDotCommaStr(valueStr))
|
||||||
val.valD = valueStr.toFloat();
|
value.valD = valueStr.toFloat();
|
||||||
else
|
else
|
||||||
val.valS = valueStr;
|
value.valS = valueStr;
|
||||||
return &val;
|
return &value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user