mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Merge pull request #232 from biveraxe/ver4dev
Добавляем в UART в режиме обмена с экранами Nextion доп контроль
This commit is contained in:
@@ -27,6 +27,7 @@ class IoTItem {
|
|||||||
int getIntFromNet();
|
int getIntFromNet();
|
||||||
virtual String getValue();
|
virtual String getValue();
|
||||||
long getInterval();
|
long getInterval();
|
||||||
|
bool isGlobal();
|
||||||
|
|
||||||
void setInterval(long interval);
|
void setInterval(long interval);
|
||||||
void setIntFromNet(int interval);
|
void setIntFromNet(int interval);
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ String IoTItem::getValue() {
|
|||||||
|
|
||||||
long IoTItem::getInterval() { return _interval; }
|
long IoTItem::getInterval() { return _interval; }
|
||||||
|
|
||||||
|
bool IoTItem::isGlobal() { return _global;}
|
||||||
|
|
||||||
//определяем тип прилетевшей величины
|
//определяем тип прилетевшей величины
|
||||||
void IoTItem::setValue(const String& valStr, bool genEvent) {
|
void IoTItem::setValue(const String& valStr, bool genEvent) {
|
||||||
value.isDecimal = isDigitDotCommaStr(valStr);
|
value.isDecimal = isDigitDotCommaStr(valStr);
|
||||||
|
|||||||
@@ -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
|
||||||
|
if (eventItem->isGlobal()) {
|
||||||
eventItem->getNetEvent(printStr);
|
eventItem->getNetEvent(printStr);
|
||||||
_myUART->println(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