Hallo,
ich nutze das Beispiel von St den lwip webserver ,ich wollte gerne wenn
die led an ist ein kleines gif bild auf der Webseite anzeigen ledoff
oder ledan.
kann mir da einer behilflich sein
MFG.
const char * LEDS_CGI_Handler(int iIndex, int iNumParams, char
*pcParam[], char *pcValue[])
{
uint32_t i=0;
/* We have only one SSI handler iIndex = 0 */
if (iIndex==0)
{
/* All leds off */
BSP_LED_Off(LED1);
BSP_LED_Off(LED2);
BSP_LED_Off(LED3);
BSP_LED_Off(LED4);
/* Check cgi parameter : example GET /leds.cgi?led=2&led=4 */
for (i=0; i<iNumParams; i++)
{
/* check parameter "led" */
if (strcmp(pcParam[i] , "led")==0)
{
/* switch led1 ON if 1 */
if(strcmp(pcValue[i], "1") ==0)
BSP_LED_On(LED1);
/* switch led2 ON if 2 */
else if(strcmp(pcValue[i], "2") ==0)
BSP_LED_On(LED2);
/* switch led3 ON if 3 */
else if(strcmp(pcValue[i], "3") ==0)
BSP_LED_On(LED3);
/* switch led4 ON if 4 */
else if(strcmp(pcValue[i], "4") ==0)
BSP_LED_On(LED4);
}
}
}
/* uri to send after cgi call*/
return "/STM32F4xxLED.html";
}
conny schrieb:> /* uri to send after cgi call*/> return "/STM32F4xxLED.html";
Schicke eben jeweils eine andere Seite zurück wo dann im HTML Code das
gif verlinkt ist.
http://www.w3schools.com/
Mw E. schrieb:> conny schrieb:> /* uri to send after cgi call*/> return "/STM32F4xxLED.html";>> Schicke eben jeweils eine andere Seite zurück wo dann im HTML Code das> gif verlinkt ist.> http://www.w3schools.com/
ich kann doch nicht jedesmal eine andere Seite zurück schicken wenn sich
der led status ändert.
beim uip ist das ganze einfach
UIP_APPDATA_SIZE,
"%s ", (port_stat ? "<img id=\"myimage\"
onclick=\"changeImage()\" src=\"pic_bulbon.gif\" width=\"100\"
height=\"180\" alt=\"Bildtext\"> <br> Lampen-Status: Ein":
"<img id=\"myimage\" onclick=\"changeImage()\"
src=\"pic_bulboff.gif\" width=\"100\" height=\"180\" alt=\"Bildtext\">
<br> Lampen-Status: Aus"));
es nutzen doch bestimmt viele den LWIP, ich das beispiel vom adc
genommen aber ich bekomme kein bild angezeigt im browser.
Ich finde auch kein Beispiel.
Könnte denn mir wer helfen
Was it jetzt genau das Problem?
Ich habe auf dem STM32F407 einen Webserver laufen gehabt, wobei ich den
selbst implementiert habe.
> return "/STM32F107LED.html";
Das kenne ich nicht. Habe damals FSData Tool gehabt, um die Webseite in
Chararrays umzuwandeln.
Mw E. schrieb:> Schicke eben jeweils eine andere Seite zurück wo dann im HTML Code das> gif verlinkt ist.
Das ist echt Blödsinn....
Ich kann dir jetzt keine koplette Lösung coden, aber wass du brauchst
ist tatsächlich z.B. AJAX.
In deinem hlml header musst du start eines JS Scriptes erzwingen,
ungefährt so:
<head>
...
...
<script type="text/javascript">
function LEDWatch(){
} </script>
</head>
<body onload="LEDWatch()">
Die Funktion LedWatch, soll einen ajax http request an deine led.cgi
schicken. Der Webserver gibt als Antwort nicht die ganze Seite zurück
sondern nur die Rohdaten in Form z.B.: "ON;OFF;OFF;ON". Diese kannst du
mit JS splitten und in den mit "id" vorgesehenen Stellen im HTML code
weitergeben. So werden die Daten im Hintergrung aktuallisiert. Ich habe
sowas ähnliches realisiert. Das war ein BBQ WiFi Meter mit drei Probes,
der die Daten am OLED angezeigt hat, aber auch gleichzeitig via
http-Server serviert hat :) Ganze HTML Seite war ein string mit ca. 1500
Zeichen.
PS: damit AJAX im Hintergrund z.B. alle 1,5 Sekunden aktuallisiert wird,
musst du in dem AJAX Java Script Selbsaufruf machen:
setTimeout(function(){$self();}, 1000); }
beim uip hatte ich das so und das funktionierte einwandfrei
UIP_APPDATA_SIZE,
"%s ", (port_stat ? "<img id=\"myimage\" onclick=\"changeImage()\"
src=\"pic_bulbon.gif\" width=\"100\" height=\"180\" alt=\"Bildtext\">
<br> Lampen-Status: Ein":
"<img id=\"myimage\" onclick=\"changeImage()\" src=\"pic_bulboff.gif\"
width=\"100\" height=\"180\" alt=\"Bildtext\"> <br> Lampen-Status:
Aus"));
> ich wollte gerne ... ein kleines gif bild auf der Webseite anzeigen> kann mir da einer behilflich sein
Naja, wir können weder in Deinen Computer noch in Deinen Kopf schauen.
Du hast das Problem immer noch nicht klar beschrieben.
> ich bekomme kein bild angezeigt im browser.
Hast du den Quelltext der Webseite kontrolliert, die der Browser
empfangen hat?
Kennst du dich mit HTML aus? Auch mit HTTP?
Hast du im Debugger des Browsers kontrolliert, ob er die Bilder
angefordert hat und wie der Webserver darauf geantwortet hat?
> das funktioniert auch nich ...> kann mir denn hier keiner helfen??
Was funktioniert denn nicht? Siehst du eventuell kein Bild im Browser,
weil du Stromausfall hast? Oder ist dein Monitor kaputt?
Du magst jetzt denken "was sollen die blöden Fragen", aber so blöd sind
die gar nicht. Du hast uns nämlich absolut keinen Anhaltspunkt
geliefert. Also müssen wir bei Null anfangen. Dazu hat allerdings kaum
jemand wirklich Lust. Solche Glaskugel-Threads enden selten erfolgreich.
> beim uip hatte ich das so und das funktionierte einwandfrei
uIP ist aber nicht lwIP. Diese Info ist nutzlos.
ich wollte gern wenn ich ein butto drücke die lef1 geht an das mir das
auchbobtisch auf der Webseite durch ein kleines Bild angezeigt wird.
green.GIF led an
red.GIF. led aus
ich habe circa 12leds.
im Anhang ein Beispiel mit 2leds.
ich bekomme das nicht umgesetzt.
deshalb Frage ich ja hier auch.
kann mir denn jemand helfen
das ist aus einem Altären lwip Beispiel läuft aber nicht mit dem
lwip1.4.0
geht das denn mit dem aktuellen lwipp
ich bitte um Hilfe.
Hallo,
also wenn ich das so sehe löschst du zuerst den Puffer für die Antwort
und fügst dann abhängig vom Zustand der LED die URL zum Bild ein. Was
landet denn sonst noch in dem Puffer? Mit der URL allein in der Antwort
brauchst du dich nicht zu wundern das du nichts siehst, da gehört ja
wohl noch etwas HTML drumherum.
Sascha
Sascha W. schrieb:> Hallo,>> also wenn ich das so sehe löschst du zuerst den Puffer für die Antwort> und fügst dann abhängig vom Zustand der LED die URL zum Bild ein. Was> landet denn sonst noch in dem Puffer? Mit der URL allein in der Antwort> brauchst du dich nicht zu wundern das du nichts siehst, da gehört ja> wohl noch etwas HTML drumherum.>> Sascha
Ich hatte doch geschrieben das das ein altes Beispiel war was auch
funktioniert hat!!.
Mit den Beispielen lwip1.4.0 weis ich nicht wie ich das hingenommen das
mir das GIF angezeigt wird.
wie kann ich das auf diese Beispiel.hier unten umsetzen.
Natürlich ohne Kommentar. Entweder die Funktion ist irgendwo Definiert,
und ich sehe das nicht, oder du musst httpd_ssi_init und httpd_cgi_init
in eine Funktion httpd_init packen. Die Arrays sind werden auch zu
kompliziert befüllt, gibt denn der Compiler bei
1
charconst**TAGS={&TAGCHAR,&TAGCHAR2};
Keinen fehler aus?
Und dann passt die Index Datei natürlich nicht-mehr mit der neuen
zusammen, und die API ist zur alten wohl auch inkompatibel, und auch
nicht besonders gut...
Versuche mal die Dateien im Anhang, die ich mir ausgedacht habe (alles
ungetestet). Unter /leds.cgi?led=1 müsste LED3 eingeschalten werden.
Unter / müsste "Led: Aus" angezeigt werden. Wenn das geht, sehen wir
weiter, ansonsten die Fehlermeldungen posten, ich übersehe immer
irgendwas...
Edit:
Grad noch etwas bemerkt, in der von mir Hochgeladenen Datei die Zeilen:
Hallo,
ich habs genauso gemacht,
aber es wird auf der seite garnichts angezeigt.
Arbeitet denn wirklich keiner mit dem LWIP.
gibt es denn kein beispiel wo eine led eingeschaltet wird und das
obtisch auf der seite Dargestellt wird.
Nutzt denn hier wirklich keiner den Lwip als Webserver?
Im Netz finde ich kein einziges Beispiel für den Status der Led die mir
auf der Webseite angezeigt wird.
Ich wollte das mir der Status der Led auf der Webseite angezeigt wird,
leider finde ich kein Beispiel wo ich mich ei bischen einarbeiten kann.
conny schrieb:> Nutzt denn hier wirklich keiner den Lwip als Webserver?
Zum Fehlersuchen gibts Debugger. Wo klemmt's denn genau? Wenn du von dem
gesamten Code nichts verstehst inclusive dem html und Browserteil, wird
das wohl die falsche Spielwiese für dich sein. Erwarte hier bitte keine
Grundlagenschulung.
temp schrieb:> conny schrieb:>> Nutzt denn hier wirklich keiner den Lwip als Webserver?>> Zum Fehlersuchen gibts Debugger. Wo klemmt's denn genau? Wenn du von dem> gesamten Code nichts verstehst inclusive dem html und Browserteil, wird> das wohl die falsche Spielwiese für dich sein. Erwarte hier bitte keine> Grundlagenschulung.
Das erwarte ich auch gar nicht.
Mir Fehlt nur der Ansatz wie ich das im Browser angezeigt bekomme das
zB. led1 ist an , Led2 ist aus.
Auf dem Client muss ein Javascript laufen das per HttpRequest z.Bsp
alle 1sec das led.cgi anfordert.
Vom Webserver wird durch den CGI Handler die entsprechende Funktion
aufgerufen die den Request generiert und dann zum Client sendet. Die
Daten werden im Header als Json String verpackt.
Diesen Request kann man über das Json ganz einfach am Client per
Javascript auswerten und prüfen. Weitere Javascript Code zeigt dann das
entsprechende Bild.
Ein Patentrezept kann dir niemand so wirklich liefern du musst dich
einfach mit den Dingen beschäftigen.
conny schrieb:> Mir Fehlt nur der Ansatz wie ich das im Browser angezeigt bekomme das> zB. led1 ist an , Led2 ist aus.
Ich kann dir da nicht gross weiterhelfen, aber ich würde mich im moment
noch nicht so auf die LEDs fokussieren. Wichtig ist im moment, dass du
in einer Funktion einen beliebigen Text ausgeben können musst. Ohne das
ist es nicht möglich, aber sobald dir das gelingt ist der Rest eine
Kleinigkeit.
Das ist ein Json String in dem sich Werte für 4 Analog In und 2 Outs
befinden. Dieser wird von der aufgerufen CGI Funktion per String
Funktionen zusammengebastelt.
Wie das zu deuten ist steht hier http://www.json.org/json-de.htmlhttp://openbook.rheinwerk-verlag.de/javascript_ajax/
Per JavaSrcipt kann man auf diesen String dann sehr einfach zugreifen
und somit auch Bedingungen prüfen.
Das Problem an der Sache ist ja im Allgemeinen das du die Seite neu
laden musst, immer immer wieder. Das würde aber auch Trafic erzeugen.
Es würden immer wieder erneut Inhalte übertragen die sich gar nicht
geändert haben.
Ohne JavaScript geht es kaum, es sei denn du drückst immer auf den
Realod Button ;)
HttpRequest ist eine Methode die es erlaubt solche anfragen im
Hintergrund laufen zu lassen. Kommt die Antwort vom Server löst diese
ein Event aus und der Request lässt sich auswerten.
Per timeout wird der HttpRequest immer wieder vom Browser ausgelöst und
somit die Daten aktualisiert.
Das schlaue daran ist das man nur das Anfordert was sich verändert also
hier die ADC Werte. Per JavaScript wird dann die Webseite dynamisch
verändert.
Diese Grundlagen findest du in den links... Oder das Buch kaufen ;)
Hatte ja zuallererst schon eine Lösung vorgeschlagen die erstmal das
Einfachste vom einfachsten wäre.
Bei seinem CGI Handler je nach LED Status ersteinmal eine andere html
Seite zurückgeben. Auch Relaod der Seite im 1s Takt geht mit HTML4.
Aber er war ja zu stur das erstmal zu testen.
Wenn das funzt kann man das verfeinern u nicht immer alles nachladen zu
müssen.
AJAX mit JSOn kam auch schon auf, der Fred dreht sich hier lagsam im
Kreis ;)
Der TE will keine Vorschläge oder verstehen was er macht, sondern
Lösungen auf dem Silbertablett.
Marco H. schrieb:> Auf dem Client muss ein Javascript laufen das per HttpRequest> z.Bsp alle 1sec das led.cgi anfordert.> Vom Webserver wird durch den CGI Handler die entsprechende Funktion> aufgerufen die den Request generiert und dann zum Client sendet. Die> Daten werden im Header als Json String verpackt.> Diesen Request kann man über das Json ganz einfach am Client per> Javascript auswerten und prüfen. Weitere Javascript Code zeigt dann das> entsprechende Bild.> Ein Patentrezept kann dir niemand so wirklich liefern du musst dich> einfach mit den Dingen beschäftigen.
Ich finde aber nirgents ein Beispiel wie das gemacht wird.
Ich hab das nun versucht,aber bekomme das nun nicht zum laufen.
Schade das es solch ein Beispiel für den Lwip nicht gibt.
Beim UIP ist das äusserst einfach, und läuft auch sofort.
Alle sagen so und so musst du das machen aber nirgents gibs ein Beispiel
wo Mann sich das anschauen kann wie es gemacht wird.
conny schrieb:> Alle sagen so und so musst du das machen aber nirgents gibs ein Beispiel> wo Mann sich das anschauen kann wie es gemacht wird.
Jammer, jammer.
Also dann mal im Klartext: wenn Du zu blöde (oder zu faul) bist, bei den
heutigen Möglichkeiten (Google & Co) mit den hier gelieferten Hinweisen
und Stichworten wenigstens irgendwas auf die Reihe zu bekommen (das man
dann auch gerne hier diskutieren und gemeinsam verbessern könnte, weil
eben immer noch kein Meister vom Himmel gefallen ist), solltest Du dich
vielleicht einfach damit abfinden, daß es Dinge gibt, die über deinen
intellektuellen Horizont gehen.
So leid's mir tut. Punkt.
> Beim UIP ist das äusserst einfach, und läuft auch sofort.
Dass stimmt doch gar nicht! In Zusammenhang mit µIP hatten wir auch
schon eine endlose Diskussion die ohne Erfolg endete.
Markus F. schrieb:> Jammer, jammer.>> Also dann mal im Klartext: wenn Du zu blöde (oder zu faul) bist, bei den> heutigen Möglichkeiten (Google & Co) mit den hier gelieferten Hinweisen> und Stichworten wenigstens irgendwas auf die Reihe zu bekommen (das man> dann auch gerne hier diskutieren und gemeinsam verbessern könnte, weil> eben immer noch kein Meister vom Himmel gefallen ist), solltest Du dich> vielleicht einfach damit abfinden, daß es Dinge gibt, die über deinen> intellektuellen Horizont gehen.>> So leid's mir tut. Punkt.
Ich habe Höflich gefragt!!
Dann zeigen sie mir doch ein Beispiel bei Google WENN SIE SO ALL WISSEND
SIND
conny schrieb:> Dann zeigen sie mir doch ein Beispiel bei Google WENN SIE SO ALL WISSEND> SIND
lieber conny, so kommst du nicht ans Ziel. Was du willst ist nicht ein
Beispiel sondern die Lösung. Und du hast keine Ahnung von html. Deshalb
ist der Rat von oben richtig. Zieh dir erst mal ein paar Grundlagen zu
html und/oder ajax und javascript rein, dann kann man weiter reden. Wenn
dann der Groschen gefallen ist wie das funtioniert, dann wirst du merken
dass es zwischen uIp und lwip in dieser Beziehung keinen Unterschied
gibt. Hast du schon jemals mit einen Webserver auf dem PC gespielt?
Damit lernt man die Grundlagen und danach geht es auf die embedded
Hardware.
Ja, du hast höflich gefragt, zweifellos.
Ich kenne kein Beispiel und erwarte nicht, ein mit Google zu finden. Das
ist eben ein spezielle Thema, mit dem sich nur wenige Menschen
beschäftigen.
Im Internet findest du hauptsächlich Webseiten, die durch Werbung
finanziert werden oder wo Produkte/Dienste verkauft werden.
Diese Library ist kostenlos und so speziell, dass man mit Werbung auf
einer entsprechenden Webseite praktisch kein Geld verdienen kann. Also
hat niemand Interesse, großartige Infos dazu zu veröffentlichen. Außer
vielleicht der Autor selbst.
Also bleibt Dir nichts anderes übrig, als Dir die Informationen und
Beispielprogramm von Adam Dunkels anzuschauen. Viel mehr kostenlose
Infos wird es dazu nicht geben.
Manche Leute haben sich Monatelang damit beschäftigt (so wie ich mit
µIP). Die meisten davon aber beruflich, also mit dem Ziel, ihr KnowHow
zu verkaufen.
Ich bin einer der ganz wenigen, die zu µIP eine Beispiel-Anwendung
veröffentlicht haben. Insgesamt wirst du mit Sicherheit höchstens die
Quelltexte von 10 sinnvollen vollständige Anwendungen im Internet
finden. Davon wiederum dürften nur wenige umfangreich dokumentiert sein.
Und bei LwIp ist es noch schwieriger, weil LwIp ein paar Jahr jünger ist
und auf noch weniger Mikrocontrollern lauffähig ist.
Die stehen in den Links die ich dir gesendet habe oder kaufe dir das
Buch! Es dauert eben bis du die zusammenhänge verstehst. So ist das nun
einmal..
Die Lösung des Problems ist technisch völlig unabhängig vom Webserver.
Du hast zwei Baustellen Client und Server, das auch noch mit zwei
Unterschiedlichen Programmiersprachen. JavaScript ist aber gar nicht so
schwer und in dem Buch wirst du an die Dinge langsam heran geführt die
du genau hierfür brauchst.
Ich habe ihm auch schon jede Menge Links gegeben - in dem älteren Thread
wo er es noch mit µIP versuchen wollte.
> Die Lösung des Problems ist technisch völlig unabhängig vom Webserver.
Ja genau, sehe ich auch so. Ich hatte ihm damals auch schon
vorgeschlagen, erstmal mit einem Webserver auf dem PC (z.B. Apache mit
PHP) zu üben.
conny schrieb:> ... das obtisch ...
Tip: Wenn du suchst verwende den Begriff "optisch". Das dürfte deine
Chancen steigern, auch wenn Google gegen Rechtschreibmüll ziemlich
tolerant ist.
bei mir läuft der uip webserver wunderbar,
ich Regel damit die Helligkeit der Lampen über rfm12b , die IP vom
Webserver kann ich alles über den Webbrowser einstellen das geht
wunderbar.
Aber beim lwip komme ich nicht weiter , ich kann die LEDs ein und
Ausschalten aber optisch auf der Webseite angezeigt bekomme ich das
nicht hin.
Ich suche keine Vollwertige Lösung sondern ein Beispiel wo ich das
selber Stück für Stück probieren kann.
Mw E. schrieb:> Was ist denn jetzt bitteschön so schwer daran den Returnwert des> CGI> Handlers zu ändern ?!?!> /* uri to send after cgi call*/> return "/STM32F4x7LED.html";
Das ist doch völlig sinfrei jedesmal eine mal eine
komplette seite neu laden.
Mw E. schrieb:> Mal ne ernst gemeinte Frage: Blind?> Habe dazu jetzt schon mehrfach was geschrieben.
Ich frage höflich aber irgendwie reden wir hier aneinander vorbei.
ich Fragte wie das geht wenn die Led an ist soll das optisch dargestellt
werden.
Also ich habe mir mal deine index.html angeschaut, genauer das
Javascript.
Grundsätzlich ist die Richtung schon gar nicht mal verkehrt und ist
nicht auf deinen Mist gewachsen, es sei denn die Chinesischen Kommentare
sind von dir?
Die update Funktion sieht so aus, Das Element "temperature" bzw. "time"
gibt es in deinen Dokument nicht wie soll das per DOM erreicht werden ?
Das einschalten funktioniert weil der Eventhandler die Funktion function
led0() bzw led1() ausführt beim klicken.
Du müsstest per DOM src="/img/green.gif" tauschen. Keine schöne Lösung
aber dürfte funktionieren.
Für mich schaut die Sache so aus "ich habe mal was geändert und keine
Ahnung davon was es bewirkt.
Machs mit den JS Libs aus einem meiner Links.
AJAX auf Fußpilzebene ist nichts für Anfänger, da muss man schon genau
wissen wie die Kommunikation im Hintergrund abläuft.
Und jemand, der nichtmal eine returnzeile ändern kann wird das eher
nicht wissen.
conny schrieb:> Dies ist aus einem Beispiel von Alientek das läuft aber nicht zusammen> mit dem Beispiel von ST
NEIN! DOCH! OHHH!
Eigentlich ganz einfach. Er muss nur einen response generieren der
src="/img/green.gif";src="/img/green.gif" zurück liefert.
und tauscht so oder so ähnlich den Code aus....
Das Problem nur durch das Klicken auf den Button wird diese Funktion
ausgeführt. Es löst zwar die Funktion aus die zum Anschalten führt
greift aber dann auf das HTTPRequest Objekt zu das möglicherweise schon
ungültig ist.
Der Chinese hat es richtig gemacht, wenn sich der Status ändert prüfen
ob es fertig ist und dann den Code ausführen.
1
Math.random()
verstehe ich auch nicht so wirklich, es sei denn sie soll zufällig an
oder aus gehen, dann sollte man aber das Random auch mit einen
Wertebereich Eingrenzen. Sonst kommt in 99,9% der fälle irgend etwas >1
raus.
edit: möglicherweise werden damit IDs generiert so das der Server die
Anfragen sortieren kann. Also von welchen Client sie kommen oder ob
einer sehr schnell drauf klickt.
Ich bin kein völliger Javascript Experte "noch nicht ;)" aber ich musste
mich auch zwangsläufig damit beschäftigen. Es hat auch gar nicht weh
getan.
Marco H. schrieb:> Eigentlich ganz einfach. Er muss nur einen response generieren der> src="/img/green.gif";src="/img/green.gif" zurück liefert.>> und tauscht so oder so ähnlich den Code aus....> text = text.split(";");> document.getElementById("red").innerHTML=text[0];> document.getElementById("green").innerHTML=text[1];>> Das Problem ist folgendes> function led0()> {> loadXMLDoc("/led_red.cgi?red=1&t="+ Math.random(),function()> {> if (xmlhttp.readyState==4 && xmlhttp.status==200)> {> document.getElementById("red").src=xmlhttp.responseText;> }> });> }>> Das Problem nur durch das Klicken auf den Button wird diese Funktion> ausgeführt. Es löst zwar die Funktion aus die zum Anschalten führt> greift aber dann auf das HTTPRequest Objekt zu das möglicherweise schon> ungültig ist.>> Der Chinese hat es richtig gemacht, wenn sich der Status ändert prüfen> ob es fertig ist und dann den Code ausführen.> Math.random() verstehe ich auch nicht so wirklich, es sei denn sie soll> zufällig an> oder aus gehen, dann sollte man aber das Random auch mit einen> Wertebereich Eingrenzen. Sonst kommt in 99,9% der fälle irgend etwas >1> raus.>> edit: möglicherweise werden damit IDs generiert so das der Server die> Anfragen sortieren kann. Also von welchen Client sie kommen oder ob> einer sehr schnell drauf klickt.>> Ich bin kein völliger Javascript Experte "noch nicht ;)" aber ich musste> mich auch zwangsläufig damit beschäftigen. Es hat auch gar nicht weh> getan.
Für mich ist das Problem wie ich das in umsetzen muss daran scheitere
ich .
Das ist Vorlage wie man das zusammenbastelt. Eigentlich ist alles
zusammen getragen worden um das Problem zu lösen.
In der Tat geht man hier davon aus den Request beim drücken auszulösen.
Das ist aber nicht schön. Ich würde ein eignendes cgi für das lesen des
Status anhängen
1
if(strcmp(pcParam[i],"led")==0){}
2
elseif(strcmp(pcParam[i],"ledstatus")==0){}
und dieses cgi alle 1sec anfordern. So ändert sich das Bild auch wenn
vom anderen Client der Status geändert wird oder beides kombinieren.
Beim ADC Handler hab ich versucht das mir das bild angezeigt wird es
wird mir nur 25 angezeigt.
Wie ich das nun umsetze das mir das bild auf der seite angezeigt das
kann ichg nicht umsetzen ohne ihre Hilfe.
Funktioniert nur im ADC_Handler, nur dieser kann Strings returnen wärend
der LEDS_CGI_Handler nur Dateipfade aus fsdata .c/.h zurückgeben kann.
@conny
es wurde schon alles gesagt wie es geht.
Jezt bist du gefragt den Bio Prozessor zwischen den Ohren einzusetzen.
Zudem unterlass es doch mal bitte imemr so riesen Codeblöcke zu pasten,
dafür gibts den Dateianhang.
Mein Mausrad brennt bald, vor allem ist es fast immer derselbe Code...
Mw E. schrieb:> @Marco H> dasreturn snprintf( pcInsert, iInsertLen, "Led: %s", status ? "An" :> "Aus" );Funktioniert nur im ADC_Handler, nur dieser kann Strings> returnen wärend> der LEDS_CGI_Handler nur Dateipfade aus fsdata .c/.h zurückgeben kann.>> @conny> es wurde schon alles gesagt wie es geht.> Jezt bist du gefragt den Bio Prozessor zwischen den Ohren einzusetzen.> Zudem unterlass es doch mal bitte imemr so riesen Codeblöcke zu pasten,> dafür gibts den Dateianhang.> Mein Mausrad brennt bald, vor allem ist es fast immer derselbe Code...
Ja aber ich bekomme das nicht umgesetzt das mein Problem deshalb frage
ich ja hie rauch
warum sendest du bei der anderen seite immer den selben rotz?
da KANN sich nichts auf der seite ändern ..
1
return"/STM32F4x7LED.html";
das war die erste aussage oben ...
der RETURN wert muss sich ändern.
dann wird zwar die seite neu geladen und so .. aber es ändert sich was
auf der seite.
schön ist anders und genial ist das nicht...
Mw E. schrieb:> @conny> es wurde schon alles gesagt wie es geht.> Jezt bist du gefragt den Bio Prozessor zwischen den Ohren einzusetzen.
Wir wissen aber noch nicht genau, ob die Dateien oder der Text überhaupt
ausgegeben werden, oder ob er noch ein weiteres Problem hat. Ich habe
Ihn deshalb weiter oben gefragt, ob irgendetwas angezeigt wird aber die
Antwort von ihm darauf war nicht ganz eindeutig, ich weiss weiterhin
nicht sicher, ob er nur das Bild nicht angezeigt bekommt, oder ob die
Seite die den image Tag enthält nicht ankommt...
@conny
Kannst du auf der Seite mal Nachsehen z.B. mit "firefox->rechte
Maustaste->view page source", ob unter der jeweiligen URL der erwartete
Code ausgegeben wird?
>> loadXMLDoc("/led_red.cgi?red=1&t="+ Math.random(),function()> Math.random() verstehe ich auch nicht so wirklich
Durch das Anhängen einer Zufallszahl an einen Dateinamen umgeht man den
eventuell unerwünschten Cache des Web Browsers.
.
hust schrieb:> beim ADC hast es ja gemacht ... sprintf((char *)pcInsert,> "%s ", ( "<img src=\"red.gif\" width=\"64\" height=\"64\" >> <br> 25"));> return strlen(pcInsert);>> warum sendest du bei der anderen seite immer den selben rotz? da KANN> sich nichts auf der seite ändern .. return "/STM32F4x7LED.html";>> das war die erste aussage oben ... der RETURN wert muss sich ändern.>> dann wird zwar die seite neu geladen und so .. aber es ändert sich was> auf der seite. schön ist anders und genial ist das nicht...
Bei mir wird nur die 25 Ausgegeben und kein Bild.
Ich kann ja nicht für jede Led eine neue Seite Ausgeben wenn sich der
Status ändert das ist ja völlig daneben
conny schrieb:> Ich kann ja nicht für jede Led eine neue Seite Ausgeben wenn sich der> Status ändert das ist ja völlig daneben
Mach es jetzt einfach!
Schöne Lösungen können nach "es funktioniert nun erstmal" angegangen
werden.
Ist schon interessant wie durch Lösungen abwinken und sonst nichts tun
es innerhalb von 43 Tagen zu keiner Lösung kommt.
Diese verbohrtheit ist echt rekordverdächtig.
Wie gesagt ich nutze das Beispiel von ST den LWIP Webserver ,
Nun wollte ich gerne wenn sich der status der vier LEDs ändert mir
optisch auf der Seite angezeigt wird.
Mein Problem ist wie ich das umsetzen damits mit dem Beispiel von ST
funktioniert
Beitrag "Re: LWIP Webserver"
Wie der Red und Green LED Handler geändert werden muss.
Mw E. schrieb:> Okay, der TE ist zu blöd für alles, ich bin raus...> ragequit
Warum bin ich zu blöd?????
ich hab mehrfach gefragt wie ich im led handler ein Bild zurück geben
kann das mir im Browser angezeigt wird.
Zu dem fragte ich hier HÖFLICH!
Stefan U. schrieb:>>> loadXMLDoc("/led_red.cgi?red=1&t="+ Math.random(),function()>>> Math.random() verstehe ich auch nicht so wirklich>> Durch das Anhängen einer Zufallszahl an einen Dateinamen umgeht man den> eventuell unerwünschten Cache des Web Browsers.
Oh Danke, nach 43 Seiten trotzdem was gelernt ;) Aber ist das denn nötig
beim HTTP-Request ? Das passiert doch nur wenn man ohne diese Methode
ganze Seiten anfordert.
Nochmals du bist zu faul die entsprechende Literatur zu bemühen und wenn
du diese nicht versteht dessen Grundlagen.
Ohne dieses Wissen drehen wir uns hier im Kreis.
Soweit ich weiss stört der Cache nur bei HTTP Get Requests. Wenn der
Server passende HTTP Header in der Response setzt, braucht man diesen
Workaround nicht.
> Nun wollte ich gerne wenn sich der status der vier LEDs ändert> mir optisch auf der Seite angezeigt wird.
Ja, das wissen wir seit Monaten. Und du weisst nicht, wie man das macht.
Wir können unser Wissen nicht direkt in dein Gehirn übertragen. Den
Lernvorgang dazu musst du selbst vornehmen. Ich sehe da allerdings null
Bereitschaft von dir.
Manchmal liegt das Scheitern auch einfach daran, dass man sich
übernommen hat. Ich bekomme auch nicht alles hin, was ich machen will.
Probier was einfacheres. Ich hatte Dir schon vor Monaten geraten, so
eine Webanwendung zuerst ohne Mikrocontroller z.B. mit PHP zu
entwickeln. Aber du willst ja gleich dreistöckige Hochzeitstorten
backen, anstatt mit Keksen zu beginnen.
Stefan U. schrieb:>> Nun wollte ich gerne wenn sich der status der vier LEDs ändert>> mir optisch auf der Seite angezeigt wird.>> Ja, das wissen wir seit Monaten. Und du weisst nicht, wie man das macht.
Ja deshalb fragte ich
>> Wir können unser Wissen nicht direkt in dein Gehirn übertragen. Den> Lernvorgang dazu musst du selbst vornehmen. Ich sehe da allerdings null> Bereitschaft von dir.
Natürlich bin ich bereit zu lernen.
Ich fragte wie ich das Bild anzeigen kann, weil ich im web kein einziges
Beispiel gefunden habe wie man das macht, speziell beim
LEDS_CGI_Handler.
>> Manchmal liegt das Scheitern auch einfach daran, dass man sich> übernommen hat. Ich bekomme auch nicht alles hin, was ich machen will.>> Probier was einfacheres. Ich hatte Dir schon vor Monaten geraten, so> eine Webanwendung zuerst ohne Mikrocontroller z.B. mit PHP zu> entwickeln. Aber du willst ja gleich dreistöckige Hochzeitstorten> backen, anstatt mit Keksen zu beginnen.
Ich hatte doch schon mehrfach gesagt das meine Anwendung mit dem UIP
alles Funktioniert.
conny schrieb:> Natürlich bin ich bereit zu lernen.>
...
> Ich hatte doch schon mehrfach gesagt das meine Anwendung mit dem UIP> alles Funktioniert.
Wenn das so ist, dann nur deswegen, weil Du dort etwas zum Kopieren
gefunden hast. Verstanden hast Du wohl nichts davon, sonst könntest Du
die funktionierende Lösung ja auf LWIP übertragen.
Lernen funktioniert ganz anders (deswegen kriegt man in der Schule
schlechte Noten, wenn man beim Abschreiben erwischt wird).
Markus F. schrieb:> conny schrieb:>> Natürlich bin ich bereit zu lernen.>>> ...>> Ich hatte doch schon mehrfach gesagt das meine Anwendung mit dem UIP>> alles Funktioniert.>> Wenn das so ist, dann nur deswegen, weil Du dort etwas zum Kopieren> gefunden hast. Verstanden hast Du wohl nichts davon, sonst könntest Du> die funktionierende Lösung ja auf LWIP übertragen.>> Lernen funktioniert ganz anders (deswegen kriegt man in der Schule> schlechte Noten, wenn man beim Abschreiben erwischt wird).
Wie soll ich beim LWIP den das Lernen wenn ich nicht mal ein Beispiel
habe um das zu lernen.
>> Wie soll ich beim LWIP den das Lernen wenn ich nicht mal ein>> Beispiel habe um das zu lernen.
Man braucht nicht immer Beispiele. Man muss die Protokolle und die
Library verstehen, dann kann man sie anwenden.
Stefan U. schrieb:> Wie soll ich beim LWIP den das Lernen wenn ich nicht mal ein> Beispiel habe um das zu lernen.>> Man braucht nicht immer Beispiele. Man muss die Protokolle und die> Library verstehen, dann kann man sie anwenden.
Ich hab das bisher immer anders gemacht , mir ein Beispiel angeschaut
wie wird das gemacht und was wird gemacht in diesen Beispiel.
Evtl. liegt ier das problem...
conny schrieb:> Ich hab das bisher immer anders gemacht , mir ein Beispiel angeschaut> wie wird das gemacht und was wird gemacht in diesen Beispiel.
conny schrieb:> Bei mir wird nur die 25 Ausgegeben und kein Bild.
Na also, der Code wird somit ausgegeben, das ist doch schonmal ein
Anfang, darauf kann man aufbauen.
Welche url gibst du ein, bei welcher diese Ausgabe kommt?
Gibt es eine Datei, in der soetwas drinsteht?: <!--#t-->
Beim HTML Image Tag "<img src=\"red.gif\" />" gibt das src attribut die
URL an, von welcher das Bild geladen werden kann. Hier ist es ein
relativer Pfad, das bedeutet bei einer url wie http://x.x.x.x:y/a/ oder
http://x.x.x.x:y/a/b wird das Bild unter http://x.x.x.x:y/a/red.gif
gesucht. Wäre es im src attribut /red.gif statt red.gif, wäre es eine
Absoluter Pfad und würde unter http://x.x.x.x:y/red.gif gesucht. Wenn
man diese URL im Browser Aufruft sollte man das Bild, oder Datensalat
sehen.
Um das Bild anzeigen zu können musst du es erst wie die index.html auf
den Controller laden, oder worauf auch immer du die index.html lädst.
Dann musst du es schaffen das Bild vom Server abzurufen, dafür musst du
die URL des Bildes herausfinden, versuche einfach diverse URLs im
Browser bis du das Bild oder Datensalat siehst, dann hast du es
gefunden. Achte dabei auf die gross/klein schreibung der dateinamen.
Sobald du die URL kennst, kannst du diese im img tag als src attribut
verwenden (aber ohne den URL Origin).
da hinter dem <br>
da die 25 dort stehen ...
der broswer ist an dieser stelle auch doof und setzt die daten nur
zusammen.
solange du nicht das richtige sendest ... wird auch nie das richtige
angezeigt werden
also mach dich erstmal schlau was html und so angeht
firefox und so haben einen brauchbaren debugger wo man gut sehen kann
was gesendet und empfangen wird.
alternativ wireshark
aber in der zeit wirklich so wenig dazuzulernen ist schon eine kunst!
und copy&paste auf gut glück funktioniert leider bei dieser thematik
selten
Ich kann da eigentlich nur wiederholen, was ich Dir damals zu µIP
geraten hatte. Das gilt hier nämlich immer noch:
Lerne folgende Technologien in dieser Reihenfolge (zunächst ohne
Mikrocontroller!):
- HTML
- CSS
- Javascript
- HTTP Protokoll (insbesondere GET, PUT, Header, Umgang mit Cache)
- AJAX
- PHP (oder irgendeine Alternative)
Dann programmiere Dir erstmal eine interaktive Webseite, wo man ein
Formular ausfüllen kann und die Seite dynamisch upgedated wird. Zum
Beispiel ein simples Kalenderblatt für einen Monat, wo man Termine
eintragen kann.
Programmiere es so, dass mehrere User gleichzeitig damit arbeiten
können. Also wenn einer was neues einträgt, sollen die anderen User die
Änderung automatisch sehen können.
Und wenn dieses Kalenderblatt zufriedenstellend funktioniert, dann wage
dich an den Mikrocontroller.
Dazu musst du zuerst die ganze Doku von LwIP lesen und verstehen. Dann
die Beispielsprogramme lesen und verstehen. Und erst dann fängt man an,
eigenen Code zu schreiben.
Du versuchst gerade schon wieder rückwärts vorzugehen. Das geht nicht,
solange keine Meister vom Himmel fallen.
wenn du durch copy&past weiterkommen willst ..
schau dir doch direkt an was passiert
was passiert nach einem POST / GET von der seite aus
was wird gesendet und was empfangen
speziell warum du eine seite als returnwert hast ...
1
return"/STM32F4xxLED.html";
das ist die weite die angezeit wird nach dem aufruf
also musst du HIER etwas ändern ...
also die Daten im HTML ändern
oder du must die seite so aufbauen das du nur teile an daten sendest und
auch nur teile wieder verwertest
im prinzip ist es aber immer das selbe ... dein browser zeit daten an
...
die kommen von deinem mikrokontroller
je nach dem ob die farbe anders sein soll ... ein bild usw ... all das
musst du auf deinem mikrokontroller je nach status ändern und dem
browser mitteilen
und hier ist der knackpunkt ....
DAS kann man nur durch verstehen der funktionsweise von browser , HTML
und dem lwip