mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Merge pull request #232 from biveraxe/ver4dev
Добавляем в UART в режиме обмена с экранами Nextion доп контроль
This commit is contained in:
@@ -27,6 +27,7 @@ class IoTItem {
|
||||
int getIntFromNet();
|
||||
virtual String getValue();
|
||||
long getInterval();
|
||||
bool isGlobal();
|
||||
|
||||
void setInterval(long interval);
|
||||
void setIntFromNet(int interval);
|
||||
|
||||
@@ -59,6 +59,8 @@ String IoTItem::getValue() {
|
||||
|
||||
long IoTItem::getInterval() { return _interval; }
|
||||
|
||||
bool IoTItem::isGlobal() { return _global;}
|
||||
|
||||
//определяем тип прилетевшей величины
|
||||
void IoTItem::setValue(const String& valStr, bool genEvent) {
|
||||
value.isDecimal = isDigitDotCommaStr(valStr);
|
||||
|
||||
@@ -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 {};
|
||||
|
||||
@@ -35,8 +35,31 @@
|
||||
"tx": "TX пин",
|
||||
"rx": "RX пин",
|
||||
"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,
|
||||
"usedLibs": {
|
||||
|
||||
Reference in New Issue
Block a user