Acties:
  • 0 Henk 'm!

  • Stefan.Z
  • Registratie: Juli 2012
  • Laatst online: 21-09 13:47
Hallo,

Voor een arduino project ben ik opzoek naar een manier om een html link uit de seriële monitor om te zetten naar een int. Ik heb alleen geen idee hoe ik zo iets voor elkaar kan krijgen, google kan mij hier ook niet echt mee helpen.

Dit heb ik in de seriële monitor staan:

GET /?LED=10 HTTP/1.1

Nu wil ik graag het getal 10 als een numeral data op kunnen slaan om zo weer te kunnen gebruiken. Dit komt uit een textbox op een html pagina.

Wie kan mij vertellen hoe ik dit het beste kan doen?

Alvast bedankt!

Skoftig


Acties:
  • +1 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 16:40
Ik zou de url beschouwen als tekst. Hierin kan je op zoek naar de tekst "LED=".
Dit zoeken doe je met https://www.arduino.cc/en/Tutorial/StringIndexOf

Je krijg dan de beginpositie van de tekst. Daar tel je 4 bij op. Dan zit je op de beginpositie van het getal.
Evenentueel doe je iets soortgelijks met de eindpositie.

Vervolgens deel je met de verkregen positie de tekst op in delen. https://www.arduino.cc/en/Tutorial/StringSubstring

Onderaan de pagina zie je nog meer string (tekst) operaties.

--

Ik begrijp niet exact wat je wilt doen. Heeft je arduino WiFi/Ethernet tot zijn beschikking?
Zo ja dan zou ik eens zoeken naar "Arduino Rest API".

[ Voor 13% gewijzigd door Sepio op 12-06-2016 05:26 ]


Acties:
  • 0 Henk 'm!

  • Tom-Z
  • Registratie: Augustus 2010
  • Laatst online: 08:11
Sepio heeft ongeveer het juiste idee, maar het is heel onhandig om substring te gebruiken. Dat maakt namelijk een kopie van het betreffende deel, terwijl je ook gewoon de int kan lezen zonder dat te doen.

Je kan het overigens doen zonder de string überhaupt op te slaan, namelijk door te tellen hoeveel characters van het LED=-gedeelte je al hebt gezien en dan een parseInt te doen.

Acties:
  • +1 Henk 'm!

  • Stefan.Z
  • Registratie: Juli 2012
  • Laatst online: 21-09 13:47
Het is gelukt met deze code:


GET /?LED=10%3A30 HTTP/1.1




if (readString.indexOf("LED=")>1 && Switch > 0)
{
Serial.println(readString); //prints string to serial port out
int pos1 = readString.indexOf('=');
int pos2 = readString.indexOf('%');
int pos3 = readString.indexOf('A');
int pos4 = readString.indexOf('&');
newString = readString.substring(pos1+1, pos2);
newStringmin = readString.substring(pos3+1, pos4);
Serial.print("newString is: ");
Serial.println(newString);
Serial.print("newStringmin is: ");
Serial.println(newStringmin);
val = newString.toInt();
Serial.print("The value sent is: ");
Serial.println(val);
valmin = newStringmin.toInt();
Serial.print("The value sent is: ");
Serial.println(valmin);
readString=""; //clears variable for new input
newString=""; //clears variable for new input
newStringmin=""; //clears variable for new input
// client.print("<meta http-equiv=\"refresh\" content=\"10\">"); // refresh
}

Skoftig