FB_CsvRead Descripción funcional
Tipo: |
Bloque de funciones |
Disponible desde: |
V1.0.8.0 |
Hereda de: |
- |
Implementa: |
- |
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_stTableReadValues 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.
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.