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.
