Forum: Mikrocontroller und Digitale Elektronik Ajax und µC-Webserver


von Florian (Gast)


Lesenswert?

Hallo,

gibt es irgendwo ein Beispiel wie man Ajax in einem µC-Webserver 
verwendet? Wie die Browseranfragen und Webserver-Antwoerten aussehen? 
Hat damit jemand schon mal was gemacht?

Gruß
Florian

von Steffen (Gast)


Lesenswert?

Hallo,

ja - habe ich schon gemacht mit dem Webserver von Ulrich Radig.
Im Prinzip ist es ja nichts anderes, als die erforderlichen JavaScript 
Routinen in der webpage.h unterzubringen. Diese rufen dann einfach eine 
zweite Webpage auf, die eben ständig aktualisiert angezeigt wird.

Funktioniert bei mir seit ca. einem Jahr völlig problemlos. Außerdem 
meine ich, dass das Thema in der letzten Ausgabe der embedded-Online 
Zeitschrift, die freundlicherweise auf dieser Seite angeboten wird, 
behandelt wurde.

Viel Erfolg.
Steffen

von Florian (Gast)


Lesenswert?

Hallo Steffen,

das passt ja gut. Im Journal steht ja alles drin! Vielen Dank für den 
Tipp.

Gruß
Florian

von Max B. (bommel2012)


Lesenswert?

AJAX basiert ja auf JavaScript. JavaScript ist eine Clientseitige 
Script-Sprache. D.h. du musst einfach dafür sorgen das ein 
entsprechendes JavaScript exisitiert und in die entsprechende Seite 
eingebunden ist. Alles andere macht dann der Browser des Client PCs.

Alles andere, ist in dem Fall eine neue Anfrage an den µC zu senden.

von Hopp Triceratops (Gast)


Lesenswert?

Ajax bedeutet man laedt dem Browser die Arbeit auf. Der Server muss 
einfach eine Vielzahl von kleinen und kleinsten Files auf Anfrage 
liefern. Soweit ich mich erinnere sind das .JSON files, die mit Text 
gefuellt sind, oft nur eine einzige Zeile oder zwei.
In diesen .JSON files wird der Inhalt dynamisch veraendert. Das bedeutet 
man benoetigt ein sehr effizientes Filesystem, resp etwas, was dem 
Server ein schnelles Filesystem vorspiegelt. Die Files, resp der Inhalt 
wird ja mit einem Prozess fortlaufend erzeugt.

von Simon K. (simon) Benutzerseite


Lesenswert?

Hopp Triceratops schrieb:
> Ajax bedeutet man laedt dem Browser die Arbeit auf. Der Server muss
> einfach eine Vielzahl von kleinen und kleinsten Files auf Anfrage
> liefern.
Hmmm? Du kannst dich selbst nicht entscheiden ;-) Hat der Server jetzt 
die Arbeit oder der Client? :-P

Ajax ist dafür da um üblicherweise dynamischen Inhalt einer Seite zu 
laden, anstatt die Seite komplett neuladen zu müssen.
Ich würde sagen dabei nimmt man sowohl dem Client als auch dem Server 
Arbeit ab...

> Soweit ich mich erinnere sind das .JSON files, die mit Text
> gefuellt sind, oft nur eine einzige Zeile oder zwei.
Was man per Ajax abholt ist völlig irrelevant. Es kann auch xml sein.

> In diesen .JSON files wird der Inhalt dynamisch veraendert.
Die Dateien, die man per Ajax holt können vom Server dynamisch erzeugt 
werden, ja.

> Das bedeutet
> man benoetigt ein sehr effizientes Filesystem, resp etwas, was dem
> Server ein schnelles Filesystem vorspiegelt. Die Files, resp der Inhalt
> wird ja mit einem Prozess fortlaufend erzeugt.
Das versteh ich jetzt gar nicht mehr. Wenn der Server die per Ajax 
angeforderten Daten On-The-Fly erzeugt, ist nicht mal ein Filesystem 
beteiligt...

von Hopp Triceratops (Gast)


Lesenswert?

Ja. Stimmt. Die Dateien koennen auch XML sein. Die Ajax Dateien sind 
natuerlich dynamisch, sonst macht das Ganze keinen Sinn.

Der Filesystem-Prozess ist ein Zwitter. Zum Einen muss es sich die 
Referenzen (filenamen) zu Ajax files merken die auf der vorher 
ausgegebenen Seite sind, zum Anderen diese Referenzen (filename) dem die 
File erzeugenden Prozess zuspielen und die richtigen Daten in die 
Antwort einfuellen.
Moeglicherweise kann man diese Files, welche die Nutzdaten enthalten 
einmal fuer alle Zeit fest be-namen, moeglicherweise auch nicht.
Der die Anfragen bearbeitende Prozess muss aufgrund des Filenamens 
herausfinden was gewuenscht ist, als Tabelle, und diese Daten dann als 
File-foermige Antwort zuruecksenden. Nichtsdestotrotz ist es eine 
Anfrage an ein filesystem. Wenn eine Anfrage nicht passt, musst die 
Antwort sinngemaess - file not found - lauten.

