Добавляем запись значений в глобальное хранилище, если отсутвует представитель в итемсах

This commit is contained in:
2022-02-23 11:03:09 +03:00
parent be662dd497
commit a2bb357a75

View File

@@ -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;
} }
} }
}; };