From 0d7304e297461ff64f8f1b5b8a49c73673717dc5 Mon Sep 17 00:00:00 2001 From: biver Date: Sun, 4 Sep 2022 19:16:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=20=D1=87=D1=82?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B8=D0=B7=20String?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/classes/IoTScenario.cpp | 48 +++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/src/classes/IoTScenario.cpp b/src/classes/IoTScenario.cpp index dd7aad59..e66d7a64 100644 --- a/src/classes/IoTScenario.cpp +++ b/src/classes/IoTScenario.cpp @@ -586,11 +586,22 @@ class BracketsExprAST : public ExprAST { //===----------------------------------------------------------------------===// int IoTScenario::getLastChar() { - if (file) { - LastChar = file.read(); - if (LastChar == 10) curLine++; - return LastChar; - } else return EOF; + if (mode == 0) { + if (file) { + LastChar = file.read(); + if (LastChar == 10) curLine++; + return LastChar; + } else return EOF; + } else if (mode == 1) { + if (charCount < strFromFile.length()) { + LastChar = strFromFile.charAt(charCount); + //Serial.printf("%d, ", LastChar); + if (LastChar == 10) curLine++; + charCount++; + return LastChar; + } else return EOF; + } + } /// gettok - Возвращает следующий токен из стандартного потока ввода. @@ -806,7 +817,7 @@ ExprAST *IoTScenario::ParseBracketsExpr(String *IDNames, bool callFromCondition) //if (CurTok == '}') break; - Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok); + //Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok); @@ -931,15 +942,21 @@ ExprAST *IoTScenario::ParseExpression(String *IDNames, bool callFromCondition) { void IoTScenario::loadScenario(String fileName) { // подготавливаем контекст для чтения и интерпретации файла - if (file) file.close(); - file = FileFS.open(fileName, "r"); - if (!file) { - Error("Open file scenario error"); - return; - } - - if (mode == 1) { + if (mode == 0) { + if (file) file.close(); + file = FileFS.open(fileName.c_str(), "r"); + if (!file) { + Error("Open file scenario error"); + return; + } + } else if (mode == 1) { + file = FileFS.open(fileName.c_str(), "r"); + if (!file) { + Error("Open file scenario error"); + return; + } strFromFile = file.readString(); + Serial.printf("strFromFile: %s, %s\n", strFromFile.c_str(), fileName.c_str()); file.close(); } } @@ -950,8 +967,9 @@ void IoTScenario::exec(String eventIdName) { // посимвольно счит LastChar = 0; CurTok = 0; curLine = 1; + charCount = 0; - if (mode == 0) file.seek(0); else charCount = 0; + if (mode == 0) file.seek(0); if (mode < 2) { while (CurTok != EOF) {