Bug in DLOG_STORE_FILE_CSV

Begonnen von arsh0r, 06. März 2012, 22:30:16

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

arsh0r

Betrifft codesys 2.x, mit Wago 750-841 getestet.

Die Zeile 60 in dem Baustein muss so heissen:
      ELSIF idx + LEN(X.UCB.D_STRING) + 2 < SIZEOF(PT.BUFFER) THEN (* Platz für Element vorhanden ? *)
und nicht so:
      ELSIF idx + LEN(X.UCB.D_STRING) + 2 < SIZEOF(PT) THEN (* Platz für Element vorhanden ? *)

sonst passiert es das beim schreiben eines 4kB Blocks ab und zu entweder das Trennzeichen(,) oder 0D/0A(neue Zeile) abgeschnitten wird.
PT ist nämlich zwei Bytes größer als PT.BUFFER, in dem wir die Daten ablegen. Im weiteren Verlauf der Routine werden maximal zwei Bytes zusätzlich gespeichert (entweder 0D0A oder das Trennzeichen).

peewit

hallo arsh0r

was soll ich dazu sagen
ja, ich habe einen fehler gemacht.....   :'(

danke für deine völlig korrekte fehleranalyse und fehlerbehebung
ich bin für solche beiträge immer sehr dankbar

gruss peewit

arsh0r

ich habe zu danken.

Die Funktionen CSV Datenlogger + FTP Upload funktionieren in meinem Testaufbau bisher tadellos.

mfg
arsh0r

arsh0r

Das ganze läuft mittlerweile auf einer Wago 750-880. Es werden 9 Werte Minütlich erfasst und alle Stunde wird eine Datei gespeichert und per FTP hochgeladen.
Dabei geht gelegentlich die Namensauflösung des DNS_CLIENT schief und hängt dann in state 30. hab meinen workaround hier gepostet: http://www.oscat.de/community/index.php/topic,1326.0.html

io123

Hallo peewit,

hab gerade etwas im Forum rumgesucht und bin dann im Beitrag

    OSCAT Forum »
    network.lib »
    Modulentwicklung (Moderator: peewit) »
    DLOG_FILE_CSV_DEMO, Zeitpunkt wann die Daten gespeichert werden


auf die Testverion "codesys_network_120523a.lib" von der geänderten Network.lib ggestoßen und habe mir die angeschaut.

Dabei ist mir der Beitrag hier wieder eingefallen und hab in der neuen Lib geschaut und gesehen, dass hier in
Zeile 131 "ELSIF idx + LEN(X.UCB.D_STRING) + 2 < SIZEOF(PT) THEN (* Platz für Element vorhanden ? *)" das selbe steht wie von arsOr erwähnt (siehe hier erster Beitrag).

Wollte dich nur dauf hinweisen, dass evtl. das bei Veröffengtlichung der neuen Lib, nicht der Fehler noch enthalten ist.

Vielleicht hast Du es auch schon korrigiert, dann kannste den Hinweis hier einfach vergessen.

Grüsse
Michael

ps. vielen DANK für die tollen libs




peewit

Hallo

Danke fuer deinen hinweiss
Normalerweise sollte ich es bei allen plattformen inzwischen korrigiert haben
Ich habe inzwischen eine andere beta version die schon bei einigen kursiert (mysql support)
Dort sollte es auch schon drinnen sein...


Aber momentan kann nicht nachschauen, da ich noch bis sonntag in der tuerkei am pool liegen "muss"  8)