Skocz do zawartości

ESPAsyncWebServer


robo1973

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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'

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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 !!

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.