Hoi Mikrocontroller Gemeinde, ich arbeite mit einem LM3S8962 Stellaris Kit und habe ein Problem, bei dem ich euch um Hilfe ersuche ! Ausgangssituation: Ich betreibe einen Webserver auf diesem Board - > dieser Funtkioniert einwandfrei Ich habe außerdem die Funktion eines DHCP - Client inkludiert, damit sich das Board über Ethernet eine IP zugewiesen bekommt, oder sich selbst "erreichbar" macht ! -> Funktioniert einwandfrei Problemstellung: Ich lese die Temperatur des internen Temperature Sensors aus und berechne ihn in Celsius und Fahrenheit - was auch prima Funktioniert ! Jetzt möchte ich diesen Werte (Fahrenheit und Celsius) auf einer .htm seite / .html Seite anzeigen lassen Die Werte stehen mir als unsigned integer zu Verfügung ! Hat jemand vlt. einen Ansatz / Idee wie ich diese Werte auf einer Dynamischen Webseite ausgeben kann ? Oder hat jemand vlt. ein Beispiel an denen man(n) [ich ;) ] orientieren könnte ? Vielen Dank für Eure Zeit und das Lesen Merci Gruss Daniel
Daniel G. schrieb: > Hoi Mikrocontroller Gemeinde, > > ich arbeite mit einem LM3S8962 Stellaris Kit und habe ein Problem, bei > dem ich euch um Hilfe ersuche ! > > Ausgangssituation: > > Ich betreibe einen Webserver auf diesem Board Welchen? > Hat jemand vlt. einen Ansatz / Idee wie ich diese Werte auf einer > Dynamischen Webseite ausgeben kann ? Oder hat jemand vlt. ein Beispiel > an denen man(n) [ich ;) ] orientieren könnte ? Du musst dir gewahr sein, das eine HTML Seite auch nichts anderes ist, als einfach nur Text, den der Server auf Anforderung von sich gibt. Kommt vom Browser die Anforderung: Gib mir die Seite XYZ.html Dann schickt ihm der Server als Antwort den Text
1 | <html>
|
2 | <header>
|
3 | </header>
|
4 | <body>
|
5 | Dies ist die Seite und es hat 23 Grad |
6 | </body>
|
7 | </html>
|
Wie dieser Text zustande kommt, interessiert den Browser nicht. Der Server kann diesen Text aus einem File holen, der Server kann diesen Text auch 'on-the-fly' zusammenstellen, zb indem er in ein paar Textvariablen direkt im Programm vorrätig ist. Und natürlich kann der Server auch während er den Text ausgibt, Veränderungen an einem vorhandenen Text vornehmen, denn wie gesagt: Den Browser interessiert nur das Eregbnis, nicht wie der Server es erzeugt hat.
1 | sprintf( buffer, " Dies ist die Seite und es hat %d Grad", Temperatur ); |
2 | buffer über den TCP/IP Kanal schicken |
ist völlig zulässig. Bei einem 'großen' Web-Server gibt es jetzt standardisierte Möglichkeiten, wie der Server den Text, den er ausgibt verändern kann. Zb. indem er eine eingebettete Programmiersprache auswerten kann, die dann eben zb PHP heißt und wo die Textersetzung in PHP gemacht wird. Auf kleinen Web-Servern, die auf µC laufen, hat man aber oftmals diese Möglichkeiten nicht. Der Umfang eines Web-Servers wäre zu groß. In einigen Fällen behilft man sich damit, dass speziell für diesen Web-Server Vereinbarungen getroffen werden, bzw. fix in den Server reinprogrammiert werden, das er bestimmte 'Steuersequenzen' im Text durch den Wert von irgendwelchen Variablen ersetzt. Das könnte dann zb so aussehen, das du im HTML Text schreibst
1 | ... |
2 | Dies ist die Seite und es hat $TEMP Grad |
3 | ... |
und das Programm des Webservers untersucht den auszugebenden Text und wenn es da den Text "$TEMP" findet, ersetzt es diesen Text durch die aktuelle Temperatur. Ob das geht und wie das geht, hängt jetzt von deinem Web-Server ab. Daher auch die Frage nach ihm. Ist das ein ausgewachsener Web-Server, dann wird irgendeine der Standardmethoden funktionieren. Ist es ein abgespeckter Server, dann hat er vielleicht so eine Ersetzung bereits integriert. Hat man gar den Quelltext des Servers, dann kann man sich sowas auch selbst in dieses Serverprogramm reinprogrammieren. Denn letzten Endes geht es nur darum, einen Text während der Ausgabe über die TCP/IP Leitung zu modifizieren, während er ausgegeben wird.
Entweder die Werte einfach als Text (Stichwort itoa() ) besorgen und dann in deine Seite Einbauen (vlt. mit iwelchen Tags $temp oder so) oder ein bischen js das die werte immer aktuell von deinem Board holt und anzeigt...
Hi Ihr Zwei, erstmal danke für die fixe Antwort ! Karl Heinz Buchegger schrieb: > Welchen? Hierzu kann ich "nur" diese offizielle NOTE herbeizitieren:
1 | Note that the web server used by this example has been modified from the example shipped with the basic lwIP package. Additions include SSI and |
2 | CGI support along with the ability to have the server automatically insert |
3 | the HTTP headers rather than having these built in to the files in the |
4 | file system image. |
5 | |
6 | For additional details on lwIP, refer to the lwIP web page at: |
7 | http://savannah.nongnu.org/projects/lwip/ |
ich verwende den modifizierten von Stellaris, der in einigen Examples schon verwendet wurde! Die beispiel Seiten beinhalten auch js an der stelle und holen über functions() die werte und stellen Sie dann da Ein Beispiel :
1 | <script language="JavaScript"> |
2 | <!--
|
3 | function toggle_led() |
4 | {
|
5 | var req = false; |
6 | var led = false; |
7 | function ledComplete() |
8 | {
|
9 | if(led.readyState == 4) |
10 | {
|
11 | if(led.status == 200) |
12 | {
|
13 | document.getElementById("ledstate").innerHTML = "<div>" + led.responseText + "</div>"; |
14 | }
|
15 | }
|
16 | }
|
17 | if(window.XMLHttpRequest) |
18 | {
|
19 | req = new XMLHttpRequest(); |
20 | led = new XMLHttpRequest(); |
21 | }
|
22 | else if(window.ActiveXObject) |
23 | {
|
24 | req = new ActiveXObject("Microsoft.XMLHTTP"); |
25 | led = new ActiveXObject("Microsoft.XMLHTTP"); |
26 | }
|
27 | if(req) |
28 | {
|
29 | req.open("GET", "/cgi-bin/toggle_led?id" + Math.random(), true); |
30 | req.send(null); |
31 | }
|
32 | if(led) |
33 | {
|
34 | led.open("GET", "/ledstate?id=" + Math.random(), true); |
35 | led.onreadystatechange = ledComplete; |
36 | led.send(null); |
37 | }
|
in diesem js - toggeln sie die LED ich verstehe jedoch nicht worauf sie mit dieser "GET" methode verweisen
1 | led.open("GET", "/ledstate?id=" + Math.random(), true); |
bzw.
1 | req.open("GET", "/cgi-bin/toggle_led?id" + Math.random(), true); |
ich verstehe hier nicht, wie auf die werte der LED im Beispiel zugegriffen wird und diese von der .htm seite über js function(9) geholt werden ? Merci fürs Lesen & Antworten Gruss Daniel
hallo, ich hoffe es stört nicht wenn ich mal was anderes frage, aber ich versuche das gleiche aber nur soll er mir die Temp. auf den Display anzeigen aber irgend wie geht es bei mir nicht! Ich bin Anfänger und irgend wie komme ich nicht wirklich drauf wie ich das anstellen soll! Vielleicht kannst du mir oder jemand helfen?! Danke !!!
Dein Webserver bekommt vom Browser die Anfrage "gib mir mal, was du unter '/ledstate?id=5' stehen hast". Ob er nun eine Datei anzeigt, dynamisch irgendeinen HTML-Code erzeugt und anzeigt oder eine Funktion aufruft, die den LED-Status ermittelt und dann den HTML-Code erzeugt, spielt für den Browser keine Rolle. Das Javascript wird vom Browser ausgeführt und ersetzt in der Webseite gewisse Inhalte, nachdem die Seite schon geladen wurde. Dafür benutzt sie eine weitere Verbindung zum Webserver. Der Webserver wird vermutlich eine Liste mit URIs ('/ledstate', '/cgi-bin/$irgendwas' usw.) haben, für die er vorgefertigte Aktionen auslöst.
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.