Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'tcp'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 2 wyniki

  1. Witam chyba juz od tygodnia walcze z pewnym problemem i nie potrafie sobie samemu poradzic a w internecie tez ciezko znalesc podobne problemy... Mianowicie chce skomunikowac kilka modułow ESP32 ze soba korzystajac z protokolu TCP/IP (jeden ESP jest serwerem, reszta sie do niego laczy). Kazdy z ESP chce rozrozniac przez adres IP i w zaleznosci od adresu wrzucac przychodzace dane do konkretnej zmiennej. Aby odczytac adres IP wykorzystuje clien.remoteIP() - zwraca adres IP jednak gdy wywolam w loop ta funkcje wiecej niz jeden raz moj ESP dostaje crash pamieci: (komunikat: Guru Meditation Error: Core 0 panic'ed (InstrFetchProhibited). Exception was unhandled. Core 0 register dump: PC : 0x00000000 PS : 0x00060e30 A0 : 0x801100ad A1 : 0x3ffb3d30 A2 : 0x3ffccd7c A3 : 0x3ffccfb0 A4 : 0x3ffcb340 A5 : 0x3ffcb320 A6 : 0x0204a8c0 A7 : 0x0c04a8c0 A8 : 0x8010ff50 A9 : 0x3ffb3cf0 A10 : 0x3ffccd8c A11 : 0x3ffccfb0 A12 : 0x3ffb3d3c A13 : 0x00000044 A14 : 0x00000001 A15 : 0x00000006 SAR : 0x00000010 EXCCAUSE: 0x00000014 EXCVADDR: 0x00000000 LBEG : 0x4000c349 LEND : 0x4000c36b LCOUNT : 0x00000000 Backtrace: 0x00000000:0x3ffb3d30 0x401100aa:0x3ffb3d70 0x4011d011:0x3ffb3d90 0x40122019:0x3ffb3dd0 0x401272b6:0x3ffb3df0 0x401109cf:0x3ffb3e10 0x40088b7d:0x3ffb3e40 Dodam ze crash wystepuje zaraz przy probie polaczenia klientow do ESP Jesli podlaczam moduly bez rozpoznawania wszystko jest okej - jestem w stanie wysylac serie danych (co prawda idzie t wolno, kilkanascie razy wolniej niz przez UDP bo z wykorzystaniem UDP zrobilem juz identyczna rzecz) jednak rozpoznanie jest niezbedne aby prawidlowo segregowac dane - zalozmy ze kazde esp wysyla dane z innego czujnika - serwer musi to zebrac i obrobic... Gdy wywoluje client.remoteIP() tylko raz to program dziala (choc nie zawsze, czasem wymaga kilku resetow klienta) Czy ktos bylby tak dobry i doradzil lub naprowadzil mnie chociaz na odpowiedz jak sobie z tym poradzic? Moze gdzies jest dostepny przyklad? Załaczam rowniez kod serwera: #include <WiFi.h> WiFiServer server(80); // Set a object server as a WiFiServer class IPAddress IP(192,168,4,1); // Select ip and mask IPAddress mask = (255, 255, 255, 0); void setup() { Serial.begin(115200); WiFi.mode(WIFI_AP); // Set Wi-Fi as access point/server WiFi.softAP("ESP32", "123456789"); // SSID and Password for the AP WiFi.softAPConfig(IP, IP, mask); // Set our own desired IP address server.begin(); // Begin the server Serial.println("Server started."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); // .softAPIP calls for the IP of the access point which we set earlier Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); // Calls for the mac address } void loop() { WiFiClient client = server.available(); // Return a client object to the class if there is a client available client.setNoDelay(1); if (!client) {return;} // Return cuts the function (loop) if client class is not connected // String request = client.readStringUntil('\r'); // Reads string received until \r and saves as string // Serial.print("From "); // Serial.print(client.remoteIP()); // Serial.print(", port "); // Serial.println(client.remotePort()); if (client.remoteIP()[3] == 2){ // badanie ostatniego bajtu adresu IP w celu rozpoznania urzadzenia (adresy sa kolejno od 192.168.4.2 String request = client.readStringUntil('\r'); Serial.println(" Dostalem po TCP od 1 : " + request); client.println(" Dostalem po TCP: " + request + "\r"); // Send the data with the \r so the client knows when to stop } if (client.remoteIP()[3] == 3){ String request = client.readStringUntil('\r'); Serial.println(" Dostalem po TCP od 2 : " + request); client.println(" Dostalem po TCP: " + request + "\r"); // Send the data with the \r so the client knows when to stop } } Oraz kod klienta: #include <WiFi.h> IPAddress ip(192, 168, 4, 1); const char* host = "192.168.4.1"; //ip serwera do ktorego sie laczymy const uint16_t port = 80; int buffer; int sygnal[100]; //tablica do przechowania sprobkowanego sygnalu void setup() { Serial.begin(115200); Serial.println(); WiFi.begin("ESP32", "123456789"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); for (int i=0; i <100; i++){ //uzupelnienie zmiennej sygnal wartosciami probek od 0-99 sygnal[i]=i; } delay(2500); } void loop() { //Wydruk na serial monitor adresu i portu po ktorym sie łaczymy Serial.print("connecting to "); Serial.print(host); Serial.print(':'); Serial.println(port); for (int i=0; i <100; i++){ //petla w ktorej 100 razy wysylany jest pakiet 2 bajtow buffer=sygnal[i]; // Use WiFiClient class to create TCP connections WiFiClient client; //w przypadku niedostepnosci serwera czekaj 3 sekundy if (!client.connect(host, port)) { Serial.println("connection failed"); Serial.println("wait 3 sec..."); delay(3000); return; } // wyslanie zawartosci buffer na serwer client.print(buffer); client.println("\r"); Serial.print("Wyslalem po TCP: "); Serial.println(buffer); //odczytaj odpowiedz serwera Serial.print("Odpowiedz: "); String line = client.readStringUntil('\r'); Serial.println(line); Serial.println("closing connection"); client.stop(); } //czekaj 5 sekund przed ponowym wyslaniem sygnalu Serial.println("wait 5 sec..."); delay(5000); }
  2. Witam. Chciałem zrobić serwer tcp na esp32 który by miał odbierać dane z esp32 (wysyła mu dane wilgotność i temperaturę) do celowo ma być dwa takie esp32 z czujnikami. Tutaj ma problem bo serwer odbiera dane od czujników tylko ,że odbiera je po kolej i na wyświetlaczu mogę wyświetlić tylko wartość np temperatury z czujnika pierwszego( chciałbym aby można wyświetlać wilgotność i temperaturę z czujnika 1 na raz a po naciśnieciu przycisku nastąpiła zmiana na wartość czujnika 2). Nie wiem jak mogę to zrobić liczę na każdą pomoc, proszę też o jakieś podobne przykłady. #include <WiFi.h> #define SLEEP_TIME_SECONDS 10 const char* ssid ="xxx"; const char* password ="xx"; WiFiServer server(8088); void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); /* connecting to WiFi */ WiFi.begin(ssid, password); /*wait until ESP32 connect to WiFi*/ while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected with IP address: "); Serial.println(WiFi.localIP()); /* start Server */ server.begin(); } void loop() { /* listen for client */ WiFiClient client = server.available(); uint8_t data[30]; if (client) { Serial.println("new client"); /* check client is connected */ while (client.connected()) { if (client.available()) { int len = client.read(data, 30); if(len < 30){ data[len] = '\0'; }else { data[30] = '\0'; } Serial.print("client sent: "); Serial.println((char *)data); } } } }
×
×
  • Utwórz nowe...