MemCompare, compares memory buffers
Esegue la comparazione tra il contenuto del buffer puntato da Source con il contenuto del buffer puntato da Destination per la dimensione definita in Size. Se i due buffers sono uguali la funzione ritorna FALSE, in caso contrario ritorna TRUE.
Se Update è attivo, in caso di disuaguaglianza tra i buffers il valore in Source viene copiato in Destination.
Approfondimenti
- In questo topic riportate informazioni sulla copia e comparazione tra variabili array e struttura.
Descrizione
| Parametro | Tipo | Descrizione |
|---|---|---|
| Destination | PVOID | Indirizzo buffer di destinazione. |
| Source | PVOID | Indirizzo buffer sorgente. |
| Size | UDINT | Dimensione dei due buffers. |
| Update | BOOL | Se attivo forza la copia del valore da buffer Source in Destination. |
| Out | FALSE | La funzione ritorna: FALSE: Se buffer uguali, TRUE: Se buffers diversi. |
Esempi
Come utilizzare gli esempi.
Attivando Check viene eseguita la comparazione tra i due buffers, siccome Update è attivo in caso di differenza il valore presente nel buffer Source è copiato nel buffer Destination.
LogicLab (Ptp201, ST_MemCompare)
PROGRAM ST_MemCompare
VAR
Check : BOOL; (* Buffer check command *)
Result : BOOL; (* Compare result *)
Source : ARRAY[0..15] OF BYTE; (* Source buffer *)
Destination : ARRAY[0..15] OF BYTE; (* Destination buffer *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_MemCompare"
// *****************************************************************************
// This program shows the use of "MemCompare" function.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// BUFFER COMPARISON
// -------------------------------------------------------------------------
// The buffers are compared,the content of Source is copied on Destination.
IF (Check) THEN
Check:=FALSE; //Buffer check command
Result:=MemCompare(ADR(Destination), ADR(Source), SIZEOF(Destination), TRUE);
END_IF;
// [End of file]