XML_Reader

Begonnen von fujitsufan, 22. Oktober 2009, 14:50:01

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 3 Gäste betrachten dieses Thema.

fujitsufan

Hallo,
ich verwende die CoDeSys Version 2.3 weil ´ne höhere Version zu meiner Hardware nicht kompatibel ist.
Leider ist der XML_Reader, denk ich mal erst ab der oscat.lib Version 2.7 verfügbar.
Ist der XML_Reader auch als Baustein, evtl. versionsunabhängig verfügbar?

Vielen Dank!
fujitsufan

peewit

der XML_READER Baustein wir bald innerhalb der OSCAT_NETWORK.LIB verfügbar sein.
Momentan bin ich am portieren und testen auf der Codesys-Plattform

sobald ich eine lauffähige Version habe , kannst du sie sicherlich vorab bekommen
Vermutlich in 1-2 Wochen könnte es soweit sein...

Was hast du denn damit vor ?

binderma

Hallo

ich bin auf der Suche eines XML Parsers für CoDeSys 3.3 auf eure Beiträge gestossen.
Ich bin derzeit kein Oscat User und habe auch in keiner Doku etwas über XML Parser gelesen.

Ist der XML_READER ein XML Parser ?? Und was ist die OSCAT_NETWORK.LIB? Ist das die normales Oscat lib?

Habe folgende Anwendung. Wir verwenden den PLC Handler von 3S für die TCP/IP Kommunikation mit einem PC.
Wir schreiben dafür PC seitig eine dll. Als Kommando wollen wir einen String schicken.
Nun war die Idee ein standardisiertes XML File zu verwenden da es einige Vorteile gegenüber einem String hat (z.B. Typ überprüfung)
Allerdings ist das parsen SPS seitig natürlich etwas aufwendiger als mit einem String.

Hat das etwas mit eurem diskutiertem Thema über XML_READER zu tun??

Gruß Matthias

peewit

hallo

wie schaut den so ein string bei dir aus ?
wieviele informationen sollen darin enthalten sein.

wenn es nicht allzuviele infos sind, dann würde ein string mit listen-trennzeichen eventuell auch ausreichen, dazu gibt es komfortable listen-bausteine in oscat, mit denen du wieder alles zerlegen kannst.

z.b. STRING = 'Parameter1=56.00;Parameter2=34;Text="Alarm aktiv";'
das alles könnte man auch in einen string transportieren.

freiwillig auf der sps xml-daten zu parsen ist nicht zu empfehlen, da unnötig aufwendig !!


die oscat_network_lib ist eine zusatz-bibliothek zu der oscat.lib die noch nicht veröffentlicht wurde
an der portierung für die wichtigsten Plattformen wird gerade gearbeitet.

im anhang findest du die doku zu der oscat_network.lib


[gelöscht durch Administrator]

fujitsufan

Hallo peewit,

leider wäre eine Textdatei zu groß (3kB) die ich auf meinem Zielsystem nicht zur Verfügung stellen kann.

Oder gibt es eine Möglichkeit in einer geöffneten Datei nach Textblöcken zu suchen, ohne den ganzen
Dateiinhalt in ein Variable bzw. Array zu laden?

mfG.
fujitsufan

peewit

Zitat von: fujitsufan in 04. November 2009, 12:29:15
Oder gibt es eine Möglichkeit in einer geöffneten Datei nach Textblöcken zu suchen, ohne den ganzen
Dateiinhalt in ein Variable bzw. Array zu laden?

warum kannst du keine 3kb textdatei benutzen ?


tja, du bist mir mit deinen wünschen immer einen schritt vorraus...

zur zeit arbeite ich an einer Plattformübergreifenden file-schnittstelle
und dafür werde ich auch einen xml-reader konstruieren der mit ca. 300 byte filebuffer auskommt, und dann beliebig grosse dateien durcharbeiten kann.

jedoch wird das noch dauern.......

ich habe dieses prinzip schon lauffähig mit einen ini-reader (entspricht 1:1 dem aufbau der windows ini-dateien mit sektion und keys)
der kann auch mit einem 1byte filebuffer betrieben werden !! ist zwar schwachsinn aber es funktioniert


Debug

Zitat von: peewit in 04. November 2009, 17:23:10
zur zeit arbeite ich an einer Plattformübergreifenden file-schnittstelle [...]

ich habe dieses prinzip schon lauffähig mit einen ini-reader (entspricht 1:1 dem aufbau der windows ini-dateien mit sektion und keys)
der kann auch mit einem 1byte filebuffer betrieben werden !! ist zwar schwachsinn aber es funktioniert.
Einen 1 Byte Filebuffer nutze ich zur Zeit um aus einer 50kB Textdatei Zeichen für Zeichen meine Infos zu lesen. Ist ewig langsam.

Hat da schon mal jemand sich an einen 1kB Buffer gewagt?

peewit

#7
hallo

was meinst du mit 1kb schon gewagt....

du must einfach mit einen zugriffsindex arbeiten

dann prüfst du aufgrund des index ob diese daten auch im buffer sind, wenn nicht liest du einen vollen block aus, dann kannst du aus dem buffer mit hilfe des index die daten auslesen, und wenn der index wieder groesser ist als die daten im buffer musst du wieder den naechsten buffer nachladen.


ich habe inzwischen eine funktionierenden file-standard und eine block-zugriffs-toutine die mit beliebiger Buffergroesse arbeiten kann.

das mit dem xml-reader über file , da habe ich noch keine zeit gefunden
aber es gibt nun einen baustein der ini-Dateien so wie man sie von Windows kennt, auswerten kann.

damit kann man bestimmte sektionen und schlüssel auswerten.
dies eignet sich hervorragend um parametrierungen über text dateien zu machen.
das geniale ist, das z.b. die textdatei 500kb haben kann, und wir verwenden nur einen lesebuffer von 200 bytes

das ganze funktioniert schon ,sobald ich eine dokumentation erstellt, habe könnte ich es dir zum testen geben.......

beispiel:

[SYSTEM]
DEBUG_LEVEL=10
IBS_QUIT_TIME=5

;---------------------------
; Station 1 Parametrierung -
;---------------------------

[S1]
NAME=ILC150 ETH
IP=192.168.15.100

M2=S2/M3/C1