• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос SPI + webclie

NickTxD

New member
Добрый день.
Хотел посоветоваться с людьми имеющими опыт программирования под esp.
Правильно ли построен скетч, с точки зрения максимальной производительности?
ESP получает данные по SPI, объединяет 32байтные посылки в пакет размером 2048 и отправляет на сервер.
Код:
#include "SPISlave.h"
#include <ESP8266WiFi.h>

const char* ssid = "XXX";     
const char* password = "XXX";   

const char *server = "XXX";
const int port = XXX;

WiFiClient client;

int BUF_SIZE = 2048;
int count;
String buf;

void setup_wifi() {
  delay(10);

  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void connect(){
 
  while (!client.connect(server, port)) {
    Serial.println("connection failed");
    delay(500);
  }
  Serial.println("Connected to server!");
}

void setup()
{
   Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    count = 0;
    buf = "";
   
    SPISlave.onData([](uint8_t * data, size_t len) {
        String message = String((char *)data);

        buf.concat(message);
        count+=32;
    });
   
  setup_wifi();
 
  connect();
  client.setNoDelay(true);

  SPISlave.begin();

}

void loop() {
  if(count>2047){
   
    if(client.connected()){
      client.print(buf);
    }
    else
      connect();
    count = 0;
    buf = "";
  }
}
 
Сверху Снизу