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
  Client.read() Zwischenspeicher erstellen!? Gura 11 4.920 16.04.2019 11:05
Letzter Beitrag: Blende8
  Hilfe bei Formulierung der Frage Matt 3 365 23.02.2019 12:45
Letzter Beitrag: Tommy56
  Frage zur Datei "preferences.txt" daja64 5 344 17.02.2019 21:00
Letzter Beitrag: amithlon
  Wire.write und Client Socket LiVe 3 477 11.01.2019 13:51
Letzter Beitrag: Tommy56
  Frage zu goto uweausbaden 5 389 23.12.2018 13:56
Letzter Beitrag: hotsystems
  Guren Morgen, Frage zu SD BanditBandeh 2 389 05.12.2018 10:19
Letzter Beitrag: Tommy56
  define Frage Zerebrator 5 629 22.08.2018 08:22
Letzter Beitrag: amithlon
  Frage zur Programierung ????? potmc 7 698 18.08.2018 11:34
Letzter Beitrag: Hilgi
Exclamation Frage zur I2C zwischen Master und Slave saberlucien 6 1.259 27.02.2018 15:49
Letzter Beitrag: Tommy56
  [Frage] Unterschied zwischen &=~ und ^= beim Bit ändern auf dem Port? avoid 13 1.881 11.01.2018 00:53
Letzter Beitrag: avoid

Gehe zu:


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