mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-15 20:45:59 +08:00
Better Serial Management
Thanks @me-no-dev big guru
This commit is contained in:
parent
222a95ecfc
commit
7994b0fa44
@ -57,6 +57,7 @@
|
||||
|
||||
//embedded response file if no files on SPIFFS
|
||||
#include "nofile.h"
|
||||
bool can_process_serial = true;
|
||||
|
||||
extern bool deleteRecursive(String path);
|
||||
extern void CloseSerialUpload (bool iserror, String & filename);
|
||||
@ -707,6 +708,8 @@ void handle_web_command (AsyncWebServerRequest *request)
|
||||
LOG ("Start PurgeSerial\r\n")
|
||||
ESPCOM::processFromSerial (true);
|
||||
LOG ("End PurgeSerial\r\n")
|
||||
can_process_serial = false;
|
||||
request->onDisconnect([request](){can_process_serial = true;});
|
||||
//send command
|
||||
LOG ("Send Command\r\n")
|
||||
ESPCOM::println (cmd, DEFAULT_PRINTER_PIPE);
|
||||
|
@ -34,6 +34,7 @@ extern void handle_serial_SDFileList (AsyncWebServerRequest *request);
|
||||
extern void SDFile_serial_upload (AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final);
|
||||
extern void handle_Websocket_Event(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len);
|
||||
extern void handle_onevent_connect(AsyncEventSourceClient *client);
|
||||
extern bool can_process_serial;
|
||||
|
||||
#ifdef SSDP_FEATURE
|
||||
extern void handle_SSDP (AsyncWebServerRequest *request);
|
||||
|
@ -19,7 +19,7 @@
|
||||
*/
|
||||
|
||||
//version and sources location
|
||||
#define FW_VERSION "2.0.0.c14"
|
||||
#define FW_VERSION "2.0.0.c15"
|
||||
#define REPOSITORY "https://github.com/luc-github/ESP3D"
|
||||
|
||||
//Customize ESP3D ////////////////////////////////////////////////////////////////////////
|
||||
|
@ -44,6 +44,9 @@ bool ESPCOM::block_2_printer = false;
|
||||
|
||||
void ESPCOM::bridge(bool async)
|
||||
{
|
||||
#if defined (ASYNCWEBSERVER)
|
||||
if(can_process_serial) {
|
||||
#endif
|
||||
//be sure wifi is on to proceed wifi function
|
||||
if ((WiFi.getMode() != WIFI_OFF) || wifi_config.WiFi_on) {
|
||||
//read tcp port input
|
||||
@ -53,7 +56,11 @@ void ESPCOM::bridge(bool async)
|
||||
}
|
||||
//read serial input
|
||||
ESPCOM::processFromSerial();
|
||||
#if defined (ASYNCWEBSERVER)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
long ESPCOM::readBytes (tpipe output, uint8_t * sbuf, size_t len)
|
||||
{
|
||||
switch (output) {
|
||||
@ -339,7 +346,10 @@ bool ESPCOM::processFromSerial (bool async)
|
||||
//check UART for data
|
||||
if (ESPCOM::available(DEFAULT_PRINTER_PIPE)) {
|
||||
size_t len = ESPCOM::available(DEFAULT_PRINTER_PIPE);
|
||||
uint8_t sbuf[len+1];
|
||||
uint8_t * sbuf = (uint8_t *)malloc(len+1);
|
||||
if(!sbuf){
|
||||
return false;
|
||||
}
|
||||
sbuf[len] = '\0';
|
||||
ESPCOM::readBytes (DEFAULT_PRINTER_PIPE, sbuf, len);
|
||||
#ifdef TCP_IP_DATA_FEATURE
|
||||
@ -366,6 +376,7 @@ bool ESPCOM::processFromSerial (bool async)
|
||||
#endif
|
||||
//process data if any
|
||||
COMMAND::read_buffer_serial (sbuf, len);
|
||||
free(sbuf);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user