• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 = "";
  }
}
 
Сверху Снизу