Прошу помощи, так как сил бороться больше нет. Посылаю по TCP с компа сообщение [набор чисел] + метка "JZ". Числа в виде short. Если одно из чисел оказывается меньше 256 (то есть содержат ноль в одном из двух байтов), то сообщение сразу превращается в нечитабельное, не удаётся считать даже последние символы, не смотря на то что длина сообщения корректная. С компа приходят точно корректные данные, проверял в приложении с телефона. Во всех остальных случаях всё работает и как-то не особо хочется колхозить велосипед.
Код:
#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>
#include <TCP_Stuct.h>
// Set these to your desired credentials.
const char *ssid = "yourAP";
const char *password = "yourPassword";
WiFiServer server(1024);
Joint6 joint;
void InitTCPWiFi(){
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
Serial.println();
Serial.println("Configuring access point...");
// You can remove the password parameter if you want the AP to be open.
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.begin();
Serial.println("Server started");
}
void TestLoop() {
WiFiClient client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
Serial.println("New Client."); // print a message out the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
currentLine= client.readString(); // читаю данные
// print it out the serial monitor
Serial.print("Data: ");
Serial.println(currentLine);
Serial.print("Data lenth: ");
Serial.println(currentLine.length());
if (currentLine.endsWith("JZ")){
currentLine.remove(currentLine.length() - 2, 2);
joint.IntoString(currentLine, 6); // здесь происходит запись в структуру, с ней всё в порядке
}
}
}
// close the connection:
client.stop();
Serial.println("Client Disconnected.");
}
}