Hallo zusammen.
Ich möchte über eine Web-GUI auf dem Arduino Variablen lesen und verändern und bin nicht ganz so vertraut mit der HTML-Seite.
GET und POST sind für mich böhmische Dörfer. Brauche ich da zwingend ein HMTL- Formular?
Kann man das Schreiben einer Variablen nur über einen "Submit"-Button triggern, oder auch sobald das Eingabefeld verlassen wird?
Kann mir evtl. jemand einen Code-Schnippsel geben (Arduino und HTML) , der mir beispielhaft das lesen und schreiben einer Variablen zeigt ? Vielen Dank schon mal im voraus
Gruss Ole
Danke. Wenn ich das richtig gelesen habe, dann machen die in dem Beispiel aber mit PHP rum und das geht ja nicht auf dem Arduino
AUF dem Arduino nicht, nein.
Sowas vielleicht?
olem_de:
GET und POST sind für mich böhmische Dörfer. Brauche ich da zwingend ein HMTL- Formular?
Kann man das Schreiben einer Variablen nur über einen "Submit"-Button triggern, oder auch sobald das Eingabefeld verlassen wird?
Kann mir evtl. jemand einen Code-Schnippsel geben (Arduino und HTML) , der mir beispielhaft das lesen und schreiben einer Variablen zeigt ?
Wenn du als User interface einen Web-Browser nehmen willst, ist GET und Forms ist eigentlich erstmal das Einfachste.
Von daher solltest du meiner Meinung nach damit anfangen (auch mit dem Verständnis), bevor du etwas Komplexeres suchst.
Was über das übliche WebServer-Beispiel hinausgeht, ist dein Wunsch, "beliebige" Variablen ändern zu wollen.
Das geht auch so nicht, da z.B. ein Text, der den Namen einer Variablen enthält, nicht automatisch mit der betreffenden Variablen verknüpft werden kann.
Dass eine Variable float Sollwert; mit dem Text "Sollwert" (oder einem beliebigen anderen Text) etwas zu tun hat, muss programmiert werden.
Falls ich deinen Post überhaupt richtig als so komplex verstehe...
Im einfacheren Fall:
Web-Parameter bestehen aus nur 1 Buchstaben und individuelle Programmierung ist klar:
Zusätzlich zum Standard webserver-Beispiel kommt nur, den client Anfrage-Text auswerten und in deinem Fall Variable setzen.
Das hat nichts mit ethernet/web o.ä. zu tun sondern ist die übliche mühsame Textverarbeitungs-Software,
aus einem Text
** **"......?x=1.0;y=123;\n"** **
die Einzel-Teile herauszufinden:
x 1.0
y 123
und sie jeweils passend zu bearbeiten
static float myX;
static int myY;
char* parameterstring = = strchr(Request,'?'); // set to begin of parameters
while ( parameterstring != NULL)
{
parameterstring++;
char cVar = *parameterstring++;
parameterstring++; // skip '='
switch (cVar)
{
case 'x' :
myX = atof(parameterstring);
break;
case 'y' :
myY = atoi(parameterstring);
break;
}
parameterstring = = strchr( parameterstring, ';'); // set to next parameter
} // end while
Als Pseudocode zu verstehen 
Was über das übliche WebServer-Beispiel hinausgeht, ist dein Wunsch, "beliebige" Variablen ändern zu wollen.
Das geht auch so nicht,
Da gäbe es so ein schönes Windows XP 32Bit App, beschrieben hier:
http://forum.arduino.cc/index.php?topic=211149.0
Ich weiß jetzt nicht genau, ob das hier gemeint ist.
Als Beispiel, ein div tag mit 2 Buttons, beim Drücken wird ein GET Befehl zum Arduino zurückgeschickt.
Der wird dann geparst, und eine Reaktion ausgelöst (Hier werden Relais geschaltet)
Der div tag mit den Buttons, die der Arduino zum Browser schickt:
client.println(("<div id=\"switcher\">"));
client.println("<h1>Relais Ausgänge</h1>");
client.println(("<div id=\"output1\">"));
client.println("<table border='1' width='200' cellpadding='5'>");
client.println("<tr bgColor='#222222'>");
client.println("<td align='center' bgcolor='#222222'><form method=\"get\"><input type=submit name=1 value='Einschalten'></form></td>");
client.println("<td align='center' bgcolor='#222222'><form method=\"get\"><input type=submit name=1 value='Ausschalten'> </form></td>");
if (Schalter1) client.println("<td align='center'><font color='green' size='5'>EIN"); else
client.println("<td align='center'><font color='red' size='5'>AUS");
client.println("</table>");
client.println("</div>"); // output1
Um den response zu parsen dann sowas:
void Process_switcher(char* request )
{
if (strstr(request,"1=Einschalten")!=NULL)
{
digitalWrite(RELAIS_1, LOW);
Schalter1 = 1;
}
if (strstr(request,"1=Ausschalten")!=NULL)
{
digitalWrite(RELAIS_1, HIGH);
Schalter1 = 0;
}
}
Die bool Variable Schalter1 dient dazu, den aktuellen Relaiszustand auf der Website anzuzeigen.
So funktioniert das bei meinem Homeserver Projekt.