Hallo zusammen, ich will über die Homepage des AVR verschiedene werte aus dem EEPROM laden und dort anzeigen. Das ganze will ich über HTTP GET realisieren. .)auf der homepage wird nach auswahl ein GET Response gesendet(OUT=X) .)nun will ich im httpd den Wert von X herausfiltern und je nach wert den EEPROM auslesen. Kann mir wer dabei helfen?
Hans Maulwurf schrieb: > Hallo zusammen, > > ich will über die Homepage des AVR Wer oder was ist 'die Homepage des AVR'. Ein AVR ist ja nicht a priori ein Web-Server. Da muss ja ein Programm laufen, welches einen Web Server realisiert.
Karl heinz Buchegger schrieb: > Hans Maulwurf schrieb: >> Hallo zusammen, >> >> ich will über die Homepage des AVR > > Wer oder was ist 'die Homepage des AVR'. > Ein AVR ist ja nicht a priori ein Web-Server. Da muss ja ein Programm > laufen, welches einen Web Server realisiert. vl habe ich den rest ja schon ;)
Hans Maulwurf schrieb: > Karl heinz Buchegger schrieb: >> Hans Maulwurf schrieb: >>> Hallo zusammen, >>> >>> ich will über die Homepage des AVR >> >> Wer oder was ist 'die Homepage des AVR'. >> Ein AVR ist ja nicht a priori ein Web-Server. Da muss ja ein Programm >> laufen, welches einen Web Server realisiert. > > vl habe ich den rest ja schon ;) Aber von diesem Rest hängt es ab, wie du diesen Rest verändern musst (wenn überhaupt) damit ein bestimmter GET Request von diesem Rest so verstanden wird, dass der Rest eine EEPROM Speicherzelle ausliest´und zurückliefert. Deine Frage ist ungefähr so sinnvoll wie: Ich möchte gerne meine Kofferraumbeleuchtung automatisieren. Welche Farbe hat das Kabel, an das ich mich anhängen muss und wo finde ich es? Ohne zumindest der Nennung der Automarke wird es da wohl keine so richtige sinnvolle Antwort geben können. Lieber in einer Fragestellung ein paar Details anführen, die keiner braucht als zuwenig Info als das ein Helfer damit etwas anfangen könnte.
ich will eig nur wissen wie man einen GET Request ausliest, muss ich nur HTTP beachten oder auch TCP?
Hans Maulwurf schrieb:
> ich will eig nur wissen wie man einen GET Request ausliest
Das macht der Rest doch schon, sonst wäre es ja kein Webserver.
Da Du den Rest ja hast ... verstehe ich Dein Problem nicht.
Geht in php z.B. so
1 | <?php |
2 | |
3 | $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); |
4 | |
5 | if(!isset($socket)) |
6 | echo('Socket konnte nicht erzeugt werden.<br>'); |
7 | if(!socket_connect($socket, gethostbyname('youtube.com'), 80)) |
8 | echo('Die Verbindung zum Youtube-Server konnte nicht hergestellt werden.<br>'); |
9 | else{ |
10 | $buffer = "GET http://gdata.youtube.com/feeds/api/users/username/uploads HTTP/1.0\n\n"; |
11 | if(!socket_send($socket, $buffer, strlen($buffer), 0)) |
12 | echo('GET-Request konnte nicht gesendet werden.<br>'); |
13 | else{ |
14 | |
15 | do
|
16 | {
|
17 | |
18 | $count = socket_recv($socket, $buffer, 1024, 0); |
19 | if($count==false) |
20 | {
|
21 | echo('<br><br>Verbindung unterbrochen!<br>'); |
22 | echo(socket_strerror(socket_last_error())); |
23 | break; |
24 | }
|
25 | |
26 | $buffer2.=$buffer; |
27 | }while($count>0); |
28 | }
|
29 | }
|
30 | socket_close($socket); |
31 | |
32 | |
33 | ?>
|
Die Antwort auf den GET-Request liegt danach in $buffer2. in dem Beispiel werden alle Youtube Videos des users 'username' zurückgeliefert. Den host und die Adresse ersetzt du natürlich durch das, was du haben willst. Ach ja, am Anfang hängt noch der HTTP-header dran. LG, Björn
Tip: Wenn auf eine Anfrage keine vernünftigen Antworten in einem angemessenen Zeitraum kommen, dann nochmal die Frage durchlesen. Dabei hilft es sehr, wenn man sich blöd stellt und sich fragt ob man die Frage verstehen würde, wenn man sie das erste mal sieht und keine Ahnung hat, woran der Fragesteller arbeitet. Auch hilft es sich zu fragen, ob in der Fragestellung irgendwelche Annahmen über Details getroffen werden, die nur der Fragesteller kennt und sonst niemand. Und noch ein Tip: Du hast Pech. Als Moderator kann ich auch die Postings sehen, die du selbst wieder gelöscht hast. Und tschüß
Björn R. schrieb:
> Die Antwort auf den GET-Request liegt danach in $buffer2.
Ich glaube, er wollte eher die Implementierung auf der Serverseite
wissen...
Aber ich kann Karl Heinz nur beipflichten: mit den vorhandenen
spärlichen Informationen ist dem TE kaum zu helfen. Ansonsten
schreibt man hier eine Abhandlung für einen Apache, während bei
ihm die Perlmodule Net::Server und HTML::Parser laufen (oder
so ähnlich, oder auch ganz, ganz was anderes).
Ja, ich habe halt auch keine Glaskugel ;-) Falls er das meint, was ich geraten hab, was er meinen könnte, hat er jetzt was. Habe ich aber auch nur gepostet weil ich selber gerade an dem Thema dran bin. Ansonsten gebe ich euch natürlich völlig Recht, wenn er Hilfe will, soll er mal sagen was er eigentlich braucht und nicht sowas unverständliches unvollständiges dahinschreiben. LG, Björn
Björn R. schrieb: > Ja, ich habe halt auch keine Glaskugel ;-) Willkommen im Club :-) Ich hab noch eine 3. Variante Der Web Server läuft auf einem PC und der AVR hängt irgendwie mit am PC (zb serielle). Der Apache auf dem PC soll auf einen GET hin den AVR über die Serielle befragen, der AVR antwortet und im Apache wird der Wert in die HTML Seite eingebaut. Ist aber genauso geraten wie alles andere. Ich favorisiere immer noch die Annahme, dass er ein AVR Board mit Ethernet Anschluss hat, auf dem ein Web Server läuft. Und diesem Server möchte er beibringen auf einen Get hin mit einem Wert aus dem EEPROM zu antworten. Aber nichts genaues weiß man nicht. Ich bin mir noch nicht einmal sicher, ob sich die Frage auf die Serverseite oder auf die Clientseite bezieht :-)
Entweder hat Björn ins Schwarze getroffen oder das Problem ist wieder mal von der Sorte 'so wichtig dann auch wieder nicht, als das man es nicht ignorieren könnte' :-)
1.) ich benütze eine selbst gebaute Variante des AVR NET IO 2.)darauf läuft der Stack von Ulrich Radig 3.)der User greift mit seinem Browser auf das Net io zu und wählt auf der Homepage den gewünschten Wert aus(funktioniert bereits bestens) 4.)der http server soll nun aus dem Get Request den spezifischen Wert erhalten und Werte aus dem EEPROM lesen und diese dann mit einer HTTP Response zurück senden. Anbei ist das modifizierte Source File
Hans Maulwurf schrieb: > 3.)der User greift mit seinem Browser auf das Net io zu und wählt auf > der Homepage den gewünschten Wert aus(funktioniert bereits bestens) > 4.)der http server soll nun aus dem Get Request den spezifischen Wert > erhalten und Werte aus dem EEPROM lesen und diese dann mit einer HTTP > Response zurück senden. Tja. Das wirds so nicht spielen. Soweit ich den Server überflogen habe, liefert der immer eine Web-Page zurück. Du kannst daher nicht mittels GET einen Wert anfordern. Aber du kannst dem Web-Seiten Designer eine Möglichkeit zur Verfügung stellen, wie er Werte aus dem EEPROM in die zu liefernde HTML Seite einbauen kann. Einen ähnlichen Mechanismus gibt es in diesem Server ja bereits
1 | //Müssen Variablen ins Packet eingesetzt werden? ===> %VA@00 bis %VA@09
|
2 | if (b == '%') |
3 | {
|
4 | if (strncasecmp_P("VA@",http_entry[index].new_page_pointer,3)==0) |
5 | {
|
6 | b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10; |
7 | b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48); |
8 | itoa (var_array[ b ],var_conversion_buffer,10); |
9 | str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN); |
10 | memmove(ð_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len); |
11 | a = a + (str_len-1); |
12 | http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5; |
13 | }
|
Das ist Code, mit dem man offenbar in die HTML Seite so etwas wie Variablen einbauen kann, die in diesem Fall offenbar aus dem Flash kommen. Auch für die Port Pins gibt es ja gleich darunter auch einen extra Abschnitt, mit dem man den Zustand in eine HTML Seite einbauen kann. So etwas ähnliches kannst du dir auch für das EEPROM bauen. Siehst du, wie schnell man da einen vernünftigen Vorschlag machen kann, wenn du nur genügend Informationen lieferst.
sicher muss das gehen ich werte die url aus,lese werte aus und sende diese dann mit der einen seite zurueck
Hans Maulwurf schrieb: > sicher muss das gehen ich werte die url aus,lese werte aus und sende > diese dann mit der einen seite zurueck OK. Das deckt sich mit dem was ich vorgeschlagen habe. Da hab ich dich wohl misverstanden. Ich dachte du willst bei einem GET den Wert direkt, nicht eingebettet in eine Seite. Ist doch nicht weiter schwer zu realisieren. Für die Umkehrung kann man den gleichen Weg gehen, den Ulli mit dem PORT genommen hat und dann kann ein Client auch Werte im EEPROM hinterlassen. Aber um eine Analyse der httpd_header_check wirst du nicht herumkommen. Auch sollte man sich überlegen, ob man diese Funktion nicht ein wenig in einzlene Funktionen auseinandernimmt. Die ist schon ein ziemliches Monster.
> Ist doch nicht weiter schwer zu realisieren. Für die Umkehrung kann man > den gleichen Weg gehen, den Ulli mit dem PORT genommen hat und dann kann > ein Client auch Werte im EEPROM hinterlassen. Nur dass Ulli mit POST gearbeitet hat und nicht mit GET...ein kleiner Unterschied...
Hans Maulwurf schrieb: >> Ist doch nicht weiter schwer zu realisieren. Für die Umkehrung kann man >> den gleichen Weg gehen, den Ulli mit dem PORT genommen hat und dann kann >> ein Client auch Werte im EEPROM hinterlassen. > > Nur dass Ulli mit POST gearbeitet hat und nicht mit GET...ein kleiner > Unterschied... Die Umkehrung! Werte an den Server übertragen! GET holt was vom Server POST übermittelt etwas an den Server In diesem httpd ist auch Code enthalten, mit dem ein Client am Server einzelne Pins am PORTA ein/ausschalten kann.
Vergiss das mit der Umkehrung wieder. Sieh zu, dass du deine EEPROM Werte in den vom Server erzeugten HTML Code einbaust.
Karl heinz Buchegger schrieb: > Vergiss das mit der Umkehrung wieder. > Sieh zu, dass du deine EEPROM Werte in den vom Server erzeugten HTML > Code einbaust. jawohl Sir..... dass funktioniert schon
>GET holt was vom Server >POST übermittelt etwas an den Server Würde ich nicht soo verallgemeinern. Per GET kann man auch eine gewisse Menge Daten an den Server übertragen; halt nicht so viel wie per POST. Passwörter sollte man auch nicht per GET übertragen...
> Passwörter sollte man auch nicht per GET übertragen...
das wäre auch ziemlich amateurhaft^^
STK500-Besitzer schrieb: >>GET holt was vom Server >>POST übermittelt etwas an den Server > > Würde ich nicht soo verallgemeinern. > Per GET kann man auch eine gewisse Menge Daten an den Server übertragen; > halt nicht so viel wie per POST. > Passwörter sollte man auch nicht per GET übertragen... Wobei POST da keinen Vorteil bietet erst mal. Das Passwort würde genau so Klartext übertragen. Wollte aber auch erst das Gleiche schreiben wie du, aber Karl Heinz hat schon recht: Wenn man im echten Leben was zum Server senden will, nimmt man POST (Siehe Youtube Video uploading). Der Rest ist GET. Ist ja auch suggeriert durch die Wörter GET und POST.
Simon K. schrieb: > Wollte aber auch erst das Gleiche schreiben wie du, aber Karl Heinz hat > schon recht: Wenn man im echten Leben was zum Server senden will, nimmt > man POST (Siehe Youtube Video uploading). Der Rest ist GET. Im Zweifelsfall versuche ich nach den Regeln zu spielen. GET und POST haben ja einen bestimmten angedachten Zweck. Klar kann man einiges auch misbrauchen und zu etwas zweckentfremden was der ursprünglichen Idee hinter der ganzen Sache etwas zuwieder läuft. Aber auf lange Sicht bin ich mit solchen Shortcuts einfach schon zu oft auf die Schnauze gefallen. Irgendwann rächen sich solche 'scheinbaren Vereinfachungen' meistens. Und wenn sie sich rächen, dann normalerweise heftig :-)
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.