mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-29 07:32:18 +03:00
Добавляем в UART в режиме обмена с экранами Nextion
ограничение отправки только по признакам _val и _txt Добавляем дополнительные функции в сценарий для ручной отправки сообщений
This commit is contained in:
@@ -90,30 +90,31 @@ class UART : public IoTItem {
|
||||
}
|
||||
|
||||
void onRegEvent(IoTItem* eventItem) {
|
||||
if (!_myUART) return;
|
||||
if (!_myUART || !eventItem) return;
|
||||
|
||||
String printStr = "";
|
||||
switch (_eventFormat) {
|
||||
case 0: return; // не указан формат, значит не следим за событиями
|
||||
case 1: // формат событий IoTM с использованием json
|
||||
eventItem->getNetEvent(printStr);
|
||||
_myUART->println(printStr);
|
||||
if (eventItem->isGlobal()) {
|
||||
eventItem->getNetEvent(printStr);
|
||||
_myUART->println(printStr);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // формат событий для Nextion ID=Value0xFF0xFF0xFF
|
||||
printStr += eventItem->getID();
|
||||
printStr += "=";
|
||||
if (eventItem->value.isDecimal)
|
||||
printStr += eventItem->getRoundValue();
|
||||
else {
|
||||
if (printStr.indexOf("_") == -1) return; // пропускаем событие, если нет используемого признака типа данных - _txt или _vol
|
||||
if (printStr.indexOf("_val") > 0) {
|
||||
printStr.replace("_val", ".val=");
|
||||
printStr += eventItem->getValue();
|
||||
} else if (printStr.indexOf("_txt") > 0) {
|
||||
printStr.replace("_txt", ".txt=");
|
||||
printStr += "\"";
|
||||
printStr += eventItem->value.valS;
|
||||
printStr += eventItem->getValue();
|
||||
printStr += "\"";
|
||||
}
|
||||
_myUART->print(printStr);
|
||||
_myUART->write(0xff);
|
||||
_myUART->write(0xff);
|
||||
_myUART->write(0xff);
|
||||
} else return;
|
||||
uartPrintFFF(printStr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -122,12 +123,27 @@ class UART : public IoTItem {
|
||||
uartHandle();
|
||||
}
|
||||
|
||||
void uartPrint(const String& msg) {
|
||||
void uartPrintFFF(const String& msg) {
|
||||
if (_myUART) {
|
||||
_myUART->print(msg);
|
||||
_myUART->write(0xff);
|
||||
_myUART->write(0xff);
|
||||
_myUART->write(0xff);
|
||||
}
|
||||
}
|
||||
|
||||
void uartPrintln(const String& msg) {
|
||||
if (_myUART) {
|
||||
_myUART->println(msg);
|
||||
}
|
||||
}
|
||||
|
||||
void uartPrint(const String& msg) {
|
||||
if (_myUART) {
|
||||
_myUART->print(msg);
|
||||
}
|
||||
}
|
||||
|
||||
void uartPrintHex(const String& msg) {
|
||||
if (!_myUART) return;
|
||||
|
||||
@@ -141,14 +157,33 @@ class UART : public IoTItem {
|
||||
}
|
||||
|
||||
IoTValue execute(String command, std::vector<IoTValue> ¶m) {
|
||||
if (command == "print") {
|
||||
if (command == "println") {
|
||||
if (param.size() == 1) {
|
||||
uartPrint(param[0].valS);
|
||||
if (param[0].isDecimal) uartPrintln((String)param[0].valD);
|
||||
else 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);
|
||||
}
|
||||
} else if (command == "printHex") {
|
||||
if (param.size() == 1) {
|
||||
uartPrintHex(param[0].valS);
|
||||
}
|
||||
} 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[1].valD)
|
||||
uartPrintFFF("\"" + strToUart + "\"");
|
||||
else
|
||||
uartPrintFFF(strToUart);
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
|
||||
Reference in New Issue
Block a user