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 Ethernet shrimps 31 17.298 29.06.2020 16:50
Letzter Beitrag: miq19
  ESP32-Cam, Loop Verständnisfrage Gould 5 201 26.06.2020 17:50
Letzter Beitrag: Gould
  AD9833 an ESP32 - Amplitudenanpassung möglich? Gerdchen03 1 158 23.06.2020 21:38
Letzter Beitrag: ardu_arne
  Encoder an ESP32 Gerdchen03 19 1.176 22.06.2020 09:00
Letzter Beitrag: biologist
  Heltec Wifi Kit 32 nicht erkannt Bobonetto 3 283 17.06.2020 20:45
Letzter Beitrag: nbk83
  ESP32-CAM Fehlermeldung db91595 14 2.212 17.06.2020 11:43
Letzter Beitrag: db91595
  ESP32-CAM Accesspointproblem mit Handy vonvogel 14 841 15.06.2020 08:10
Letzter Beitrag: vonvogel
  ESP32: flankengetriggerter Interrupt - Spezifikation der "Flanke" georg1010 0 213 13.06.2020 22:47
Letzter Beitrag: georg1010
  AI Thinker ESP32 CAM, Flash LED leuchtet leicht nach DEEP SLEEP spok1 0 308 01.06.2020 14:00
Letzter Beitrag: spok1
  AD9833 an ESP32 Devkit V1 Gerdchen03 8 861 30.05.2020 22:55
Letzter Beitrag: Gerdchen03

Gehe zu:


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