-> Hier kostenlos registrieren
Hallo,
bin relativ neu auf dem Thema, der SPS-Programmierung in ST und habe gerade ein paar Problem mit den String-Arrays.
Habe auch schon versucht mich hier im Forum schlau zu machen, habe aber noch nichts passendes gefunden.
Ich bekomme von einer externen Quelle ein UDP-Datagramm mit 16-Byte Länge. Dieses wandle ich anschließend in einen String um und möchte es nun gerne in eine Datei schreiben.
Hier kommt dann das Problem: Ich habe hierfür ein String-Array mit jeweils String-Länge 3 deklariert, beim Schreiben in die Text-Datei wird jedoch an die Strings, die kürzer als 3 sind irgendwelche Sonderzeichen oder Leerzeichen angehängt, die ich überhaupt nicht brauchen kann.
Hab mir schon überlegt, die String-Längen des Arrays dynamisch zu ändern, aber dass das nicht möglich ist, hab ich mittlerweile schon herausgefunden.
Hättet ihr irgendwelche Lösungsansätze?
"in" ist mein eingehendes Byte-Array
"strarr1" ist das String-Array
Viele Grüße,
Matthias
bin relativ neu auf dem Thema, der SPS-Programmierung in ST und habe gerade ein paar Problem mit den String-Arrays.
Habe auch schon versucht mich hier im Forum schlau zu machen, habe aber noch nichts passendes gefunden.
Ich bekomme von einer externen Quelle ein UDP-Datagramm mit 16-Byte Länge. Dieses wandle ich anschließend in einen String um und möchte es nun gerne in eine Datei schreiben.
Hier kommt dann das Problem: Ich habe hierfür ein String-Array mit jeweils String-Länge 3 deklariert, beim Schreiben in die Text-Datei wird jedoch an die Strings, die kürzer als 3 sind irgendwelche Sonderzeichen oder Leerzeichen angehängt, die ich überhaupt nicht brauchen kann.
Hab mir schon überlegt, die String-Längen des Arrays dynamisch zu ändern, aber dass das nicht möglich ist, hab ich mittlerweile schon herausgefunden.
Hättet ihr irgendwelche Lösungsansätze?
Code:
(* Schleife zum byte-weisen Auslesen der empfangenen Nachricht *)
WHILE ctsz <= SIZEOF(in) DO
pt:= ADR(in[i]);
ptval:= pt^;
ptstr:= BYTE_TO_STRING(ptval);
strarr1[i].s1:= ptstr;
i:= i+1;
ctsz:= ctsz + 1;
END_WHILE
(* Re-Initialisieren des Schleifen- und des Adresszählers *)
i:= 1;
ctsz:= 1;
(* Schreiben in test.txt *)
TEXTFILE:= SysFileOpen(szFile:= 'C:\Dokumente und Einstellungen\felbma\Desktop\test.txt' , am:= AM_WRITE , pResult:= 0);
out:= SysFileWrite(hFile:= TEXTFILE , pbyBuffer:= ADR(strarr1) , ulSize:= SIZEOF(strarr1), pResult:= 0);
SysFileClose(hFile:= TEXTFILE);
"in" ist mein eingehendes Byte-Array
"strarr1" ist das String-Array
Viele Grüße,
Matthias