String mit integer vergleichen

Hallo nachfolgendes Beispiel stellt einen Webserver da, der per URL letztlich eine dreistellige Zahl empfangen soll. Das klappt auch ganz fantastisch. Der String mit Namen shstring enthaelt also eine dreistellige Ziffer, diese moechte ich mit einer Integr vergleichen, wie mache ich das, ich habe zig Varianten probiert, es ging gar nichts. Irgendwelche Ideen? Vielen dank vorab

/*
 * Web Server
 *
 * (Based on Ethernet's WebServer Example)
 *
 * A simple web server that shows the value of the analog input pins.
used call
http://ip-address/&123
 */

#include "WiFly.h"

#include "Credentials.h"


Server server(80);
String readString = String(100);
String shstring;
int recnum;

void setup() {
  WiFly.begin();

  if (!WiFly.join(ssid, passphrase)) {
    while (1) {
      // Hang on failure.
    }
  }

  Serial.begin(9600);
  Serial.print("IP: ");
  Serial.println(WiFly.ip());
  
  server.begin();
}

void loop() {
  Client client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
 //read char by char HTTP request
if (readString.length() < 100) {

//store characters to string
//readString.append(c);
readString = readString + c;
}       
        if (c == '\n' && current_line_is_blank) {
shstring = readString.substring(6,9);

    Serial.println(shstring);
    Serial.println("this was recognizednumber" );   
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          
           client.print("received_via_url=");
           client.print(shstring);

          break;
        }
        if (c == '\n') {
          // we're starting a new line
          current_line_is_blank = true;
        } else if (c != '\r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }
      }
    }
    // give the web browser time to receive the data
readString="";
delay(100);
    client.stop();
  }
}

Hallo

Ich hatte einmal ein ähnliches Problem und habe (soweit ich mich noch daran erinnern kann) den Character/String in einen Integer umgewandelt.
Versuch mal hier: int() - Arduino Reference und mit der Suche nach der Funktion atoi()

Gruss und viel Erfolg!

Du musst also ein string in ein integer umwandeln?
Ganz einfach:
Sagen wir die Zahl ist als ahsii Werte in
shstring = readString.substring(6,9);
Du musst ein finales null dazugeben:
shstring += "0";
und dann
Intwert = atoi(shstring);
Gruesse Uwe

Vielen Dank erstmal fuer die Hilfe, jetzt haenge ich anfolgender Fehlermeldung:

error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'

shstring = readString.substring(6,9);
prepstring = shstring +="0";
recnum = atoi(prepstring);

An der letzten Zeile klemmts.
shstring ist mein gekuerzter String
prepstring ist der umgebaute string (mit Null)
und recnum ist ein integer in den die Zeichenfolge umgewandelt werden sollte.

Irgendwelche Ideen?

Funktioniert ein einfacher Typecast nicht?

recnum = (int)prepstring;

Der Typecast funktioniert sicherlich nicht.

Funktionieren sollte:

recnum = atoi(String(readString.substring(6,9)));

Ich arbeite aber mit dieser String-Bibliothek nicht - Vorschlag ist deshalb reine Theorie :wink: