ARRAY OF BYTE in STRING

TimeOUT

Level-1
Beiträge
125
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich möchte gerne ein Array, bestehend aus 8 Byte, in einen STRING umwandeln.

Soll heißen:

Aus dem Array: [0] := 16#01, [1] := 16#02, [2] := 16#03 ... [7] := 16#FF
Soll der String werden: '01.02.03.04.05.06.FF'

Die Punkte ('.') zwischen den einzelnen Bytes werde ich dann mit der INSERT-Funktion einfügen, allerdings stehe ich gerade auf dem Schlauch überhaupt erstmal in diese Form zu kommen: '010203040506FF'
Gibt es da irgendwelche fertigen Funktionen von TwinCAT oder wie lässt sich das umsetzen?
BYTE_TO_STRING wandelt das Byte leider nicht so wie ich es möchte (16#0A --> '10', ich möchte aber '0A')

Viele Grüße
TimeOUT
 
Moinsen,

schau mal in die Bibliothek Tc2_System die Funktion F_CreateAmsNetId, ich glaube das ist genau das was du suchst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke für den Tipp, doch leider Nimmt die Funktion nur ein ARRAY [0..5] OF BYTE an :(

Hintergrund der ganzen Geschichte ist, dass ich diesen String dann über FB_FilePuts in ein Textfile schreiben möchte.
Ich denke da wird er meckern, wenn ich einen anderen Typ als STRING übergeben würde.

Sorry, das hatte ich vorher vergessen zu erwähnen :rolleyes:
 
Moin,

zur not wandel doch die einzelnen Bereiche in einen String und Verbinde diese dann mit CONCAT =)

Mfg Hendrik
 
Das habe ich mir auch schon überlegt, aber bei der Wandlung von BYTE_TO_STRING brauch cih immer 2 Zeichen.

Ich wollte mir dazu ein Funktion schreiben, allerdings geht das so nicht ganz:

Code:
FUNCTION CBYTEARRAY_TO_STRING : STRING
VAR_INPUT
	BYTEARRAY: ARRAY [0..7] OF BYTE;
END_VAR
VAR	
	i: 			USINT;
	sTemp: 		STRING := '';


END_VAR

-----------------------------------

FOR i := 0 TO 7 BY 1 DO
	sTemp := CONCAT(STR1 := sTemp, STR2 := BYTE_TO_STRING(BYTEARRAY[i],'%02x');  
END_FOR;
CBYTEARRAY_TO_STRING := sTemp;

MIt '%02x' will ich ihm sagen, dass er 16#08 nicht zu 8 sondern 08 wandeln soll. Aber das funktioniert so nicht :confused:
Aber das Problem bei der Wandlung von BYTE_TO_STRING bspw. 16#0A --> 10 besteht ja weiterhin...
 
Hey ich benötige diese Funktion gerade zwar nicht.

Wollte das gerade auf bei TwinCat 2 ausprobieren und der Kennt kein BYTE_TO_HEXSTR.

muss man bei TwinCat 2 irgendwas anders machen?


MfG Hendrik
 
Zurück
Oben