Forum: Mikrocontroller und Digitale Elektronik Hilfe beim lwIP Stack


von Kilian K. (kellermaaan)


Lesenswert?

Hallo,

ich benötige Hilfe beim lwIP Stack.
Momentan läuft auf meinem uC der lwIP Stack mit UDP, TCP und einem HTTP 
Server. Standardmäßig holt sich der HTTP Server die Webseiten aus der 
"fsdata.cpp" und überträgt diese dann.

Jetzt möchte ich aber, dass der HTML Code Zeile für Zeile ausgegeben 
wird, damit ich zwischendurch z.B. Inputs auslese und diese dann 
ebefalls auf der Webseite darstellen kann.

Bei sehr kleinen Seiten funktioniert es auch schon. Doch wenn die 
Webseiten größer werden, bekomme ich Probleme mit dem Speicher vom uC 
und die Webseite wird nicht komplett geschickt.

Vielleicht hat ja jemand eine Idee und könnte mir helfen.

Gruß KK

von Stefan F. (Gast)


Lesenswert?

> Jetzt möchte ich aber, dass der HTML Code Zeile für Zeile
> ausgegeben wird, damit ich zwischendurch z.B. Inputs auslese

Ich fürchte, dein Ansatz vom Multitasking ist falsch. Vermutlich besteht 
dein Hauptprogramm aus einer Endlosschleife, die bei jedem Durchlauf den 
IP Stack aufruft, wenn entweder ein Ethernet Paket empfangen wurde oder 
eine gewisse Zeit verstrichen ist.

Diese Endlosschleife musst du erweitern. Dort gehört der Code rein, der 
die Eingänge abfragt. Ggf. auch mit Timer, damit das in regelmäßigen 
Zeitabständen passiert.

Das sollte völlig unabhängig vom HTML Content sein - also nichts mit 
"Zeile für Zeile".

> Bei sehr kleinen Seiten funktioniert es auch schon. Doch wenn die
> Webseiten größer werden, bekomme ich Probleme mit dem Speicher
> vom uC und die Webseite wird nicht komplett geschickt.

Du musst das Senden der Webseite in viele Pakete aufsplitten. Suche mal 
nach dem Stichwort "mss". Das ist die Anzahl von Bytes die du maximal an 
einem Stück senden kannst - typischerweise weniger als 1,4kB.

von Kilian K. (kellermaaan)


Lesenswert?

Ersteinmal danke für deine Antwort!

Stefan Us schrieb:
> Ich fürchte, dein Ansatz vom Multitasking ist falsch. Vermutlich besteht
> dein Hauptprogramm aus einer Endlosschleife, die bei jedem Durchlauf den
> IP Stack aufruft, wenn entweder ein Ethernet Paket empfangen wurde oder
> eine gewisse Zeit verstrichen ist.
>
> Diese Endlosschleife musst du erweitern. Dort gehört der Code rein, der
> die Eingänge abfragt. Ggf. auch mit Timer, damit das in regelmäßigen
> Zeitabständen passiert.

Nur die Frage ist dann, wie ich die Werte in meinen HTML Code einsetzen 
kann, damit ich die Werte auf der Seite darstellen kann???

von Stefan F. (Gast)


Lesenswert?

Ich sehe Möglichkeiten:

Entweder fragst du die Eingänge in deinem HTTP Server On-Demand ab, also 
während du die Seiten generierst.

Oder du fragst die Eingänge außerhalb des HTTP Servers (z.B. in der 
Main-Schleife) ab und legst die Werte in irgendwelche globalen Variablen 
ab, auf die der HTTP Server wiederum zugreift.

Zeige doch mal deinen Code.

von Narfie (Gast)


Lesenswert?

Falls es nur darum geht die Werte in die HTML-Seite einzubetten:

https://stackoverflow.com/questions/10410023/string-format-alternative-in-c

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.