Skocz do zawartości

ESPAsyncWebServer


Pomocna odpowiedź

Napisano (edytowany)

Witam !!

Czy ktoś z kolegów używa WebServer na esp32 ?

Nie bardzo wiem jak sprawdzić czy klient jest podłączony Szukam odpowiednika funkcji (jak zdefiniować w WebServer ) 

while (client.connected()) {
}

oraz jak odczytać dane od klienta odpowiednik

int messageSize = client.parseMessage();

    if (messageSize > 0) {
      String dir = client.readString();
      Serial.println("Received a message:");
      Serial.println(dir);

Pozdrawiam !!

Edytowano przez robo1973

Bo to nie do tego sluży - AsyncWebServer sam to sobie sprawdza, czyta to przeglądarka sobie wysłała, a Twój program ma się zająć wyłącznie obsługą sparsowanych już zapytań. Jeśli chcesz sam to robić (czyli po raz kolejny wynaleźć koło) to musisz użyć klasycznego Socket Servera - np. jak tu: https://techtutorialsx.com/2017/11/13/esp32-arduino-setting-a-socket-server/

  • Lubię! 1

ok dziękuje A jak wysłać po coket ? 

Poniżej wyrzuca błąd

f((millis() - last_send) > 50){
         String toPython = "";
        for (int a = 0; a < LIDAR_RESOLUTION; a++) {
          toPython.concat(distances[a]);
          toPython.concat(",");
          toPython.concat(signals[a]);
          toPython.concat(",");
        }

        client.beginMessage(TYPE_TEXT);
        client.print(toPython);
        client.endMessage();
        
        last_send = millis();
       }
      }

Dokładnie nie przyjmuje client.beginMessage(TYPE_TEXT); i client.endMessage() Chyba że coś robię źle . Coś nie pasuje Message

'class WiFiClient' has no member named 'beginMessage'

Może lepiej napisz co chcesz osiągnąć, bo jakoś dziwnie kombinujesz (jeśli to serwer a nie klient).

Ale nie "chcę uruchomić wificlient żeby miał beginMessage" tylko coś w stylu "Chcę przesyłać z urządzenia A do urządzenia B coś takiego (...) co (...) milisekund".

Będzie łatwiej.

A wić tak na esp32 uruchamiam program

//https://techtutorialsx.com/2018/05/17/esp32-arduino-sending-data-with-socket-client/

#include <WiFi.h>
 
const char* ssid = "FRITZ!Box 4040";
//const char* password =  "yourNetworkPass";
 
const uint16_t port = 8090;
const char * host = "192.168.178.69";
 
void setup()
{
 
  Serial.begin(115200);
 
  WiFi.begin(ssid);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("...");
  }
 
  Serial.print("WiFi connected with IP: ");
  Serial.println(WiFi.localIP());
 
}
 
void loop()
{
    WiFiClient client;
 
    if (!client.connect(host, port)) {
 
        Serial.println("Connection to host failed");
 
        delay(1000);
        return;
    }

 
    Serial.println("Connected to server successful!");

    while (client.available()>0) {
        char c = client.read();
        client.write(c);
        Serial.println(c);
      }
 
    client.print("Hello from ESP32!");
 
    Serial.println("Disconnecting...");
    client.stop();
 
    delay(10000);
}

esp32 wysyła do clienta :Hello from ESP (tekst)
Chcę jeszcze z klienta (skrypt pyton ) wysłać tekst do esp32 ale mnie bardzo działa

Pozdrawiam !!

A coś na laptopie znalazłem, taki fragmencik:


#include <WiFiUdp.h>
// przykładowe ustawienia

static uint16_t localUDPort = 1440;
static uint16_t remoteUDPort = 1552;

static WiFiUDP udp;
static char udpBuffer[256];


// inicjalizacja po połączeniu z WiFi, np. w setup()

        udp.begin(WiFi.localIP(), localUDPort);

// wysłanie komuikatu

        udp.beginPacket(IP_Odbiorcy, remoteUDPort);
        udp.write((const uint8_t *)msg,strlen(msg));
        udp.endPacket();
   
// odebranie komuikatu

    if (udp.parsePacket()) {
        int n = udp.read(udpBuffer,255);
        udpBuffer[n]=0;
        rób_coś(udpBuffer);
        }

Adres IP tego co wysłał komunikat możesz zrobić przez:

IP_Odbiorcy = udp.remoteIP();

OgólnieL https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/src/WiFiUdp.h

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...