Hallo,
ich habe hier einen 1-Wire-server, der die Daten der Sensoren als XML-File liefert (per http://ipadresse/details.xml) . Das Problem ist, dass ich momentan 3 Sensoren dran habe, und das gelieferte XML-File 3,5KB groß ist und ich vom HTTP_GET Baustein immer die Fehlermeldung FE auf B1, also Empfangsbuffer ist voll(Überlauf) bekomme.
Im Ernstfall können schon mal 50 Sensoren dran hängen, so dass das XML-File dann demenstprechend größer sein wird.
Kann ich das irgendwie umgehen und die XML-Datei verarbeiten, ohne dass sie komplett geladen wird bzw. während sie geladen wird?
Danke schon mal
mormel
hallo
der xml_server kann nur mit einem byte_array arbeiten, und der http_get ist standardmaessig auf ca. 4kb voreingestellt. ein möglicher weg ist nun das du die network.lib anpasst
VAR_GLOBAL CONSTANT
NETWORK_BUFFER_LONG_SIZE : UINT := 4095;
END_VAR
die änderungen haben aber eine auswirkung auf das ganze projekt, somit kann es sein das immens viel speicher benötigt wird.
eleganter wäre es wenn man die betroffenen bausteine kopiert und mit geänderten bausteinen arbeitet und eine eigene NETWORK_BUFFER_LONG variable definiert und verwendet, aber das wird dann schon anspruchsvoller
aber für erste test kann man die simple anpassung schon mal machen
ich vermute das die alleine schon mal reicht
Hallo,
Zitat von: peewit in 16. Januar 2013, 10:18:27
der xml_server kann nur mit einem byte_array arbeiten, und der http_get ist standardmaessig auf ca. 4kb voreingestellt. ein möglicher weg ist nun das du die network.lib anpasst
VAR_GLOBAL CONSTANT
NETWORK_BUFFER_LONG_SIZE : UINT := 4095;
END_VAR
OK, da ist aber bei 32766 Schluss, momentan reicht es, falls es mehr Sensoren werden, kann es durchaus trotzdem eng werden...
Zitatdie änderungen haben aber eine auswirkung auf das ganze projekt, somit kann es sein das immens viel speicher benötigt wird.
Aber doch nur, falls Funktionen verwendet werden, die darauf zurückgreifen, oder?
Zitateleganter wäre es wenn man die betroffenen bausteine kopiert und mit geänderten bausteinen arbeitet und eine eigene NETWORK_BUFFER_LONG variable definiert und verwendet, aber das wird dann schon anspruchsvoller
Hmm, da ist aber auch bei 32766 Schluss?
Vielen Dank, jetzt bekomme ich erstmal alle Werte, danke!
VG mormel