von ich (Gast)


Lesenswert?

Habe ich mir in den letzten Tagen auch Gedanken drüber gemacht.
Ansatz sieht bisher so aus :
z.B. den Radigserver alles was html ,js, gif etc ist von der SD-Karte 
holen lassen, alle Meßwerte als JSON formatiert direkt aus dem Speicher 
des MC ausgeben.
Hat den Vorteil
1. die Arbeit des WEB-Designs und die des Core-Entwicklers zu trennen.
2. macht den Server schnell, da die Seite und das js nur einmal von der 
langsamen SD geladen werden muß.
Hat jemand den RADIG-NETIO Code schonmal auf SD-Kartenausgabe umgestellt 
?

Grüsse
Ich

von FBR (Gast)


Lesenswert?

Hopp Triceratops schrieb:
> [...]

Ich glaube du hast AJAX nicht so ganz verstanden ;) Natürlich kann bei 
einem AJAX-Request auch der Inhalt einer Datei zurückgegeben werden. 
Aber das ist nur eine Möglichkeit und hat erstmal nichts mit einem 
Dateisystem zu tun.

von Simon K. (simon) Benutzerseite


Lesenswert?

Hopp Triceratops schrieb:
> Ja. Stimmt. Die Dateien koennen auch XML sein. Die Ajax Dateien sind
> natuerlich dynamisch, sonst macht das Ganze keinen Sinn.
Es können auch JPGs sein ;-)

> Der Filesystem-Prozess ist ein Zwitter. Zum Einen muss es sich die
> Referenzen (filenamen) zu Ajax files merken die auf der vorher
> ausgegebenen Seite sind, zum Anderen diese Referenzen (filename) dem die
> File erzeugenden Prozess zuspielen und die richtigen Daten in die
> Antwort einfuellen.
Kann das sein, dass du auf PC-Ajax Implementierungen festgefahren bist? 
Überlege dir einfach, dass es die Ajax-Implementierung bei einer 
bestimmten URL einfach nur Messdaten aus dem Speicher des 
Mikrocontrollers ausgibt.
Die einzige Referenzierung die man da hat ist, dass man die URL diesen 
Daten zuordnet.
Meinst du das mit "Filesystem-Prozess"?

von holger (Gast)


Lesenswert?

>Hat jemand den RADIG-NETIO Code schonmal auf SD-Kartenausgabe umgestellt
>?

Soweit ich mich erinnere hat das mal jemand gemacht.
Schau doch mal bei Ulrich ins Forum.

von ich (Gast)


Lesenswert?

@ holger Ja, den einen kenne ich, der heisst WILL und hat was mit 
Heizungsautomatisierung gemacht. Hab ich, und läuft. WILL sagt aber 
auch, dass er keine Ahnung vom Programmieren hat. Darum frage ich noch 
mal.

Gute Nacht von
mir

von Florian (Gast)


Lesenswert?

Hallo,

vielen Dank für die rege Beteiligung. Was mich nur interessieren würde 
wäre das Serverseitige Handling der Ajax-Anfragen. Welche Schlüsselworte 
bekommt der Server vom Browser und was erwartet der Browser zurück. Hat 
da jemand Codebeispiele?

Gruß
Florian

von Purzel H. (hacky)


Lesenswert?

Wirf mal Firebird an. Das ist der Debugger von Firefox. Da kann man die 
Meldungen mithoeren.

von Simon K. (simon) Benutzerseite


Lesenswert?

Drei von Vier schrieb:
> Wirf mal Firebird an. Das ist der Debugger von Firefox. Da kann man die
> Meldungen mithoeren.

Du meinst Firebug. Das ist aber nicht der Debugger von Firefox, sondern 
ein Debugger für Firefox.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Florian schrieb:
> Was mich nur interessieren würde
> wäre das Serverseitige Handling der Ajax-Anfragen. Welche Schlüsselworte
> bekommt der Server vom Browser und was erwartet der Browser zurück.

Die Anfragen sind stinknormale HTTP-GET- bzw. POST-Requests, und was 
zurückgeliefert werden soll, liegt in der Hand des Nutzers, bzw. des die 
Daten auswertenden Skriptes im Browser.

Das können XML- oder JSON-Daten sein, das kann aber auch ganz simpler 
Text sein, ohne irgendeine Textauszeichnung oder sonstwas. Transportiert 
wird das ganze wie normale Webseiten als Antwort auf HTTP-GET- bzw. 
POST-Requests.

von Simon K. (simon) Benutzerseite


Lesenswert?

Alleine, dass dieses ganz einfache simple Feature (nämlich von 
Javascript aus HTTP-Requests starten zu können) einen eigenen fancy 
Namen bekommen hat (Ajax, Web 2.0) macht die Leute so verrückt, dass die 
dahinter ein völlig neuartiges Prinzip erwarten ;-)

Dabei ist Ajax eben einfach nur eine Javascript-Bibliothek, die es 
erlaubt HTTP-Requests zur Seitenlaufzeit auszuführen.

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
Noch kein Account? Hier anmelden.