mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Добавляем чтение отсутвующих локально переменных из общего глобального хранилища.
This commit is contained in:
@@ -30,7 +30,7 @@ void handleOrder() {
|
|||||||
if (item) {
|
if (item) {
|
||||||
String valStr = selectToMarkerLast(order, " ");
|
String valStr = selectToMarkerLast(order, " ");
|
||||||
IoTValue value;
|
IoTValue value;
|
||||||
if (value.isDecimal = isDigitStr(valStr))
|
if (value.isDecimal = isDigitDotCommaStr(valStr))
|
||||||
value.valD = valStr.toFloat();
|
value.valD = valStr.toFloat();
|
||||||
else
|
else
|
||||||
value.valS = valStr;
|
value.valS = valStr;
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public:
|
|||||||
class VariableExprAST : public ExprAST {
|
class VariableExprAST : public ExprAST {
|
||||||
String Name;
|
String Name;
|
||||||
IoTItem* Item; // ссылка на объект модуля (прямой доступ к идентификатору указанному в сценарии), если получилось найти модуль по ID
|
IoTItem* Item; // ссылка на объект модуля (прямой доступ к идентификатору указанному в сценарии), если получилось найти модуль по ID
|
||||||
|
IoTValue val; // хранение данных для внешних переменных если не найдены в итемсах
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VariableExprAST(const String &name, IoTItem* item) : Name(name), Item(item) {}
|
VariableExprAST(const String &name, IoTItem* item) : Name(name), Item(item) {}
|
||||||
@@ -75,7 +76,20 @@ public:
|
|||||||
if (Item->value.isDecimal)
|
if (Item->value.isDecimal)
|
||||||
Serial.printf("Call from VariableExprAST: %s = %f\n", Name.c_str(), Item->value.valD);
|
Serial.printf("Call from VariableExprAST: %s = %f\n", Name.c_str(), Item->value.valD);
|
||||||
else Serial.printf("Call from VariableExprAST: %s = %s\n", Name.c_str(), Item->value.valS.c_str());
|
else Serial.printf("Call from VariableExprAST: %s = %s\n", Name.c_str(), Item->value.valS.c_str());
|
||||||
return &(Item->value);
|
|
||||||
|
// если Итем не был найден по ID (Item == nulptr) значит либо опечатка, либо это ИД из другого контроллера, поэтому осуществляем поиск значения в
|
||||||
|
// глобальном сетевом хранилище переменных
|
||||||
|
if (Item) return &(Item->value);
|
||||||
|
else {
|
||||||
|
// смотрим в хранилище
|
||||||
|
String valueStr;
|
||||||
|
jsonRead(paramsHeapJson, Name, valueStr);
|
||||||
|
if (val.isDecimal = isDigitDotCommaStr(valueStr))
|
||||||
|
val.valD = valueStr.toFloat();
|
||||||
|
else
|
||||||
|
val.valS = valueStr;
|
||||||
|
return &val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -421,8 +435,9 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CurTok != '(') { // Обычная переменная.
|
if (CurTok != '(') { // Обычная переменная.
|
||||||
if (tmpItem) return new VariableExprAST(IdName, tmpItem);
|
//if (tmpItem)
|
||||||
else return new StringExprAST("id " + IdName + " not_found");
|
return new VariableExprAST(IdName, tmpItem);
|
||||||
|
// else return new StringExprAST("id " + IdName + " not_found");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вызов функции.
|
// Вызов функции.
|
||||||
|
|||||||
Reference in New Issue
Block a user