ParamManagerScripts/backend/script_groups/TwinCat/.example/_DWORD_SWAP_BYTEARRAY.EXP

30 lines
647 B
Plaintext

(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION _Dword_Swap_ByteArray : ARRAY [0..3] OF BYTE
VAR_INPUT
i_Real : REAL ;
END_VAR
VAR
i : INT ;
j : INT ;
k : INT ;
mAuxDWord : DWORD ;
mAuxByte : BYTE ;
mOutByte: BYTE;
END_VAR
(* @END_DECLARATION := '0' *)
MEMCPY(ADR(mAuxDWord), ADR(i_Real), 4) ;
FOR k := 0 TO 3 DO
mOutByte := 0;
mAuxByte := DWORD_TO_BYTE (mAuxDWord) ;
FOR i:=0 TO 7 DO
IF (SHR (mAuxByte, i) MOD 2) = 1 THEN
mOutByte := mOutByte + REAL_TO_BYTE(EXPT(2, i)) ;
END_IF
END_FOR
_Dword_Swap_ByteArray[3 - k] := mOutByte ;
mAuxDword := SHR (mAuxDWord, 8);
END_FOR
END_FUNCTION