Heizungsdaten auslesen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo HaDi,

der FIND Baustein ist der FC11 aus der IEC Bibliothek. Laut Hilfe müsste doch am RET_VAL die Position der gefundenen Zeichekette angezeigt werden oder habe ich einen falschen Baustein.

Am NDR kommt defenitiv kein Signal,habe diesen an einem Setzglied verbunden, dieser hat aber immer 0 Signal
 
Ist Dein STRING mit den Heizungsdaten richtig initialisiert worden?

Sind die Werte für die maximale Länge des STRING und die aktuelle Länge des STRING in den Header des STRING eingetragen worden?

Datenformat STRING

Byte 0 = DEZ = maximale Länge STRING

Byte 1 = DEZ = aktuelle Länge STRING

Byte 2 = CHAR = 1. Zeichen STRING

Byte 3 = CHAR = 2. Zeichen STRING

...

Gruß Kai
 

Anhänge

  • STRING.jpg
    STRING.jpg
    295,4 KB · Aufrufe: 19
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kai,

wie soll ich den String initialisieren. Die Heizung sendet mir alle 500ms
einen 200 Zeichen langen String. Die Werte kommen auch soweit an, NDR schent wohl doch zu funktoneren, habs dann doch mal mit nem Zähler probiert wie HADI vorgschlagen hat.

Gruß NSN
 
der FIND Baustein ist der FC11 aus der IEC Bibliothek. Laut Hilfe müsste doch am RET_VAL die Position der gefundenen Zeichekette angezeigt werden oder habe ich einen falschen Baustein.
Das ist soweit richtig, aber ,so wie ich die Hilfe zum FC11 verstehe, kann er nur das erste Auftreten des Suchstrings finden, ist also für deine Aufgabenstellung nicht wirklich geeignet.
Versuchs doch mal mit einer Schleife, in der du ein Byte nach dem anderen vergleichst und so die Leerzeichen findest.
Wenn du nun einen Wert suchst, der zwischen dem 5. und dem 6. Leerzeichen steht, merkst du dir die Stelle des 5. und des 6. Leerzeichens. Über die Differenz kannst du so herausbekommen, wie viele Stellen dein Wert hat, damit kannst du ihn gleich rechtsbündig in den Zielstring umkopieren, den Zielstring würd ich vorher mit Leerzeichen füllen.

Grüße von HaDi

[edit]
Im genannten Beispiel ist es, denke ich, noch einfacher, das 6. Leerzeichen zu suchen und dann rückwärts bis zum 5. zu kopieren.
[/edit]
 
Zuletzt bearbeitet:
Ich komme absolut nicht mit dem ausschneiden zurecht. Die Bytes auf ein Leerzeichen (DEZ 32)bekomme ich ja noch hin. Aber wie kann ich gezielt den String an der richtigen Position umkopieren. Steh da echt auf de Schlauch

Gruß NSN
 
Ich habe eigentlich nur jedes der 202 Byte auf 32 verglichen und je einen Merker gebildet. Mit diesem wollte ich nun einen Sprung ausführen der mir den jeweiligen benotigten Teil zwischen den Leerzeichen in ein Datenwort kopiert. Nur weiß ich net wie ich weiter kommen soll da sich der String immer mal wieder verschiebt...
 
Zurück
Oben