INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
esp32 wifi - new Client als Unterproramm
12.11.2019, 15:03
Beitrag #1
esp32 wifi - new Client als Unterproramm
Hi Leute,
ich möchte zwecks Übersichtlichkeit den Programmteil für die Abfrage eines clients von "void (loop)" in das Unterprogramm "void new_client()" verlegen (siehe File "2_WIFI new client Aufruf aus _void loop()" und bekomme beim überprüfen (compilieren) des Codes die Fehlermeldung "Client was not declared in this scope" (siehe File: 5:Wifi new client ENDE").

Ich nehme an, das es daran liegt, dass der Befehl zur Einbindung von "wifi.h" (#include <WiFi.h>) an der falschen Stelle steht (siehe File "1_WIFI _include wifi.h_ Datei"). Derzeit steht die diese Einbindung ausserhalb jeder Funktionsdeklaration (ausserhalb von den Unterprogrammen) und damit global.

Aber wo soll man die Einbindung von "wifi.h" (#include <WiFi.h>) sonst hinschreiben, damit keine Fehlermeldung kommt.
lGG


Angehängte Datei(en) Thumbnail(s)
               
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2019, 15:11
Beitrag #2
RE: esp32 wifi - new Client als Unterproramm
Dann setze deine Sketche und Meldungen in Code-Tags ins Forum.
Dann ist das für alle besser lesbar.

Wie das geht, steht hier.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2019, 15:18
Beitrag #3
RE: esp32 wifi - new Client als Unterproramm
(12.11.2019 15:11)hotsystems schrieb:  Dann setze deine Sketche und Meldungen in Code-Tags ins Forum.
Dann ist das für alle besser lesbar.

Wie das geht, steht hier.

[/code]
/*
07__WiFi_Web_Server_LED_Blink

youtube https://www.youtube.com/watch?v=ZAqNKaX3LQ0 (ab 0:48 von 10:43)
https://github.com/espressif/arduino-esp...Server.ino
WiFi Web Server LED Blink
A simple web server that lets you blink an LED via the web.
This sketch will print the IP address of your WiFi Shield (once connected)
to the Serial monitor. From there, you can open that address in a web browser
to turn on and off the LED on pin 5.
If the IP address of your shield is yourAddress:
http://yourAddress/H turns the LED on
http://yourAddress/L turns it off
This example is written for a network using WPA encryption. For
WEP or WPA, change the Wifi.begin() call accordingly.
Circuit:
WiFi shield attached
LED attached to pin 5
created for arduino 25 Nov 2012
by Tom Igoe
ported for sparkfun esp32
31.01.2017 by Jan Hendrik Berlin

*/

#include <WiFi.h>

const char* ssid = "ssxxxxxxxyy[/code]";
const char* password = "ssxxxxxxxyy";
int ledPin = 18;
WiFiServer server(80);

void setup()

{

Serial.begin(115200);

pinMode(ledPin, OUTPUT); // set the LED pin mode

delay(10);

// We start by connecting to a WiFi network

Serial.println();
Serial.println();
Serial.print("<"); Serial.print(WL_CONNECTED); Serial.print(">"); Serial.println(WiFi.status());
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);
//Serial.print("<<<");Serial.print(WL_CONNECTED);Serial.print(">>>");Serial.println(WiFi.status());
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
// Serial.print("<");Serial.print(WL_CONNECTED);Serial.print(">");Serial.println(WiFi.status());
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected.");
Serial.print("<<"); Serial.print(WL_CONNECTED); Serial.print(">>"); Serial.println(WiFi.status());
Serial.println("IP address: ");
Serial.println(WiFi.localIP());

server.begin();

}

void new_client()
#include <WiFi.h>
{ // if you get a client,
Serial.println("New Client."); // print a message out the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write©; Serial.write("~"); // print it out the serial monitor
if (c == '\n') { // if the byte is a newline character

// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();

// the content of the HTTP response follows the header:
client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 5 on.<br>");
client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 5 off.<br>");

// The HTTP response ends with another blank line:
client.println();
// break out of the while loop:
break;
} else { // if you got a newline, then clear currentLine:
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}

// Check to see if the client request was "GET /H" or "GET /L":
if (currentLine.endsWith("GET /H")) {
digitalWrite(ledPin, HIGH); // GET /H turns the LED on
}
if (currentLine.endsWith("GET /L")) {
digitalWrite(ledPin, LOW); // GET /L turns the LED off
}
}
}
// close the connection:
client.stop();
Serial.println("Client Disconnected.");
} // Ende von "void new_client()"

int value = 0;

void loop() {
if (WiFi.status() != WL_CONNECTED) { // Wenn WIFI-Verbindung unterbrochen ist, dann beim WFI-Netz wieder anmelden
setup();
}
WiFiClient client = server.available(); // listen for incoming clients

// delay(100);Serial.print("client<");Serial.print(client);Serial.print(">");Serial.println(WiFi.status());
if (client == true) { // if you get a client
new_client();
}
}[code]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.11.2019, 15:22
Beitrag #4
RE: esp32 wifi - new Client als Unterproramm
Hat fast geklappt.
Nur hast du die Tags vertauscht.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 10:17 (Dieser Beitrag wurde zuletzt bearbeitet: 13.11.2019 10:20 von georg1010.)
Beitrag #5
RE: esp32 wifi - new Client als Unterproramm
(12.11.2019 15:22)hotsystems schrieb:  Hat fast geklappt.
Nur hast du die Tags vertauscht.

Sorry,
hoffentlich funktieniert es jetzt:
Code:
/* 07__WiFi_Web_Server_LED_Blink

   youtube https://www.youtube.com/watch?v=ZAqNKaX3LQ0  (ab 0:48 von 10:43)
   https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/SimpleWiFiServer/SimpleWiFiServer.ino
  WiFi Web Server LED Blink
  A simple web server that lets you blink an LED via the web.
  This sketch will print the IP address of your WiFi Shield (once connected)
  to the Serial monitor. From there, you can open that address in a web browser
  to turn on and off the LED on pin 5.
  If the IP address of your shield is yourAddress:
  http://yourAddress/H turns the LED on
  http://yourAddress/L turns it off
  This example is written for a network using WPA encryption. For
  WEP or WPA, change the Wifi.begin() call accordingly.
  Circuit:
   WiFi shield attached
   LED attached to pin 5
  created for arduino 25 Nov 2012
  by Tom Igoe
  ported for sparkfun esp32
  31.01.2017 by Jan Hendrik Berlin

*/

#include <WiFi.h>

const char* ssid     = "xxxxxt";
const char* password = "ddxxxxxxx";
int ledPin = 18;
WiFiServer server(80);

void setup()
{
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);      // set the LED pin mode
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.println();
  Serial.print("<"); Serial.print(WL_CONNECTED); Serial.print(">"); Serial.println(WiFi.status());
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  //Serial.print("<<<");Serial.print(WL_CONNECTED);Serial.print(">>>");Serial.println(WiFi.status());
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    // Serial.print("<");Serial.print(WL_CONNECTED);Serial.print(">");Serial.println(WiFi.status());
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.print("<<"); Serial.print(WL_CONNECTED); Serial.print(">>"); Serial.println(WiFi.status());
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void new_client()

{                                           // if you get a client,
  Serial.println("New Client.");           // print a message out the serial port
  String currentLine = "";                // make a String to hold incoming data from the client
  while (client.connected()) {            // loop while the client's connected
    if (client.available()) {             // if there's bytes to read from the client,
      char c = client.read();             // read a byte, then
      Serial.write(c); Serial.write("~");                   // print it out the serial monitor
      if (c == '\n') {                    // if the byte is a newline character

        // if the current line is blank, you got two newline characters in a row.
        // that's the end of the client HTTP request, so send a response:
        if (currentLine.length() == 0) {
          // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
          // and a content-type so the client knows what's coming, then a blank line:
          client.println("HTTP/1.1 200 OK");
          client.println("Content-type:text/html");
          client.println();

          // the content of the HTTP response follows the header:
          client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 5 on.<br>");
          client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 5 off.<br>");

          // The HTTP response ends with another blank line:
          client.println();
          // break out of the while loop:
          break;
        } else {    // if you got a newline, then clear currentLine:
          currentLine = "";
        }
      } else if (c != '\r') {  // if you got anything else but a carriage return character,
        currentLine += c;      // add it to the end of the currentLine
      }

      // Check to see if the client request was "GET /H" or "GET /L":
      if (currentLine.endsWith("GET /H")) {
        digitalWrite(ledPin, HIGH);               // GET /H turns the LED on
      }
      if (currentLine.endsWith("GET /L")) {
        digitalWrite(ledPin, LOW);                // GET /L turns the LED off
      }
    }
  }
  // close the connection:
  client.stop();
  Serial.println("Client Disconnected.");
}   // Ende von "void new_client()"

int value = 0;

void loop() {
  if (WiFi.status() != WL_CONNECTED) {  // Wenn WIFI-Verbindung unterbrochen ist, dann beim WFI-Netz wieder anmelden
    setup();
  }
  WiFiClient client = server.available();   // listen for incoming clients

  // delay(100);Serial.print("client<");Serial.print(client);Serial.print(">");Serial.println(WiFi.status());
  if (client == true) {                     // if you get a client
    new_client();
  }
}

Danke euch
lgg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2019, 12:10
Beitrag #6
RE: esp32 wifi - new Client als Unterproramm
Du solltest Dich mal mit dem Gültigkeits- und Sichtbarkeitsbereich von Variablen beschäftigen. client ist nur innerhalb von loop bekannt. Entweder DU machst ihn global oder übergibst ihn an die Funktion. z.B. (ungetestet):
Code:
void new_client(WiFiClient &client) {
...
}

// Aufruf:
new_client(client);

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 hängt -> reset per Attiny85 hYtas 107 3.691 Heute 12:48
Letzter Beitrag: amithlon
  esp32 Float in EEPROM schreiben lesen wwilhelm 8 215 02.12.2019 11:13
Letzter Beitrag: wwilhelm
  ESP32 BT Master MarcelN 0 75 02.12.2019 10:29
Letzter Beitrag: MarcelN
  ESP32 - Dualcore georg1010 2 101 01.12.2019 16:19
Letzter Beitrag: amithlon
  WiFi aktiv, trotz Nichtnutzung Bernd666 13 338 30.11.2019 21:50
Letzter Beitrag: amithlon
Question ESP32 Webserver Problem opitzh 31 845 28.11.2019 16:27
Letzter Beitrag: Tommy56
  ESP32 - ungewöhnliche Anzeige an der ser. Schnittstelle georg1010 4 229 28.11.2019 14:57
Letzter Beitrag: Tommy56
Question Control Unit für Relay mit ESP32 2uk 38 1.776 26.11.2019 17:27
Letzter Beitrag: 2uk
  ESP32 - welche WIFI Library nehmen georg1010 2 290 16.11.2019 19:02
Letzter Beitrag: amithlon
  Sketch von einen ESP8266 auf ein ESP32 portieren (hagelt Fehlermeldung) magnum1795 23 1.264 13.11.2019 14:38
Letzter Beitrag: magnum1795

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste