Skip to main content

POU: CheckPointer

Función de supervisión para punteros (CheckPointer)

Utilice esta función para monitorear el acceso a la memoria de los punteros en el modo de tiempo de ejecución. A diferencia de otros funciones de vigilancia, no existe una sugerencia estándar para la implementación de CheckPointer. Debe definir una implementación de acuerdo con sus propios requisitos.

los CheckPointer La función debe verificar si el puntero pasado hace referencia o no a una dirección de memoria válida, y si la orientación del área de memoria a la que se hace referencia coincide o no con el tipo de variable al que se refiere el puntero. Si se cumplen ambas condiciones, se devuelve el puntero. De lo contrario, la función debería completar un manejo de errores apropiado.

Atención

Para obtener la función de supervisión de funciones, no edite la parte de la declaración. Sin embargo, se le permite agregar variables locales.

Importante

No se produce una llamada a la función de supervisión implícita para THIS puntero y SUPER puntero.

Importante

En la versión del compilador 3.5.7.40 y superior, el Puntero de control también afecta REFERENCE variables lo mismo que las variables de puntero.

ejemplo 538. Plantilla

Declaración:

//  Automatically generated code: DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
        ptToTest : POINTER TO BYTE;
        iSize : DINT;
        iGran : DINT;
        bWrite: BOOL;
END_VAR

Implementación: (incompleta)

//  Not a standard implementation. Insert your code here.
CheckPointer := ptToTest;
. Cuando se llama a la función, recibe los siguientes parámetros de entrada:
  • ptToTest: dirección de destino del puntero

  • iSize: Tamaño de la variable referenciada; el tipo de datos de iSize debe ser compatible con INT y cubrir el alcance dimensional de las variables

  • iGran: Granularidad del tamaño referenciado; este es el tipo de datos no estructurados más grande contenido en las variables referenciadas; el tipo de datos de iGran debe ser compatible con INT

  • bWrite: Tipo de acceso (TRUE = acceso de escritura, FALSE = acceso de lectura); el tipo de datos de bWrite tiene que ser BOOL

Cuando el resultado de la verificación es positivo, se devuelve el puntero sin cambios (ptToTest).