Vai al contenuto

MemCompare, compares memory buffers

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabCommonLib
Libreria Codesys: Non disponibile

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.

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.

La funzione ritorna: FALSE: Se buffer uguali, TRUE: Se buffers diversi.

Immagine F_MemCompare

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]
Was this article helpful?