Guten Abend Ich habe in den letzten Tagen meinen ersten WebServer mit einem Arduino UNO zum laufen gebracht. Nun kann ich zwei Ausgänge per Browser auf High oder Low setzten. Nun komme ich aber nicht weiter da ich so etwas wie ein Ausgabefeld suche. Ich möchte anzeigen lassen ob der jeweilige Ausgang High oder Low ist. So ein Textfeld werde ich auch in der Zukunkt benötigen ob Statusmeldungen an zu zeigen. Kann mir da jemand weiter helfen. Quellcode Arduino: ######################################################################## ### #if ARDUINO > 18 #include <SPI.h> // Für Arduino Version größer als 0018 #endif #include <Ethernet.h> #include <TextFinder.h> #include <SD.h> byte mac[] = { 0x5A, 0xA2, 0xDA, 0x0D, 0x56, 0x7A }; // MAC-Adresse des Ethernet-Shield byte ip[] = { 192, 168, 2, 102 }; // IP zum aufrufen des Webservers byte sdPin = 4; // Pin der SD-Karte EthernetServer server(80); // Server port File webFile; void setup() { Ethernet.begin(mac, ip); // Client starten server.begin(); // Server starten Serial.begin(9600); Serial.println("ARDUINO - STEUERUNG"); Serial.println("Initialisiere SD-Karte..."); if (!SD.begin(sdPin)) { Serial.println(" - Initialisierung der SD-Karte fehlgeschlagen!"); return; } Serial.println(" - SD-Karte erfolgreich initialisiert."); if (!SD.exists("index.htm")) { Serial.println(" - Datei (index.htm) wurde nicht gefunden!"); return; } Serial.println(" - Datei (index.htm) wurde gefunden."); Serial.println(); Serial.println("Verbraucher schalten"); } void loop() { EthernetClient client = server.available(); // Auf Anfrage warten if(client) { /***************************************** Ausgänge über das Webformular steuern *****************************************/ TextFinder finder(client); if(finder.find("GET")) { while(finder.findUntil("pin", "\n\r")) { char typ = client.read(); int pin = finder.getValue(); int val = finder.getValue(); if(typ == 'D') { pinMode(pin, OUTPUT); digitalWrite(pin, val); Serial.print(" - D"+String(pin)); } else if(typ == 'A') { analogWrite(pin, val); Serial.print(" - A"+String(pin)); } else Serial.print(" - Falscher Typ"); if(val==1) Serial.println(" ein"); else Serial.println(" aus"); } } /************************ Webformular anzeigen ************************/ boolean current_line_is_blank = true; // eine HTTP-Anfrage endet mit einer Leerzeile und einer neuen Zeile while (client.connected()) { if (client.available()) // Wenn Daten vom Server empfangen werden { char c = client.read(); // empfangene Zeichen einlesen if (c == '\n' && current_line_is_blank) // wenn neue Zeile und Leerzeile empfangen { // Standard HTTP Header senden client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); // Website von SD-Karte laden webFile = SD.open("test.htm"); // Website laden if (webFile) { while(webFile.available()) { client.write(webFile.read()); // Website an Client schicken } webFile.close(); } break; } if (c == '\n') { current_line_is_blank = true; } else if (c != '\r') { current_line_is_blank = false; } } } delay(1); client.stop(); } }
> Nun komme ich aber nicht weiter da ich so etwas wie ein > Ausgabefeld suche. Kennst du dich mit HTML aus? Du musst die HTML Seite dynamisch erzeugen, so dass sie die Werte enthält.
1 | <form> |
2 | Label: <input type="text" name="ausgabefeld" value="12345" readonly /> |
3 | </form> |
Oder einfach:
1 | Label: 12345 |
Oder du aktualisierst eine statische Seite mit AJAX (siehe Wikipedia), aber das ist komplexer.
Hey erstmal danke für deine Antwort :) Also ich habe nicht sehr viel Erfahrung mit HTML... Nur mit C Du meinst quasie eine Variable die den Text anzeigt und durch das beschreiben der Variable ändert sich auch der sichtbare text ? So in etwa...? ^^ Könntest du mir vielleicht wenns keine umstände macht ein Code Bsp. geben. Ich musste erst mal überlegen wo ich was ändern muss. Also im HTML Code oder im C Code. Gruß Matze PS: Frohe Weihnachten :)
Auf dem Webserver bringt nur HTML Code etwas. Denn er wird auf dem Client, dh dem Browser ausgefuehrt. Also. eine Eingabe : <input type="submit" name="myinput" value="1"> <input type="text" name="mytext" value="hsjahjh shjsadj klj"> <input type="radio" name="sex" value="male" checked>Male <button type="submit" name="mybtn" value="1"> drueck hier</button> Zuerst muss man natuerlich sagen, was dann geschehen soll. Also das form : <html> <head><title>seitertitel</title></head> <body><form action="input.php" method="post"> .. <button type="submit" name="mybtn" value="1"> drueck hier</button> .. </form></body></html> siehe auch : http://www.w3schools.com/html/default.asp
Wie werden werte vom Browser dem Webserver uebergeben. Als : index.html?myinput=1&input2="abc" Dafuer geibt's den Firebug Debugger als Erweiterung der Firefox Browsers. Damit kann man sich die Variablen ansehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.