Trabajar con rutas de archivo en destinos en tiempo real

Actualizado el Dec 1, 2021

Ambiente

Sistema Operativo

  • VxWorks
  • LabVIEW Real-Time (NI Linux Real-Time)

Este tutorial analiza brevemente las diferencias en la estructura de archivos entre Phar Lap, VxWorks y Linux Real-Time y detalla las prácticas de programación recomendadas para el acceso a archivos para crear una experiencia de cliente perfecta en todas las plataformas.

Nota: NI eliminará el soporte para Phar Lap para cRIO en la versión de software NI 2020 y para PXI en la versión de software NI 2022. Para obtener más información, consulte la hoja de ruta EOL de Phar Lap RT OS .

 

Las rutas y la estructura de los archivos varían un poco según el sistema operativo de destino. Este documento discute las prácticas recomendadas de codificación de LabVIEW para designar rutas de archivos para que una aplicación se pueda mover sin problemas de un objetivo a otro.

Opciones de SO en tiempo real

Todos los controladores NI Real-Time ejecutan uno de tres sistemas operativos diferentes; Phar Lap, VxWorks o NI Linux Real-Time. En un destino que ejecuta el sistema operativo Phar Lap, las rutas de archivo funcionan de manera muy similar a las rutas de archivo de Windows con el directorio raíz en C:\ y barras invertidas como delimitadores entre directorios. Los destinos de VxWorks tienen una estructura de archivos de estilo Unix y, por lo tanto, usan barras inclinadas como delimitadores entre directorios con /c/ como directorio raíz. Sin embargo, en LabVIEW el usuario notará muy poca diferencia entre trabajar con rutas de archivo Phar Lap y rutas de archivo VxWorks. Esto se debe a que todas las constantes, controles e indicadores de ruta muestran las rutas de archivo de VxWorks usando el mismo formato que Pharlap (o Windows) en LabVIEW. Por lo tanto, al crear rutas de archivo como se recomienda en este documento, el usuario no debería notar ninguna diferencia entre trabajar con Phar Lap y trabajar con VxWorks.


En los destinos NI Linux Real-Time, la ruta del archivo raíz es / y las barras diagonales sirven como delimitadores entre directorios. Los objetivos NI Linux Real-Time no tienen una unidad C. Sin embargo, por conveniencia, los directorios / cy / c / ni-rt existen, y / c / ni-rt / startup redirecciona a / home / lvuser / natinst / bin, que es la ruta recomendada para aplicaciones de inicio en NI Linux Real- Objetivos de tiempo.

Las siguientes imágenes muestran un código simple para crear un archivo de texto llamado test.txt en el directorio raíz del objetivo en cada objetivo en tiempo real:

Phar Lap

VxWorks

NI Linux en tiempo real

Caminos construidos dinámicamente

Al construir dinámicamente rutas de archivo, NI recomienda usar una constante de ruta de archivo o control para el directorio raíz y usar VIs de ruta de compilación con elementos de ruta individuales (carpeta de nombres de archivos) para construir la ruta completa como se muestra a continuación. Esto asegura que se usen el directorio raíz correcto y los tipos de barra. Las imágenes a continuación muestran las rutas devueltas cuando este código se ejecuta en diferentes sistemas operativos.


Pharlap y VxWorks

NI Linux en tiempo real

Alternativamente, se pueden construir rutas relativas usando la ubicación del VI implementado como referencia. El siguiente código demuestra cómo hacer esto usando las funciones de constante Path, Strip Path y Build Path del VI actual. Al igual que con la primera técnica, esto también evita la necesidad de reelaborar la ruta si el VI se mueve a un controlador con un sistema operativo diferente oa una ubicación con una estructura de archivo diferente. Las imágenes a continuación muestran las rutas devueltas cuando este código se ejecuta en diferentes sistemas operativos.


Pharlap

VxWorks

NI Linux en tiempo real

 

Constantes de ruta de archivo

Las constantes y controles de la ruta de archivo cambian dinámicamente las rutas según el contexto de destino. Por ejemplo, una constante de ruta de archivo que contiene C:\ cuando se guarda para un objetivo Pharlap o VxWorks, se actualizará automáticamente a / c / cuando se mueva a un objetivo NI Linux RT. Las constantes y controles de ruta de archivo son el método preferido para especificar rutas estáticas en objetivos en tiempo real.

Sin embargo, las constantes de ruta de archivo generalmente no podrán corregir rutas de archivo no válidas. Si escribe una ruta no válida en la constante, puede intentar corregir esa ruta para el sistema operativo actual, pero probablemente fallará y producirá un resultado incorrecto.

A continuación se muestran algunos ejemplos de cómo la constante de ruta de archivo corregirá / intentará corregir la entrada.

1) El usuario escribe /c/Applicaton/SubVIs/Example.vi en la ruta constante en una máquina con Windows. La constante de ruta reconoce esto como una ruta de archivo válida para un sistema operativo Linux Real-Time. Lo corrige con éxito a una ruta de estilo de Windows:

2) El usuario escribe \ c \ Application \ SubVIs \ Example.vi en una ruta constante en el contexto de Windows. Esta es la misma ruta que en el Ejemplo 1, pero con barras invertidas. Esta es una ruta de archivo no válida porque contiene barras diagonales en la dirección incorrecta para Linux RT, pero no comienza con una letra de unidad como lo haría una ruta de estilo de Windows. La constante de ruta intenta agregar la letra de la unidad como si fuera una ruta de estilo de Windows:

3) El usuario escribe C: /Application/SubVIs/Example.vi en una ruta constante en el contexto de Windows. Esta sería una ruta de estilo de Windows excepto por las barras diagonales. La constante de ruta reconoce que comienza con una letra de unidad y agrega una barra inclinada hacia atrás:

El usuario debe ser responsable de reconocer cuando se ha introducido una ruta no válida y, por tanto, se ha corregido de forma errónea.

 

Rutas de archivo estáticas

Se puede crear una ruta de archivo sin utilizar una constante de ruta de archivo. La función String to Path se puede utilizar para especificar rutas de archivos estáticos en sistemas en tiempo real como se muestra a continuación:

Sin embargo, NI no recomienda esta opción porque la función String to Path no cambia dinámicamente el directorio raíz o la dirección de la barra al moverse entre objetivos. Se debe tener cuidado para asegurarse de que cualquier cadena convertida en rutas de archivo contenga solo las barras diagonales correctas para el sistema operativo de destino. Por ejemplo, si la cadena de la ruta del archivo contiene barras invertidas e intenta ejecutar el VI en un destino en tiempo real de Linux, el programa no podrá ubicar la ubicación correcta en el disco. Esto se debe a que Linux Real-Time no reconoce la barra invertida como delimitador; en NI Linux Real-Time, un nombre de archivo podría contener una barra invertida.

Nota : la mayoría de los objetivos en tiempo real utilizan letras para indicar diferentes unidades. Las rutas que comienzan con C se almacenan en la memoria interna del objetivo en tiempo real. Las unidades Compact Flash externas se asignan comenzando con la primera letra de controlador disponible después de C y los discos duros USB externos se asignan comenzando con U.

Nota : La carpeta en la que especificas escribir tiene que existir en la unidad de destino antes de escribir en ella o tu VI no funcionará correctamente.

Permisos del sistema de archivos

Los permisos de acceso a archivos y carpetas no se aplican en los objetivos de NI Real-Time que ejecutan los sistemas operativos VxWorks o PharLap. Los objetivos de NI Linux Real-Time, por otro lado, usan y hacen cumplir los permisos de acceso a carpetas y archivos de estilo Linux estándar.