Autor Thema: XML Datei einlesen  (Gelesen 6599 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

mormel

  • Gast
XML Datei einlesen
« am: 16. Januar 2013, 08:59:57 »
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
« Letzte Änderung: 16. Januar 2013, 09:59:39 von mormel »

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: XML Datei einlesen
« Antwort #1 am: 16. Januar 2013, 10:18:27 »
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
« Letzte Änderung: 16. Januar 2013, 10:20:05 von peewit »

mormel

  • Gast
Re: XML Datei einlesen
« Antwort #2 am: 16. Januar 2013, 10:48:53 »
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

OK, da ist aber bei 32766 Schluss, momentan reicht es, falls es mehr Sensoren werden, kann es durchaus trotzdem eng werden...

Zitat
die ä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?

Zitat
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

Hmm, da ist aber auch bei 32766 Schluss?

Vielen Dank, jetzt bekomme ich erstmal alle Werte, danke!

VG mormel