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
html, client , NODEMCULUA, Wifi, match request , Frage
04.02.2016, 12:17
Beitrag #1
html, client , NODEMCULUA, Wifi, match request , Frage
Hallo Leute, ich verstehe bei diesem code eine Sache nicht?!

Und zwar wird ja nach dem / abgefragt. was ich nicht verstehe warum das ganze so gemacht wird:

Code:
int val = -1;
                
  if (req.indexOf("/led/0") != -1)
    val = 0;
  else if (req.indexOf("/led/1") != -1)
    val = 1;
  else if (req.indexOf("/read") != -1)
    val = -2;

ich wollte das ganze erweitern auf mehrere Funktionen jedoch komme ich nicht dahinter was diese -1 soll?! Und was bitte bringt den code dazu beim lesen von /read als Ergebnis: -2 zu erhalten?? Huh

ich dachte es würde so auch gehen:

Code:
int val = 0;
                
  if (req.indexOf("/led/1"))
    val = 1;
  else if (req.indexOf("/led/2"))
    val = 2;
  else if (req.indexOf("/led/3"))
    val = 3;

Leider macht der code so gar nichts Confused

Ich wollte ein Programm das ca. 6 Befehle in der Suchzeile vergleicht und dementsprechend die val setzt, damit ich danach dann damit die 6 unterprogramme
aktivieren / deaktivieren kann. Aber mein Problem ist ich finde kein BSP um zu verstehen was das mit -1 usw soll? Ich will ja nur ganz einfach 6 Zahlen unterscheiden.

/led/1
/led/2
/led/3
/led/4
/led/5
/led/6

//////////////////////////////////////////////////////////////////////////

nachfolgend der Originalcode:




Code:
{
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  int val = -1; // We'll use 'val' to keep track of both the
                // request type (read/set) and value if set.
  if (req.indexOf("/led/0") != -1)
    val = 0; // Will write LED low
  else if (req.indexOf("/led/1") != -1)
    val = 1; // Will write LED high
  else if (req.indexOf("/read") != -1)
    val = -2; // Will print pin reads
  // Otherwise request will be invalid. We'll say as much in HTML

  // Set GPIO5 according to the request
  if (val >= 0)
    digitalWrite(LED_PIN, val);

  client.flush();

  // Prepare the response. Start with the common header:
  String s = "HTTP/1.1 200 OK\r\n";
  s += "Content-Type: text/html\r\n\r\n";
  s += "<!DOCTYPE HTML>\r\n<html>\r\n";
  // If we're setting the LED, print out a message saying we did
  if (val >= 0)
  {
    s += "LED is now ";
    s += (val)?"on":"off";
  }
  else if (val == -2)
  { // If we're reading pins, print out those values:
    s += "Analog Pin = ";
    s += String(analogRead(ANALOG_PIN));
    s += "<br>"; // Go to the next line.
    s += "Digital Pin 12 = ";
    s += String(digitalRead(DIGITAL_PIN));
  }
  else
  {
    s += "Invalid Request.<br> Try /led/1, /led/0, or /read.";
  }
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}


Für jede Art von Hilfe bin ich dankbar denn komme so leider nicht weiter :/

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2016, 15:32
Beitrag #2
RE: html, client , NODEMCULUA, Wifi, match request , Frage
Hallo,
(04.02.2016 12:17)Marc2014 schrieb:  Hallo Leute, ich verstehe bei diesem code eine Sache nicht?!

Und zwar wird ja nach dem / abgefragt. was ich nicht verstehe warum das ganze so gemacht wird:

Code:
int val = -1;
                
  if (req.indexOf("/led/0") != -1)
    val = 0;
  else if (req.indexOf("/led/1") != -1)
    val = 1;
  else if (req.indexOf("/read") != -1)
    val = -2;

ich wollte das ganze erweitern auf mehrere Funktionen jedoch komme ich nicht dahinter was diese -1 soll?! Und was bitte bringt den code dazu beim lesen von /read als Ergebnis: -2 zu erhalten?? Huh

ich dachte es würde so auch gehen:

Code:
int val = 0;
                
  if (req.indexOf("/led/1"))
    val = 1;
  else if (req.indexOf("/led/2"))
    val = 2;
  else if (req.indexOf("/led/3"))
    val = 3;

Leider macht der code so gar nichts Confused

