FB_CsvRead Descripción funcional

Descripción general

Tipo:

Bloque de funciones

Disponible desde:

V1.0.8.0

Hereda de:

-

Implementa:

-

G-SE-0060080.1.gif-high.gif

 

 

Descripción funcional

El bloque de funciones FB_CsvRead se utiliza para leer un archivo CSV que se encuentra en el sistema de archivos del controlador o en la memoria ampliada (por ejemplo, una tarjeta de memoria SD). Para obtener información sobre el sistema de archivos, consulte el capítulo Organización de la memoria Flash en la guía de programación de su controlador.

El archivo CSV a leer contiene diversos valores (columnas) que están dispuestos en registros (filas). Los valores se separan mediante un delimitador específico. Los registros se separan mediante un salto de línea.

Según el código de carácter especificado para el delimitador, el bloque de funciones identifica los valores individuales al leer el contenido del archivo. El código de carácter del salto de línea depende del sistema operativo en el que se ha creado el archivo. El bloque de funciones admite los tres códigos de carácter de salto de línea (ASCII) de uso más común. Detecta el carácter de salto de línea utilizado al leer el contenido del archivo.

Se admiten los siguientes caracteres de salto de línea (ASCII):

oCRLF (0D0A hex): Se utiliza en sistemas operativos como Windows y MS-DOS.

oLF (0A hex): Se utiliza en sistemas operativos como Unix, Linux, Mac OS X y Android.

oCR (0D hex): Se utiliza en sistemas operativos como Mac OS X versión 9 o anteriores.

Los valores que se leen del archivo especificado se almacenan en el búfer de lectura proporcionado por la aplicación en variables de tipo STRING. Declare el búfer de lectura de la aplicación como ARRAY bidimensional de tipo STRING. Utilice la entrada i_stTableRead­Values para proporcionar las dimensiones de la matriz y el puntero a dicha matriz en el bloque de funciones. Para obtener más información, consulte la estructura ST_CsvTable.

Al ejecutar el bloque de funciones, la entrada i_stTableReadValues.pbyTable se almacena internamente para poder utilizarla en el futuro. En el caso de que se detecte un evento de cambio online mientras se ejecuta el bloque de funciones (q_xBusy = TRUE), las variables de uso interno se actualizarán con el valor actual de la entrada.

NOTA: No reasigne i_stTableReadValues.pbyTable a un área de memoria distinta mientras se ejecute el bloque de funciones.

El archivo a leer debe contener sólo caracteres ASCII para garantizar la representación correcta del contenido del archivo en la aplicación. Los archivos pueden contener una marca de orden de bytes (BOM) al principio que indica la codificación del archivo procesado. Los archivos codificados en ASCII no contienen marcas BOM. El bloque de funciones comprueba si hay marcas BOM específicas en el archivo especificado.

Si el archivo contiene una de las siguientes marcas BOM, se cancela la ejecución del bloque de funciones y se indica un error:

FE FF hex, FF EF hex o EF BB BF hex

Utilice la entrada i_stReadParameter para determinar el volumen de datos que se va a leer. Se puede leer todo el contenido del archivo. También puede seleccionar que se lea un solo registro (fila), una sola columna o un único valor. Además, puede seleccionar que sólo se lea la información del archivo que se proporciona en la salida q_stFileInformation.

NOTA: Con esta función se borra la matriz antes de la operación de lectura.

Interfaz

Entrada

Tipo de datos

Descripción

i_xExecute

BOOL

El bloque de funciones ejecuta la operación de lectura con el archivo CSV especificado tras un flanco ascendente de esta entrada.

Consulte también el capítulo Comportamiento de los bloques de funciones con la entrada i_xExecute.

i_sFilePath

STRING[255]

Ruta al archivo CSV.

Si se especifica un nombre de archivo sin la extensión de archivo, el bloque de funciones añade la extensión .csv.

i_stReadParameter

ST_CsvReadParameter

Especifica el contenido a leer del archivo.

Consulte ST_CsvReadParameter.

i_timTimeout

TIME

Trascurrido este tiempo, la ejecución se cancela.

Si el valor es T#0s, se aplica el valor predeterminado T#2s.

i_stTableReadValues

ST_CsvTable

Estructura para pasar el búfer proporcionado por la aplicación al bloque de funciones (consulte la estructura ST_CsvTable).

Salida

Tipo de datos

Descripción

q_xDone

BOOL

Si esta salida está configurada en TRUE, la ejecución se ha completado correctamente.

q_xBusy

BOOL

Si esta salida está configurada en TRUE, la ejecución del bloque de funciones está en curso.

q_xError

BOOL

Si esta salida se establece en TRUE, se ha detectado un error. Para obtener información detallada, consulte q_etResult y q_etResultMsg.

q_etResult

ET_Result

Proporciona información de diagnóstico y estado en forma de valor numérico.

Si q_xBusy = TRUE, el valor indica el estado.

Si q_xDone o q_xError = TRUE, el valor indica el resultado.

q_sResultMsg

STRING[80]

Proporciona información adicional de diagnóstico y estado en forma de mensaje de texto.

q_stFileInformation

ST_CsvFileInfo

La estructura contiene información sobre el último archivo que se ha procesado.

q_stWarnValueTruncated

ST_CsvWarnValueTruncated

Proporciona información sobre el primer valor que se ha truncado, de estar disponible.

NOTA: La salida se actualiza junto con q_xDone.

Para obtener más información sobre el comportamiento de la señal de las entradas y salidas básicas, consulte el capítulo Comportamiento de los bloques de funciones con la entrada i_xExecute.

Uso de variables de tipo POINTER TO …  o REFERENCE TO …

Este bloque de funciones proporciona entradas o entradas y salidas de tipo POINTER TO… o REFENCE TO…. Al utilizar un puntero o una referencia de este tipo, el bloque de funciones accede al área de memoria dirigida. En el caso de un evento de cambio online, es posible que las áreas de memoria se desplacen hacia nuevas direcciones y que, en consecuencia, un puntero o una referencia pasen a ser no válidos. Para evitar la presencia de errores relacionados con punteros no válidos, las variables de tipo POINTER TO… o REFERENCE TO… deberán actualizarse de manera cíclica o, al menos, al principio del ciclo en el que se utilicen.