UART working condition

This commit is contained in:
Dmitry Borisenko
2020-12-06 02:08:37 +03:00
parent 8dd4d8491c
commit 6e44f76385
5 changed files with 64 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
#include "SoftUART.h"
#include "Global.h"
#ifdef ESP8266
SoftwareSerial* myUART = nullptr;
@@ -7,10 +8,13 @@ HardwareSerial* myUART = nullptr;
#endif
void uartInit() {
if (!jsonReadBool(configSetupJson, "uart")) {
return;
}
if (!myUART) {
#ifdef ESP8266
myUART = new SoftwareSerial(4, 5);
myUART->begin(9600);
myUART = new SoftwareSerial(jsonReadInt(configSetupJson, "uartTX"), jsonReadInt(configSetupJson, "uartRX"));
myUART->begin(jsonReadInt(configSetupJson, "uartS"));
#else
myUART = new HardwareSerial(2);
myUART->begin(4, 5);
@@ -19,19 +23,28 @@ void uartInit() {
}
void uartHandle() {
if (!jsonReadBool(configSetupJson, "uart")) {
return;
}
static String incStr;
if (myUART->available()) {
char inc;
inc = myUART->read();
incStr += inc;
if (inc == '\n') {
parse(incStr);
incStr = "";
parse(incStr);
incStr = "";
}
}
}
void parse(String& incStr) {
if (incStr.indexOf("set") != -1) {
incStr.replace("\r\n", "");
incStr.replace("\r", "");
incStr.replace("\n", "");
incStr = deleteBeforeDelimiter(incStr, " ");
SerialPrint("I", "UART", incStr);
orderBuf += incStr;
}
}

View File

@@ -6,6 +6,7 @@
#include "items/vLogging.h"
#include "Telegram.h"
#include "RemoteOrdersUdp.h"
#include "SoftUART.h"
bool parseRequestForPreset(AsyncWebServerRequest* request, uint8_t& preset) {
if (request->hasArg("preset")) {
@@ -255,6 +256,31 @@ void web_init() {
myNotAsyncActions->make(do_BUSSCAN);
request->redirect("/?set.utilities");
}
if (request->hasArg("uart")) {
bool value = request->getParam("uart")->value().toInt();
jsonWriteBool(configSetupJson, "uart", value);
saveConfig();
uartInit();
request->send(200);
}
if (request->hasArg("uartS")) {
jsonWriteStr(configSetupJson, "uartS", request->getParam("uartS")->value());
saveConfig();
uartInit();
request->send(200);
}
if (request->hasArg("uartTX")) {
jsonWriteStr(configSetupJson, "uartTX", request->getParam("uartTX")->value());
saveConfig();
uartInit();
request->send(200);
}
if (request->hasArg("uartRX")) {
jsonWriteStr(configSetupJson, "uartRX", request->getParam("uartRX")->value());
saveConfig();
uartInit();
request->send(200);
}
//==============================developer settings=============================================
if (request->hasArg("serverip")) {

View File

@@ -21,6 +21,7 @@
#include "items/vCountDown.h"
#include "items/vSensorUltrasonic.h"
#include "Telegram.h"
#include "SoftUART.h"
void not_async_actions();
@@ -91,6 +92,9 @@ void setup() {
SerialPrint("I", F("Bus"), F("Bus Init"));
busInit();
SerialPrint("I", F("UART"), F("UART Init"));
uartInit();
#ifdef SSDP_ENABLED
SerialPrint("I", F("SSDP"), F("Ssdp Init"));
SsdpInit();
@@ -155,6 +159,8 @@ void loop() {
handleTelegram();
uartHandle();
if (myLogging != nullptr) {
for (unsigned int i = 0; i < myLogging->size(); i++) {
myLogging->at(i).loop();