Округляем значения элемента используемые в сценарии

This commit is contained in:
2022-12-02 13:56:31 +03:00
parent d4c2eeb752
commit 4d1ef99939
3 changed files with 24 additions and 17 deletions

View File

@@ -122,7 +122,8 @@ String IoTItem::getRoundValue() {
char buf[15];
sprintf(buf, ("%1." + (String)_round + "f").c_str(), value.valD);
return (String)buf;
value.valS = (String)buf;
return value.valS;
} else {
return (String)value.valD;
}

View File

@@ -112,6 +112,7 @@ class VariableExprAST : public ExprAST {
// if (Item->value.isDecimal)
// 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());
Item->getRoundValue();
return &(Item->value);
}
@@ -222,15 +223,17 @@ class BinaryExprAST : public ExprAST {
}
if (!lhs->isDecimal || !rhs->isDecimal) {
if (lhs->isDecimal)
lhsStr = (String)lhs->valD;
else
lhsStr = lhs->valS;
// if (lhs->isDecimal)
// lhsStr = (String)lhs->valD;
// else
// lhsStr = lhs->valS;
if (rhs->isDecimal)
rhsStr = (String)rhs->valD;
else
rhsStr = rhs->valS;
// if (rhs->isDecimal)
// rhsStr = (String)rhs->valD;
// else
// rhsStr = rhs->valS;
lhsStr = lhs->valS;
rhsStr = rhs->valS;
switch (Op) {
case tok_equal:

View File

@@ -169,13 +169,15 @@ class UART : public IoTItem {
IoTValue execute(String command, std::vector<IoTValue> &param) {
if (command == "println") {
if (param.size() == 1) {
if (param[0].isDecimal) uartPrintln((String)param[0].valD);
else uartPrintln(param[0].valS);
//if (param[0].isDecimal) uartPrintln((String)param[0].valD);
//else uartPrintln(param[0].valS);
uartPrintln(param[0].valS);
}
} else if (command == "print") {
if (param.size() == 1) {
if (param[0].isDecimal) uartPrint((String)param[0].valD);
else uartPrint(param[0].valS);
//if (param[0].isDecimal) uartPrint((String)param[0].valD);
//else uartPrint(param[0].valS);
uartPrintln(param[0].valS);
}
} else if (command == "printHex") {
if (param.size() == 1) {
@@ -184,10 +186,11 @@ class UART : public IoTItem {
} else if (command == "printFFF") {
if (param.size() == 2) {
String strToUart = "";
if (param[0].isDecimal)
strToUart = param[0].valD;
else
strToUart = param[0].valS;
// if (param[0].isDecimal)
// strToUart = param[0].valD;
// else
// strToUart = param[0].valS;
strToUart = param[0].valS;
if (param[1].valD)
uartPrintFFF("\"" + strToUart + "\"");