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