Logisch. Hast Du Dir mal die Funktionsweise von indexOf in der Stringklasse angeschaut?
Die liefert -1 zurück wenn der String nicht gefunden wurde oder die Position des ersten Zeichens des Suchstrings.

(04.02.2016 12:17)Marc2014 schrieb:  Ich wollte ein Programm das ca. 6 Befehle in der Suchzeile vergleicht und dementsprechend die val setzt, damit ich danach dann damit die 6 unterprogramme
aktivieren / deaktivieren kann. Aber mein Problem ist ich finde kein BSP um zu verstehen was das mit -1 usw soll? Ich will ja nur ganz einfach 6 Zahlen unterscheiden.

/led/1
/led/2
/led/3
/led/4
/led/5
/led/6

Dann mach es doch.

Code:
int val = -1;
                
  if (req.indexOf("/led/0") != -1)
    val = 0;
  else if (req.indexOf("/led/1") != -1)
    val = 1;
  else if (req.indexOf("/led/2") != -1)
    val = 2;
  else if (req.indexOf("/led/3") != -1)
    val = 3;
  else if (req.indexOf("/led/4") != -1)
    val = 4;
  else if (req.indexOf("/led/5") != -1)
    val = 5;
  else if (req.indexOf("/led/6") != -1)
    val = 6;
  else if (req.indexOf("/read") != -1)
    val = -2;

(04.02.2016 12:17)Marc2014 schrieb:  
Code:
// Match the request
  int val = -1; // We'll use 'val' to keep track of both the
                // request type (read/set) and value if set.
  if (req.indexOf("/led/0") != -1)
    val = 0; // Will write LED low
  else if (req.indexOf("/led/1") != -1)
    val = 1; // Will write LED high

hier mußt Du natürlich auch noch alles entsprechend Deinen Absichten anpassen.

Code:
else if (req.indexOf("/read") != -1)
    val = -2; // Will print pin reads
  // Otherwise request will be invalid. We'll say as much in HTML

  // Set GPIO5 according to the request
  if (val >= 0)
    digitalWrite(LED_PIN, val);

  client.flush();

  // Prepare the response. Start with the common header:
  String s = "HTTP/1.1 200 OK\r\n";
  s += "Content-Type: text/html\r\n\r\n";
  s += "<!DOCTYPE HTML>\r\n<html>\r\n";
  // If we're setting the LED, print out a message saying we did
  if (val >= 0)
  {
    s += "LED is now ";
    s += (val)?"on":"off";
  }
  else if (val == -2)
  { // If we're reading pins, print out those values:
    s += "Analog Pin = ";
    s += String(analogRead(ANALOG_PIN));
    s += "<br>"; // Go to the next line.
    s += "Digital Pin 12 = ";
    s += String(digitalRead(DIGITAL_PIN));
  }
  else
  {
    s += "Invalid Request.<br> Try /led/1, /led/0, or /read.";
  }
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}


Für jede Art von Hilfe bin ich dankbar denn komme so leider nicht weiter :/

Gruß Marc

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2016, 18:41
Beitrag #3
RE: html, client , NODEMCULUA, Wifi, match request , Frage
Vielen Dank Michael jetzt funktioniert alles Blush

Du hast mir sehr geholfen Exclamation



Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP8266 ESP12-E Webserver-Frage Claus_M 8 236 14.11.2016 22:02
Letzter Beitrag: Claus_M
  Kommunikation über das WiFi-Shield Flap 3 229 07.11.2016 20:20
Letzter Beitrag: hotsystems
  NRF24L01 Packet / Msg Frage Marc2014 5 121 07.11.2016 18:08
Letzter Beitrag: hotsystems
  Ausgabe auf WIFI Console vom UNO WIFI MZ-Lurre 0 88 17.10.2016 11:33
Letzter Beitrag: MZ-Lurre
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 347 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 447 22.08.2016 08:07
Letzter Beitrag: b3ta
Question Webserver, Client, Loop Marc2014 6 362 29.07.2016 21:04
Letzter Beitrag: Marc2014
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 238 26.06.2016 22:11
Letzter Beitrag: hotsystems
  Frage zu FastLed First Light Wolfgang_2801 1 227 19.06.2016 16:57
Letzter Beitrag: hotsystems
  ESP8266 HTML Problem arduino_weatherstation 1 491 25.04.2016 21:52
Letzter Beitrag: rkuehle

Gehe zu:


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