CAPITULO 6: FUNCIONES DE ENTRADA y SALIDA DE FICHEROS.
OBJETIVOS
Identificar los controles para el trabajo con ficheros.
Analizar las funciones para el trabajo con con ficheros.
Analizar el almacenamiento de data en multiples formatos.
Analizar la lectura de data de multiples formatos.
ÍNDICE
6.1
FUNCIONES DE ALTO NIVEL DE E/S. ................................... ................. ................................... .................................. ................................... .................... 2
6.2
ALMACENAMIENTO ALMACENAM IENTO DE DATOS ................................. ............... ................................... ................................... .................................... ........................... ......... 4
6.2.1
Creando un archivo. archivo. ....................................................................................................... 4
6.2.2
Almacenando datos en el archivo creado. .................................................................... creado. .................................................................... 7
6.2.3
Almacenando datos en mútiples archivos. ................................................................. archivos. ................................................................. 11
6.3
1
LECTURA DE DATOS ................................. ................ ................................... ................................... ................................... ................................... ......................... ........ 13
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
INTRODUCCIÓN Las aplicaciones actuales en LabVIEW implican no solo observar la información y/o tener un historial gráfico de éstos, sino, estar en la capacidad de poder observar los datos de hace una semana, un mes, u otra fecha con el fin de tener reportes estadísticos, organizar cronogramas de calibración, etc. Para esto existen funciones que permiten manipular ficheros, que son unidades lógicas de almacenamiento, donde el ususario podrá guardar la información en formatos muy útiles además de poder tener acceso a éstos. 6.1
FUNCIONES DE ALTO NIVEL DE E/S.
Las operaciones de entrada y salida con ficheros nos permiten almacenar y recuperar información desde la carpeta de un disco. LabVIEW presenta una gran variedad de funciones para tratar diferentes tipos de operaciones con ficheros. Para hacer uso de los bloques de Ficheros, nos dirigimos al Diagrama de Bloques dando click derecho y en la paleta de funciones nos vamos a File I/O. Ver la figura 1.
Figura 1.
Explicaremos con detalle las funciones que se usan para manipulación de ficheros.
2
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Almacenamiento de Resultados. En un spreadsheet o tabla de resultados, los tabuladores separan columnas, mientras que los saltos de línea separan filas.
Write To Spreadsheet File.vi: Escribe el archivo en formatos como: documento de texto
(.txt); excel (.xls) y word (.doc) con problemas solucionables propias del convertidor.
Read From Spreadsheet File.vi: Lee el archivo de formatos como: documento de texto
(.txt); excel (.xls) y word (.doc). Almacenamiento de Datos en un Archivo Nuevo. Para guardar datos en un archivo de disco nuevo se han de seguir tres pasos: Crear el archivo nuevo, Escribir los datos en el archivo y Cerrar el archivo. También podemos abrir uno ya existente y añadir la nueva información al final de ese fichero o sobreescribir su contenido.
Open/Create/Replace File: Al abrir un fichero se devuelve una referencia o manejador que
sirve para representarlo y trabajar con él. Si no se indica de forma explícita el fichero aparecerá una ventana pidiendo su ruta. Al abrir el fichero también se puede indicar la operación (abrir, crear o reemplazar) y el modo de acceso (lectura, escritura).
Write to Text File: Escribe un string de caracteres o un array de strings como líneas para un
archivo. Si la ruta está conectada en la entrada archivo, la función abre o crea el archivo antes de escribir o reemplaza algunas archivos contenidos.
Close File: Cerrar es la operación contraria a Abrir, libera el fichero.
Recuperación de datos desde un archivo. Cuando se lee desde un fichero, normalmente abrimos un fichero ya existente, leemos el contenido en forma de strings o cualquier otro tipo de datos y cerramos el fichero. Los datos se deben leer con el mismo formato con el que se almacenaron; es decir, si originariamente se guardaron en formato ASCII usando tipos de datos de strings, deberemos leerlos como datos de string.
Read from Text File: Cuando se lee se hará a partir de la posición que hubiera antes si se
conecta una referencia, o desde el principio si es un Path. Se leerán los bytes indicados en count o hasta el final del fichero si no se indica nada. Ficheros Binarios. 3
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Estos VIs funcionan exactamente igual que los anteriores en cuanto al tipo de datos que se cablea en el terminal file. La diferencia es que admiten cualquier tipo de datos y lo almacenan una vez aplanado, mientras que los anteriores trabajan con cadenas de caracteres ASCII.
Write Binary File: Al igual que Write to Text File pero acepta todo tipo de dato.
Read Binary File: Similar al Read from Text File.
Format Into File y Scan Into File : Estos VIs son equivalentes a usar los típicos de leer y
escribir con Scan From String y Format To String respectivamente. Al escribir, con un solo VI se pueden convertir varios tipos de datos a string, concatenarlos y guardar en un fichero. El proceso contrario ocurre en la lectura.
Build Path y Strip Path: El primero contruye una ruta a partir de dos entradas;
mientras que el segundo, separa de una ruta el fichero o último directorio del resto. Measurement File (VIs Express). Estos VIs Express están especialmente preparados para almacenar y recuperar datos provenientes de formas de onda. Entre las opciones más destacadas se encuentra la posibilidad de guardar los datos en fomato LVM, TDM o TDMS. El formato LVM es un fichero de texto que básicamente consta de una cabecera con información sobre el fichero (autor, fecha, etc.) y canales; cada canal a su vez también tiene una cabecera y los datos propiamente dichos.
6.2 ALMACENAMIENTO DE DATOS Para almacenar datos tenemos que tener en cuenta la siguiente consideración: RUTA
CONFIGURACION
GUARDAR
CERRAR
RUTA Si queremos almacenar datos tenemos que tener una ruta, por ejemplo c:\Prueba. CONFIGURACIÓN Además necesitamos un archivo que ya exista o que recién va a ser creado. GUARDAR Una ves que se tenga la ruta y el archivo se procede a almcaenar la información. CERRAR Terminando de almacenar los datos se procede a cerrar el archivo, el no cerrar un archivo puede generar pérdida de datos o daños en el archivo.
6.2.1 Creando un archivo. 4
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Realice el siguiente programa como se muestra en la imagen del diagrama de bloques:
Funciones utilizadas:
Build Path : Construye ruta, en la entrada superior (color verde) se coloca la ruta mediante un control o una constante, la entrada inferior (color rosado) sirve para colocar el nombre del archivo con su respectivo formato. En el ejemplo se ha construido la ruta siguiente: c:\archivo.txt, recuerde que este bloque construye una ruta pero no la crea, además tiene una salida que va a enviar la ruta generada. Si desea almacenar en un archivo Excel solo tendría que cambiar el formato .txt a .xls y .doc para el caso de Word. Open, Create, Replace File : Esta función se encarga de abrir, crear o reemplazar un archivo en una determianda ruta, para acceder a éstas configuraciones se colocan dos contantes en las entradas como se muestra en la figura de arriba y que por defecto abren el archivo y tienen como configuración lectura y escritura, para modificar éstas configuraciones acerque el cursor en éstas constantes y haga clic, inmediantamente le aparecerán las opciones, para el caso de almacenamiento ecogeremos la opción create y dejaremos como read/write (lectura/escritura).
Close File
: Observe como las funciones van concetadas por un hilo de color verde,
éste hilo es la que lleva la información del archivo (ruta, nombre, configuración). El 5
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
bloque Close FIle sirve para cerrar el archivo una ves terminado con el. Corra el programa
y dirígase a la ruta para verificar que el archivo ha sido creado.
Note en la figura que se creó el archivo con formato txt y en el disco c. Además puede notar que pesa 0 kB y esto debido a que aún no de han guardado datos, solo se ha creado el archivo. Se le recuerda que el formato puede cambiar a *.xls (Excel), *.doc(Word) o a un formato que usted desee por ejemplo *.abc la diferencia es que al momento de leer el archivo desde labVIEW tendrá que darle la ruta con ese formato. Si se vuelve a correr el programa surgirá el siguiente error.
6
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Si lee el error es debido a que la ruta está duplicada, y es lógico pues se quiere volver a crear archivo.txt en el disco c cuando éste archivo ya existe, para evitar este error cambiaremos la confiruación de create a replace or create.
6.2.2 Almacenando datos en el archivo creado. 7
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Realice el siguiente programa como se muestra en la imagen del diagrama de bloques:
Funciones utilizadas:
Write to Text File : Esta función almacena los datos que se ingresan en la entrada en formato string (color rosado) como se ve en la figura de arriba, además para saber donde va a almacenar la información necesita la ruta, archivo y configuración, ésta información le llega a traves de la referencia (hilo verde). Toda información que se quiera almacenar debe estar en formato string. Ahora procedemos a correr el programa y verificar la información almacenada.
8
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
ACTIVIDAD 1 Almacenar datos de dos sensores simulados en un archivo con extensión txt cada 1 segundo. DIAGRAMA DE BLOQUES
FUNCIONES UTILIZADAS: Build Path. Open/Create/Replace File. Random Number : Genera números aleatorios entre 0 y 1, al multiplicarlo por 100 generará números entre 0 y 100. Number to Fractional String (punto flotante). Concatenate String Write to Text File. Close File:
: Convierte números a string en formato fraccionario
: Concatena string (agrupa).
FUNCIONAMIENTO: Primero: Se crea la ruta (c:\archivo.txt). Segundo: Configuramos el archivo como lectura y escritura, y que lo abra o en caso exista lo remplace. Tercero: Se entra en un bucle controlado por el botón stop, donde cada 1 segundo se generan dos números aleatorios (0-100) y se convierten a string para finalmente ser almacenados, note que el concatenador se encarga de darle forma al texto, primero va el valor del primer sensor, luego una tabulación, posteriormente el valor del segundo sensor 9
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
y finalmente un salto de línea, a la siguiente iteración el cursor estará en la posición en la que se le dejó (línea siguiente) y se volverá a repetir el proceso hasta que el usuario presione el botón stop. PANEL FRONTAL
RESULTADO
Note el orden en que se guardó la información, esto gracias al concatenador. 10
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
En caso desee colocar título realice el siguiente programa:
La función Write to Text File puede ser usada muchas veces y el cursor se va a colocar en la última posición donde se le dejó. En este caso primero se almacena SENSOR1, luego doble tabulación, posteriormente SENSOR2 y finalmente salto de línea, al entrar al bucle el cursor se encuentra en la segudna línea y la primera ya fue creada correspoediendo a los títulos y siendo creada una sola ves.
6.2.3 Almacenando datos en mútiples archivos. DIAGRAMA DE BLOQUES:
11
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
FUNCIONES UTILIZADAS: Format Date Time String : Esta función retorna un string conteniendo parámetros de hora y fecha de acuerdo al formato ingresado en la parte izquierda. En este caso se está extrallendo la hora_minuto_segundo en formato string.
FUNCIONAMIENTO: Se crea el nombre del archivo en base a la hora del sistema utilizando un concatenador donde el nombre final será File_H_M_S.txt, lo siguiente es lo mismo que se ha visto en la creación de un archivo. Note que el while de almacenamiento va a terminar cuando se presione el botón stop ó se hayan almacenado 20 datos, una vez que se salga del while se cierra el archivo y en la siguiente iteración se vuelve a crear otro archivo pero con un nombre diferente (ya que la hora del sistema va cambiando), al cambiar la hora, cambia el nombre del archivo por lo tanto se evita el problema de archivos duplicados entonces es suficiente configurar el bloque Open/Create/Replace File como Create. RESULTADO
12
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
6.3 LECTURA DE DATOS Al igual que el caso de almacenamiento de datos, para leer datos tenemos que considerar lo siguiente:
RUTA
13
LECTURA
CERRAR
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Par abrir un archivo se necesita la ruta, luego se extrae la información y finalmente cerramos el archivo. ACTIVIDAD 2 Extraer la información de los archivos creados anteriormente. DIAGRAMA DE BLOQUES
FUNCIONES UTILIZADAS Open/Create/Replace File : Por defecto está comfigurado como Open y Read/Write. No se configura ya que sus valores por defectos con los necesarios para la lectura de datos. Read Text File Close File
: Lee una cantidad de bytes de datos. : Cierra el archivo
PANEL FRONTAL
14
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
Controles utilizados: File Path Control: En el almacenamiento de datos la ruta se ha estado dando mediante constantes, pero también s emkencionó que se podría hacer a traves de controles, este control se encuentra en Panel Frontal String&Path File Path Control .
Numeric Control. String Indicator. 15
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
FUNCIONAMIENTO: A la función de Open File se le da la ruta del archivo mediante el control File Path (también se podría mediante una constante que lleve consigo toda la ruta), esta función Open File abre y lleva la referencia a la función Read Text File, la cual muestra la información a traves de un indicador string pero condicionado por una cantidad controlada de bytes, la cual se controla desde la entrada Count, en el ejemplo se puso un control numérico que lleva el número -1, lo cual significa todo, si cambia este valor a 1 pues leerá solo el primer byte, si pone 2 leerá los dos primeros bytes y así sucesivamente. Retomando la actividad 2 se pide extraer los valores de los sensores para lo cual realice el siguiente código:
DIAGRAMA DE BLOQUES
16
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
FUNCIONES UTILIZADAS String Subset : Extrae una porción del string a partir de una posición (offset) y una determinada cantidad de carcteres (length). Spreadsheet String to Array : Convierte un bloque de datos string separados por un caracter especial (coma, tabulación, salto de línea, espacio)a un arreglo de esos valores num éricos.
PANEL FRONTAL
17
Capítulo 03: Funciones de Entrada y Salida de Ficheros.
FUNCIONAMIENTO: Una ves que se tiene la información en un string se va a tranformar a un arreglo de datos utilizando la función Spreadsheet String to Array, pero para esto los datos deben estar alineados, por lo que primero se extrae solo los datos (sin título) utilizando la función String Subset , la cual extrae todos los datos a partir del caracter 17 (a partir de la segunda línea), esto lo pueded observar en los indicadores text y text 2 de la figura de arriba. Una ves que se tienen los datos ordenados se usa la función Spreadsheet String to Array, la cual necesita el bloque de datos además del formato de conversión (%f datos flotantes) y el tipo de separación entre datos (por defecto es tabulación) para finalmente mostrar los valores en un arreglo tipo double, ahora teniendo los valores como doubles se pueden realizar operaciones, gráficos, etc.
18
Capítulo 03: Funciones de Entrada y Salida de Ficheros.