Hauptmenü

XML Datei einlesen

Begonnen von mormel, 16. Januar 2013, 08:59:57

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

mormel

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

peewit

#1
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

mormel

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