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
  Kommunikation über das WiFi-Shield Flap 13 1.407 12.09.2017 22:12
Letzter Beitrag: Flap
  Frage zu STM32F1xx / Was kann ich bei dieser Fehlermeldung machen? Holzwurm56 37 1.389 04.09.2017 14:14
Letzter Beitrag: Holzwurm56
Brick Welcher FTP Client um mehrere Dateien auf den Server zu schieben. derAllgaeuer 26 1.795 19.08.2017 21:27
Letzter Beitrag: Bitklopfer
  String / HTTP Request Marc2014 4 679 23.12.2016 15:42
Letzter Beitrag: Tommy56
  NRF24L01 Packet / Msg Frage Marc2014 5 515 07.11.2016 18:08
Letzter Beitrag: hotsystems
  Ausgabe auf WIFI Console vom UNO WIFI MZ-Lurre 0 328 17.10.2016 11:33
Letzter Beitrag: MZ-Lurre
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 834 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 1.015 22.08.2016 08:07
Letzter Beitrag: b3ta
Question Webserver, Client, Loop Marc2014 6 886 29.07.2016 21:04
Letzter Beitrag: Marc2014
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 588 26.06.2016 22:11
Letzter Beitrag: hotsystems

Gehe zu:


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