Al utilizar esta función, los caracteres ASCII que se hayan recibido se pueden copiar del búfer de recepción a una variable de tipo STRING.
El origen de datos de cualquier tipo de datos se pasa a la función mediante un puntero a través de la entrada i_pbyBuffer. El destino de los datos, la variable de tipo STRING, se pasa a la función mediante un puntero a través de la entrada i_psString. El número máximo de caracteres a copiar se determina mediante la entrada i_uiMaxLength.
Con la entrada i_xStopAtZero, se determina si la función copiará todos los bytes especificados mediante i_uiMaxLength o si el proceso de copia se detendrá en el primer carácter NUL (16#0) detectado. Tenga en cuenta que el carácter NUL indica el final del valor de una variable de tipo STRING.
Si no se detecta ningún carácter NUL hasta que se copia el número máximo de caracteres o la entrada i_xStopAtZero es FALSE, la función escribirá el carácter NUL en el enésimo byte de la memoria de destino. n = i_uiMaxLength + 1. Es decir, el valor máximo de i_uiMaxLength equivale al tamaño de la memoria de destino - 1.
Ejemplo de codificación del uso de FC_ReadSTRING en texto estructurado:
// Copiar los datos en una variable de tipo STRING
TCPUDP.FC_ReadSTRING(
i_pbyBuffer := ADR(abyReceiveBuffer),
i_psString := ADR(sData),
i_uiMaxLength := SIZEOF(sData)-1,
i_xStopAtZero := TRUE);
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_pbyBuffer |
POINTER TO BYTE |
Puntero a la dirección de memoria de la que se va a copiar (origen). |
i_psString |
POINTER TO STRING |
Puntero a la dirección de memoria a la que se va a copiar (destino, una variable de tipo STRING) |
i_uiMaxLength |
UINT |
Número máximo de bytes a copiar. |
i_xStopAtZero |
BOOL |
Si es TRUE, el proceso de copia se detiene al detectarse el primer carácter NUL (16#0). Si es FALSE, el número de bytes especificados con i_uiMaxLength y un carácter NUL se escriben en la memoria de destino. |