Files
IoTManager/src/SoftUART.cpp

50 lines
1.1 KiB
C++
Raw Normal View History

2020-12-06 00:34:30 +03:00
#include "SoftUART.h"
2020-12-06 02:08:37 +03:00
#include "Global.h"
2020-12-06 00:34:30 +03:00
2020-12-06 00:40:48 +03:00
#ifdef ESP8266
SoftwareSerial* myUART = nullptr;
#else
HardwareSerial* myUART = nullptr;
#endif
2020-12-06 00:34:30 +03:00
void uartInit() {
2020-12-06 02:08:37 +03:00
if (!jsonReadBool(configSetupJson, "uart")) {
return;
}
2020-12-06 00:34:30 +03:00
if (!myUART) {
2020-12-06 00:40:48 +03:00
#ifdef ESP8266
2020-12-06 02:08:37 +03:00
myUART = new SoftwareSerial(jsonReadInt(configSetupJson, "uartTX"), jsonReadInt(configSetupJson, "uartRX"));
myUART->begin(jsonReadInt(configSetupJson, "uartS"));
2020-12-06 00:40:48 +03:00
#else
myUART = new HardwareSerial(2);
myUART->begin(4, 5);
#endif
2020-12-06 00:34:30 +03:00
}
}
void uartHandle() {
2020-12-06 02:08:37 +03:00
if (!jsonReadBool(configSetupJson, "uart")) {
return;
}
2020-12-06 00:34:30 +03:00
static String incStr;
if (myUART->available()) {
char inc;
inc = myUART->read();
incStr += inc;
2020-12-06 00:59:47 +03:00
if (inc == '\n') {
2020-12-06 02:08:37 +03:00
parse(incStr);
incStr = "";
2020-12-06 00:34:30 +03:00
}
}
}
void parse(String& incStr) {
2020-12-06 02:08:37 +03:00
if (incStr.indexOf("set") != -1) {
incStr.replace("\r\n", "");
incStr.replace("\r", "");
incStr.replace("\n", "");
incStr = deleteBeforeDelimiter(incStr, " ");
SerialPrint("I", "UART", incStr);
orderBuf += incStr;
}
2020-12-06 00:34:30 +03:00
}