From 1b4380dd2f10032e8ba3012ab4c13e9e97c59a84 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <67171972+IoTManagerProject@users.noreply.github.com> Date: Tue, 25 Jan 2022 00:14:23 +0100 Subject: [PATCH] =?UTF-8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BA=D0=B5=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/StandWebServer.h | 3 ++- src/StandWebServer.cpp | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/StandWebServer.h b/include/StandWebServer.h index 343eb91f..32c7a7a6 100644 --- a/include/StandWebServer.h +++ b/include/StandWebServer.h @@ -23,4 +23,5 @@ extern void hexdump(const void* mem, uint32_t len, uint8_t cols); void sendFileToWs3(const String& filename, uint8_t num); void sendFileToWs4(const String& filename, uint8_t num); -void sendFileToWs5(const String& filename, uint8_t num); \ No newline at end of file +void sendFileToWs5(const char* filename, uint8_t num); +char* getFileMark(const char* filename, const char* mark); \ No newline at end of file diff --git a/src/StandWebServer.cpp b/src/StandWebServer.cpp index 4a77d69c..c7527925 100644 --- a/src/StandWebServer.cpp +++ b/src/StandWebServer.cpp @@ -326,9 +326,13 @@ void sendFileToWs4(const String& filename, uint8_t num) { } //посылка данных из файла в бинарном виде -void sendFileToWs5(const String& filename, uint8_t num) { - standWebSocket.sendTXT(num, "/st" + filename); - // standWebSocket.createHeader(); +void sendFileToWs5(const char* filename, uint8_t num) { + size_t size = strlen(filename); + uint8_t filenameUint[size]; + for (size_t i = 0; i < size; i++) { + filenameUint[i] = uint8_t(filename[i]); + } + standWebSocket.sendBIN(num, filenameUint, sizeof(filenameUint)); size_t ws_buffer = 512; String path = filepath(filename); auto file = FileFS.open(path, "r"); @@ -336,12 +340,20 @@ void sendFileToWs5(const String& filename, uint8_t num) { SerialPrint(F("E"), F("FS"), F("reed file error")); } size_t fileSize = file.size(); - SerialPrint(F("i"), F("WS"), "Send file '" + filename + "', file size: " + String(fileSize)); + SerialPrint(F("i"), F("WS"), "Send file '" + String(filename) + "', file size: " + String(fileSize)); uint8_t payload[ws_buffer + 1]; int countRead = file.read(payload, sizeof(payload) - 1); while (countRead > 0) { payload[countRead] = 0; - standWebSocket.sendBIN(num, payload, countRead); //, true); + standWebSocket.sendBIN(num, payload, countRead); countRead = file.read(payload, sizeof(payload) - 1); } + standWebSocket.sendBIN(num, filenameUint, sizeof(filenameUint)); } + +char* getFileMark(const char* filename, const char* mark) { + char summ[strlen(filename) + strlen(mark)]; + strcpy(summ, filename); + strcpy(summ, mark); + return summ; +} \ No newline at end of file