Vai all indice del manuale di programmazione
Tipo:
Funzione
Libreria LogicLab:
eLLabCommonLib
Libreria Codesys:
Non disponibile
Questa funzione esegue lo swap del valore di variabili, sono gestite operazioni diverse in base alla definizione di Mode. Gli indirizzi di Source e Destination possono coincidere rendendo possibile lo swap sulla variabile stessa.
Approfondimenti
- In questo topic un esempio di utilizzo della funzione.
- In questo topic un esempio di swap variabile REAL.
Descrizione
Destination (PVOID) Indirizzo variabile di destinazione.
Source (PVOID) Indirizzo variabile sorgente.
Type (VR_TYPE) Tipo variabile (Vedi definizione).
Mode (SWAP_MODE) Modo swap (Vedi definizione).
La funzione ritorna una variabile BOOL, FALSE: Errore esecuzione, TRUE: Esecuzione Ok.

Esempi
Come utilizzare gli esempi.
Nell’esempio sono eseguite alcune operazioni di swap su variabili.
LogicLab (Ptp201, ST_SwapData)
PROGRAM ST_SwapData
VAR
i : BOOL; (* Auxiliary variable *)
BYData : ARRAY[0..5] OF BYTE; (* Byte data example *)
WDData : ARRAY[0..5] OF WORD; (* Word data example *)
DWData : ARRAY[0..5] OF DWORD; (* DWord data example *)
LWData : ARRAY[0..5] OF LWORD; (* LWord data example *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SwapData"
// *****************************************************************************
// This program shows the use of SwapData function.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// SOME VARIABLE COPY
// -------------------------------------------------------------------------
// Copy BYTE, Source:=16#12, Destination:=16#12.
BYData[1]:=16#12; //Byte data example
i:=SwapData(ADR(BYData[0]), ADR(BYData[1]), BYTE_TYPE, SWAP_COPY);
// -------------------------------------------------------------------------
// SOME HALF VARIABLE SWAPS
// -------------------------------------------------------------------------
// Swap BYTE, Source:=16#12, Destination:=16#21.
BYData[0]:=16#12; //Byte data example
i:=SwapData(ADR(BYData[1]), ADR(BYData[0]), BYTE_TYPE, SWAP_HALF);
// Swap WORD, Source:=16#1234, Destination:=16#3412.
WDData[0]:=16#1234; //Word data example
i:=SwapData(ADR(WDData[1]), ADR(WDData[0]), WORD_TYPE, SWAP_HALF);
// Swap DWORD, Source:=16#12345678, Destination:=16#56781234.
DWData[0]:=16#12345678; //DWord data example
i:=SwapData(ADR(DWData[1]), ADR(DWData[0]), DWORD_TYPE, SWAP_HALF);
// Swap LWORD, Source:=16#0123456789ABCDEF, Destination:=16#89ABCDEF01234567.
LWData[0]:=16#0123456789ABCDEF; //LWord data example
i:=SwapData(ADR(LWData[1]), ADR(LWData[0]), LWORD_TYPE, SWAP_HALF);
// -------------------------------------------------------------------------
// SOME VARIABLE SWAPS
// -------------------------------------------------------------------------
// Swap BYTE, values of source and destination are swapped.
BYData[2]:=16#34; //Byte data example
BYData[3]:=16#12; //Byte data example
i:=SwapData(ADR(BYData[3]), ADR(BYData[2]), BYTE_TYPE, SWAP_VARS);
// Swap WORD, values of source and destination are swapped.
WDData[2]:=16#5678; //Word data example
WDData[3]:=16#1234; //Word data example
i:=SwapData(ADR(WDData[3]), ADR(WDData[2]), WORD_TYPE, SWAP_VARS);
// Swap DWORD, Source:=16#12345678, Destination:=16#56781234.
DWData[2]:=16#89ABCDEF; //DWord data example
DWData[3]:=16#01234567; //DWord data example
i:=SwapData(ADR(DWData[3]), ADR(DWData[2]), DWORD_TYPE, SWAP_VARS);
// Swap LWORD, Source:=16#12345678, Destination:=16#56781234.
LWData[2]:=16#FEDCBA9801234567; //DWord data example
LWData[3]:=16#0123456789ABCDEF; //DWord data example
i:=SwapData(ADR(LWData[3]), ADR(LWData[2]), LWORD_TYPE, SWAP_VARS);
// -------------------------------------------------------------------------
// SOME ENDIANNESS SWAPS
// -------------------------------------------------------------------------
// Swap BYTE, Source:=16#12, Destination:=16#12.
BYData[4]:=16#12; //Byte data example
i:=SwapData(ADR(BYData[5]), ADR(BYData[4]), BYTE_TYPE, SWAP_ENDIAN);
// Swap WORD, Source:=16#1234, Destination:=16#3412.
WDData[4]:=16#1234; //Word data example
i:=SwapData(ADR(WDData[5]), ADR(WDData[4]), WORD_TYPE, SWAP_ENDIAN);
// Swap DWORD, Source:=16#12345678, Destination:=16#78563412.
DWData[4]:=16#12345678; //DWord data example
i:=SwapData(ADR(DWData[5]), ADR(DWData[4]), DWORD_TYPE, SWAP_ENDIAN);
// Swap LWORD, Source:=16#0123456789ABCDEF, Destination:=16#EFCDAB8967452301;
LWData[4]:=16#0123456789ABCDEF; //LWord data example
i:=SwapData(ADR(LWData[5]), ADR(LWData[4]), LWORD_TYPE, SWAP_ENDIAN);
// [End of file]