Está en la página 1de 76

ni.

com/training
N
at
N ion
ot a
fo l In
rd s
is tru
tri m
bu en
tio ts
n
Manual de Curso
LabVIEW Core 2
LabVIEW Core 2 TM

Manual de Curso

tio ts
bu en
Versin del software actual 2012

n
Edicin de Agosto 2012
tri m
is tru
Nmero de parte 325292D-0154
Manual de Curso LabVIEW Core 2
rd s
fo l In

Copyright
19932012 National Instruments. Todos los derechos reservados.
En virtud de las leyes de copyright y de proteccin de los derechos de autor, esta publicacin no puede reproducirse ni transmitirse
en ninguna forma, electrnica o mecnica, incluidas las fotocopias, grabacin, almacenamiento en un sistema de recuperacin de
ot a

informacin, o traduccin, en su totalidad o en parte, sin el consentimiento previo por escrito de National Instruments Corporation.
N ion

National Instruments respeta los derechos de propiedad intelectual de otros, y solicitamos a nuestros usuarios que hagan lo mismo.
El software de NI est protegido por el derecho de autor y las normas de la propiedad intelectual. Aunque el software de NI puede
utilizarse para reproducir software u otro material perteneciente a otros, el software de NI slo podr utilizarse para reproducir
at

material que pueda reproducir conforme a los trminos de cualquier licencia aplicable u otra restriccin legal.
N

Contrato de licencia de usuario final y avisos legales a terceros


El contrato de licencia de usuario final (EULA) y avisos legales a terceros se puede encontrar en las siguientes localidades:
Los avisos se localizan en los directorios <National Instruments>\_Legal Information y <National
Instruments>.
Contrato de licencia de usuario final se localiza en el directorio <National Instruments>\Shared\MDF\
Legal\License.
Revise <National Instruments>\_Legal Information.txt para ms informacin legal sobre los instaladores
desarrollados con productos de NI.
Marcas comerciales
CVI, LabVIEW, National Instruments, NI, ni.com, el logotipo corporativo de National Instruments, y el logotipo del aguila son
marcas propiedad de National Instruments Corporation. Por favor, consulte Trademark Information en la pgina ni.com/
trademarks para informacin sobre otras marcas de National Instruments.
The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft
Corporation in the United States and other countries. Otros nombres de productos y de empresas mencionados aqu son marcas o
nombres comerciales de sus respectivas empresas.
Los miembros del National Instruments Alliance Partner Program son entidades comerciales independientes de National
Instruments y no tienen relacin de agencia, asociacin ni empresa conjunta con National Instruments.
Patentes
Para obtener informacin sobre las patentes que protegen los productos o la tecnologa de National Instruments, consulte el
apartado: HelpPatents en su software, el archivo patents.txt en el soporte del mismo, o el Aviso sobre las Patentes de
National Instruments (National Instruments Patent Notice) en ni.com/patents.
tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

Informacin del producto y soporte tcnico mundial


ni.com
Oficinas internacionales
Visite ni.com/niglobal para acceder a las pginas web de las oficinas internacionales, las cuales incluyen informacin
actualizada de contacto, telfonos de soporte tcnico, direcciones de email y eventos actuales.
Oficinas centrales de National Instruments Corporation
11500 North Mopac Expressway Austin, Texas 78759-3504 USA Tel: 512 683 0100
Para obtener informacin adicional de soporte, consulte el apndice Informacin Adicional y Recursos. Para realizar comentarios a
National Instruments sobre la documentacin, consulte la pgina web de National Instruments Web ni.com/info e introduzca
el cdigo de informacin feedback.
Contenido

Gua del estudiante


A. Certificacin de NI................................................................................................v
B. Descripcin del curso............................................................................................v
C. Lo que necesita para empezar ...............................................................................vi
D. Instalacin del software del curso.........................................................................vii
E. Objetivos del curso ...............................................................................................vii
F. Convenciones del curso ........................................................................................viii

Leccin 1
Ms all del flujo de datos
A. Comunicacin asncrona.......................................................................................1-2
B. Colas .....................................................................................................................1-2

tio ts
C. Programacin orientada a eventos ........................................................................1-5

bu en
Leccin 2

n
tri m
Implementando patrones de diseo
is tru
A. Patrones de diseo ................................................................................................2-2
B. Patrones de diseo simple.....................................................................................2-2
C. Patrones de diseo de bucles mltiples.................................................................2-8
rd s
fo l In

D. Gestores de errores................................................................................................2-15
E. Generando cdigos de error y mensajes ...............................................................2-18
F. Temporizar un patrn de diseo ...........................................................................2-20
ot a

G. Patrn de diseo variable global funcional..........................................................2-25


N ion

Leccin 3
at

Control de la interfaz de usuario


A. Arquitectura del VI Server....................................................................................3-2
N

B. Nodos de Propiedad ..............................................................................................3-3


C. Nodos de Invocacin ............................................................................................3-4
D. Referencias de control ..........................................................................................3-5

Leccin 4
Tcnicas de E/S de fichero
A. Comparando formatos de archivo.........................................................................4-2
B. Crear rutas de archivos y carpetas ........................................................................4-4
C. Lectura y escritura de archivos binarios ...............................................................4-6
D. Trabajar con archivos de texto y encabezados multicanal....................................4-12
E. Acceso de archivos TDMS en LabVIEW y Excel................................................4-17

National Instruments | iii


Gua del estudiante

Gracias por comprar el paquete del curso LabVIEW Core 2. Despus de completar el curso, podr
empezar a desarrollar una aplicacin. El manual del curso y el software adjunto se utilizan en el
curso prctico de dos das LabVIEW Core 2.

Puede aplicar la adquisicin completa de este paquete de curso a la cuota de registro


correspondiente, si se inscribe antes de 90 das desde la compra del paquete. Visite
ni.com/training para consultar en lnea la programacin, el contenido, los centros de
formacin y la inscripcin a la clase del curso.

A. Certificacin de NI
El curso LabVIEW Core 2 forma parte de una serie de cursos diseados para dominar LabVIEW y

tio ts
ayudarle a prepararse para el examen de Desarrollador Asociado Certificado de LabVIEW de NI.
La siguiente ilustracin muestra los cursos que forman parte de la serie de formacin de LabVIEW.

bu en
Consulte ni.com/training para obtener informacin adicional acerca de la certificacin de NI.

n
tri m
New User Experienced User Advanced User
is tru
Courses

LabVIEW Core 1* LabVIEW Core 3* Managing Software


Engineering in LabVIEW
rd s

LabVIEW Core 2*
LabVIEW Connectivity
fo l In

Advanced Architectures
in LabVIEW
Object-Oriented Design
and Programming
in LabVIEW
ot a
N ion

LabVIEW Performance
Certifications

Certified LabVIEW Certified LabVIEW Certified LabVIEW


Associate Developer Exam Developer Exam Architect Exam
at
N

Other Courses

LabVIEW Instrument Control LabVIEW Real-Time 1 LabVIEW Real-Time 2


LabVIEW FPGA LabVIEW DAQ and Signal Conditioning Modular Instruments Series

*Core courses are strongly recommended to realize maximum productivity gains when using LabVIEW.

B. Descripcin del curso


El curso LabVIEW Core 2 le ensea conceptos, tcnicas, caractersticas, VIs y funciones de
programacin de LabVIEW que puede utilizar para crear aplicaciones de prueba y medicin,
adquisicin de datos, control de instrumentos, registro de datos, anlisis de mediciones y
generacin de informes. Este manual del curso supone que est familiarizado con Windows, que
tiene experiencia en escribir algoritmos en forma de diagramas de flujo o diagramas de bloques y
que ha realizado el curso LabVIEW Core 1 o tiene una experiencia equivalente. Los manuales de
ejercicios y del curso estn divididos en lecciones, organizadas de este modo.

National Instruments | v
Gua del estudiante

En el manual del curso, cada leccin consta de lo siguiente:


Una introduccin que describe el objetivo de la leccin y lo que aprender
Una descripcin de los temas de la leccin
Un cuestionario de resumen que prueba conceptos y conocimientos importantes desarrollados
en la leccin

En el manual de ejercicios, cada leccin consta de lo siguiente:


Un conjunto de ejercicios para reforzar esos temas
Algunas lecciones incluyen secciones de ejercicios opcionales y de retos o un conjunto de
ejercicios adicionales para realizar si el tiempo lo permite.

Nota Para ver actualizaciones y correcciones del manual de ejercicios y del curso,
consulte ni.com/info y escriba el Cdigo de Informacin core2.

tio ts
Varios ejercicios utilizan un dispositivo multifuncin de adquisicin de datos (DAQ) conectado a

bu en
un Accesorio de Seales DAQ o BNC-2120 que contiene un sensor de temperatura, un generador

n
de funciones y LEDs.
tri m
Aunque no disponga de este hardware, puede realizar los ejercicios. Se ofrecen otras instrucciones
is tru
para realizar los ejercicios sin hardware. Tambin puede sustituir otro hardware por los
mencionados anteriormente. Por ejemplo, puede utilizar otro dispositivo DAQ de National
rd s

Instruments conectado a una fuente de seales, como un generador de funciones.


fo l In

C. Lo que necesita para empezar


ot a
N ion

Antes de usar este manual del curso, debe tener todos estos elementos:

Ordenador ejecutando Windows 7/Vista/XP


at

Dispositivo DAQ multifuncin configurado como Dev1 utilizando Measurement &


N

Automation Explorer (MAX)

Accesorio de seales DAQ o BNC-2120, conectores y cable

LabVIEW Professional Development System 2012 o posterior

DAQmx 9.5.5 o posterior

CD del curso LabVIEW Core 2, desde donde instala las siguientes carpetas:

Directorio Descripcin
Exercises Contiene los VIs utilizados en el curso
Solutions Contiene los ejercicios del curso corregidos

vi | ni.com
Manual de Curso LabVIEW Core 2

D. Instalacin del software del curso


Complete estos pasos para instalar el software del curso.
1. Inserte el CD del curso en el ordenador. Aparecern los cuadros de dilogo de
LabVIEW Core 2 Course Setup
2. Haga clic en Install the course materials.
3. Siga las instrucciones en la pantalla para completar la instalacin y configuracin.

Los archivos de ejercicios se encuentran en la carpeta <Exercises>\LabVIEW Core 2\ .

Nota Los nombres de carpetas entre corchetes angulares, como <Exercises>, hacen
referencia a carpetas del directorio raz de su ordenador.

tio ts
E. Objetivos del curso

bu en
Este curso le prepara para hacer lo siguiente:

n
Aplicar patrones de diseo comunes que utilicen notificadores, colas y eventos
tri m
Usar la programacin de eventos de forma eficaz
is tru
Controlar programticamente objetos de la interfaz de usuario
rd s

Evaluar formatos de E/S de ficheros binarios y utilizarlos en aplicaciones


fo l In

Modificar cdigo existente para mejorar la usabilidad


Preparar, crear y desplegar aplicaciones independientes
ot a
N ion

Este curso no describe nada de lo siguiente:


Mtodos de programacin de LabVIEW tratados en el curso LabVIEW Core 1.
at

Cada VI, funcin u objeto integrado; consulte la Ayuda de LabVIEW para obtener informacin
adicional acerca de las funciones de LabVIEW no descritas en este curso.
N

Desarrollar una aplicacin completa para cualquier estudiante de la clase; consulte el


NI Example Finder seleccionando HelpFind Examples, para ver ejemplos de VIs que puede
utilizar e incorporar en los VIs que cree

National Instruments | vii


Gua del estudiante

F. Convenciones del curso


Los siguientes convenios aparecen en este manual del curso:

El smbolo le gua por los elementos de men anidados y las opciones de


cuadros de dilogo a una accin final. La secuencia Tools
InstrumentationFind Instrument Drivers le guia a desplegar men
Tools , seleccionar Instrumentation , y finalmente seleccionar la opcin
Find Instrument Drivers.

Este icono indica un consejo, que le alerta de recomendaciones.

Este icono indica una nota, que le alerta de informacin importante.

Este icono indica una precaucin, para que tome precauciones y evite

tio ts
lesiones, prdida de datos o una cada del sistema.

bu en
negrita El texto en negrita indica que debe seleccionar el software o hacer clic en l,
como elementos de men y opciones del cuadro de dilogo. El texto en

n
tri m
negrita denota tambin las secciones de los cuadros de dilogo y etiquetas
de hardware.
is tru
cursiva El texto en cursiva indica variables, nfasis, una referencia cruzada o una
rd s

introduccin a un concepto clave. El texto en cursiva tambin indica texto


fo l In

que es un parmetro de sustitucin para una palabra o un valor que debe


proporcionar.
ot a

El texto con esta fuente indica texto o caracteres que debe escribir con el
N ion

monospace
teclado, secciones de cdigo, ejemplos de programacin y ejemplos de
sintaxis. Esta fuente tambin se utiliza para los nombres propios de unidades
at

de disco, rutas, directorios, programas, subprogramas, subrutinas, nombres


de dispositivos, funciones, operaciones, variables, nombres de archivos y
N

extensiones.

monospace bold El texto en negrita con esta fuente indica los mensajes y las respuestas que
el ordenador imprime automticamente en la pantalla. Esta fuente tambin
enfatiza lneas de cdigo distintas de los otros ejemplos.

Platform El texto con esta fuente indica una plataforma concreta y que el texto que le
sigue se aplica slo a esa plataforma.

viii | ni.com
Ms all del flujo de datos
1
Como usted aprendi en LabVIEW Core 1, LabVIEW es un lenguaje donde el flujo de datos
determina el orden de ejecucin de los elementos de un diagrama de bloques. Un nodo del
diagrama de bloques se ejecuta cuando se reciben todas las entradas requeridas. Cuando se ejecuta
un nodo, produce datos de salida y pasa los datos al siguiente nodo de la ruta del flujo de datos. El
movimiento de los datos a travs de los cables y nodos determina el orden de ejecucin de los VIs
y las funciones del diagrama de bloques. Este tipo de comunicacin entre nodos se denomina
comunicacin sncrona.

Temas

tio ts
bu en
A. Comunicacin asncrona

n
B. Colas
tri m
C. Programacin orientada a eventos
is tru
rd s
fo l In
ot a
N ion
at
N

National Instruments | 1-1


Leccin 1 Ms all del flujo de datos

A. Comunicacin asncrona
Aunque LabVIEW es un lenguaje de flujo de datos que utiliza cables para transferir datos entre
funciones, hay situaciones en las que la comunicacin asncrona, o sin cables, es deseable. En esta
leccin aprenders dos tcnicas importantes para la comunicacin asncronacolas para
comunicacin entre bucles paralelos y eventos para comunicacin entre la interfaz de usuario y el
diagrama de bloques.

B. Colas
Utilice colas para comunicar datos entre los bucles paralelos en LabVIEW. Una cola puede
contener datos de cualquier tipo y adems almacenar mltiples piezas de datos. De forma
predeterminada las colas funcionan con la estrategia primero en entrar, primero en salir, en ingls
First In First Out (FIFO). Por lo tanto, el primer dato de una cola es el primero en salir de ella. Use
una cola cuando desee procesar todos los datos que contenga.

tio ts
bu en
Las variables resultan tiles en LabVIEW para pasar datos entre procesos paralelos. Sin embargo,
cuando se usan variables a menudo es difcil sincronizar la transferencia de datos, que puede causar

n
tri m
leer datos duplicados o perder datos. Adicionalmente, se debe tener cuidado para evitar las
condiciones de carrera. Esta leccin presenta las colas como mtodos alternativos para pasar datos
is tru
entre procesos paralelos. Los colas tienen ventajas respecto al uso de variables por la posibilidad
de sincronizar la transferencia de datos.
rd s
fo l In

Operaciones de cola
Utilice las funciones de operacin de cola para crear y utilizar las colas en la comunicacin de datos
ot a

entre las distintas secciones del VI y otros VIs.


N ion

Tabla 1-1 describe las funciones de operacin de cola a utilizar en este curso.
at

Tabla 1-1. Funciones de operacin de cola


N

Funciones Descripcin
Dequeue Element Elimina un elemento de la parte frontal de una cola y retorna
este elemento.

Enqueue Element Aade un elemento en la parte posterior de la cola.

Enqueue Element at Opposite Aade un elemento en la parte frontal de la cola.


End

1-2 | ni.com
Manual de Curso LabVIEW Core 2

Tabla 1-1. Funciones de operacin de cola (Continuacin)

Funciones Descripcin
Get Queue Status Retorna informacin sobre el estado actual de una cola, tales
como el nmero de elementos actualmente en la cola.

Obtain Queue Retorna la referencia a una cola.

Release Queue Libera la referencia de una cola.

tio ts
bu en
Consulte el tema Queue Operations Functions en la Ayuda de LabVIEW para obtener una lista
completa y una descripcin de las operaciones de cola.

n
tri m
Cuando se usa el patrn de diseo productor/consumidor, las colas pasan datos y sincronizan los
is tru
bucles como se muestra en la figura 1-1.
rd s

Figura 1-1. Patrn de diseo (datos) del productor/consumidor usando colas


fo l In
ot a
N ion
at
N

National Instruments | 1-3


Leccin 1 Ms all del flujo de datos

La cola se crea antes de que los bucles empiecen a usar la funcin Obtain Queue. El bucle productor
usa la funcin Enqueue Element para aadir datos a la cola. El bucle consumidor elimina los datos
de la cola utilizando la funcin Dequeue Element. El bucle consumidor no se ejecuta hasta que
haya datos en la cola. Una vez que el VI ha terminado de usar las colas, la funcin Release Queue
las libera. Cuando se libera la cola, la funcin Dequeue Element genera un error, deteniendo
efectivamente el bucle consumidor. As no hay por qu utilizar una variable para detener los bucles.

Estas son las ventajas de usar colas en el patrn de diseo productor / consumidor:
Ambos bucles se sincronizan con el bucle productor. El bucle consumidor slo se ejecuta
cuando haya datos en la cola.
Puede utilizar colas para crear datos en cola disponibles globalmente, eliminando la posibilidad
de prdida de datos en la cola cuando se aadan datos nuevos a ella.
El uso de colas crea cdigo eficaz. No necesita sondear para determinar cundo habr datos
disponibles desde el bucle productor.

tio ts
bu en
Las colas tambin son tiles para albergar solicitudes de estado en una mquina de estados. En la
implementacin de una mquina de estados que ha aprendido, si se solicitan dos estados

n
simultneamente, puede perder uno de ellos. Una cola almacena la segunda solicitud de estado y
tri m
la ejecuta cuando ha terminado la primera.
is tru
Caso de Estudio: Proyecto de Estacin Meteorolgica
rd s
fo l In

El proyecto de la estacin meteorolgica adquiere datos de temperatura y de velocidad del viento


y los analiza para determinar si la situacin requiere una alarma. Si la temperatura es demasiado
alta o baja, alerta al usuario de un peligro de golpe de calor o congelacin. Tambin controla la
ot a

velocidad del viento para generar una alarma de fuerte viento en su caso.
N ion

El diagrama de bloques consta de dos bucles paralelos, que se sincronizan utilizando colas. Un
bucle adquiere datos para la temperatura y la velocidad del viento y el otro analiza los datos. Los
at

bucles del diagrama funcional usan el patrn de diseo productor / consumidor y pasan los datos a
N

travs de la cola. Las colas ayudan a procesar cada lectura adquirida con el DAQ Assistant.

El cdigo para adquirir la temperatura y la velocidad del viento se sita en el bucle productor. El
cdigo que contiene la mquina de estados para analizar las condiciones de temperatura-tiempo se
encuentra en el caso sin error del bucle consumidor. El cdigo que utiliza una cola es ms legible
y eficiente que el que usa slo arquitectura de la mquina de estados. La funcin Obtain Queue crea
la referencia de la cola. El bucle productor usa la funcin Enqueue Element para aadir datos
obtenidos del DAQ Assistant a la cola. El bucle consumidor usa la funcin Dequeue Element para
obtener los datos de la cola y suministrarlos a la mquina de estados para su anlisis. La funcin
Release Queue marca el final de la cola destruyndola. El uso de colas tambin elimina la
necesidad de una variable compartida para detener los bucles, porque la funcin Dequeue Element
detiene el bucle consumidor cuando se libera una cola.

1-4 | ni.com
Manual de Curso LabVIEW Core 2

La figura 1-2 muestra el diagrama de bloques que consta de un bucle productor y consumidor. Las
funciones de cola permiten la transferencia de datos y la sincronizacin entre los bucles.
Figura 1-2. Transferencia de datos y sincronizacin de bucles paralelos usando colas

tio ts
bu en
n
tri m
is tru
C. Programacin orientada a eventos
rd s
fo l In

Programacin orientada a eventos es un mtodo de programacin, donde el programa espera que


se produzca un acontecimiento antes de ejecutar una o varias funciones. Las caractersticas de
programacin orientada a eventos amplan el entorno de flujo de datos de LabVIEW, para permitir
ot a

que el usuario interacte directamente con el panel frontal y permitir otra actividad asncrona que
N ion

influya ms en la ejecucin del diagrama de bloques.


at

Eventos
N

Qu son los eventos?


Un evento es una notificacin asncrona de que algo ha ocurrido. Los eventos pueden provenir de
la interfaz de usuario, E/S externa u otras partes del programa. Los eventos de la interfaz de usuario
son clics del ratn, pulsaciones de teclas, etc. Los eventos de E/S externas son temporizadores o
triggers de hardware que sealan cundo se completa la adquisicin de datos o cundo ocurre una
condicin de error. Otros tipos de eventos pueden generarse programticamente y utilizarse para
comunicarse con distintas partes del programa. LabVIEW admite eventos generados por la interfaz
de usuario o programticamente. LabVIEW tambin admite eventos generados por ActiveX y
.NET, que son eventos de E/S externas.

En un programa orientado a eventos, los eventos que ocurren en el sistema influyen directamente
en el flujo de ejecucin. Por el contrario, un programa de procedimiento se ejecuta en un orden
predeterminado y secuencial. Los programas orientados a eventos suelen incluir un bucle que
espera que ocurra un evento, ejecuta el cdigo para responder al evento y se vuelve a iterar para
esperar al siguiente evento. El modo en que el programa responde a cada evento depende del

National Instruments | 1-5


Leccin 1 Ms all del flujo de datos

cdigo escrito para ese evento. El orden en que se ejecuta un programa orientado a eventos depende
de qu eventos ocurran y en qu orden ocurran. Algunas secciones del programa podran ejecutarse
con frecuencia porque los eventos que controlan ocurren frecuentemente. Quiz no se ejecuten
otras secciones del programa porque los eventos nunca ocurren.

Sondeo vs estructura evento


Use eventos de interfaz de usuario en LabVIEW para sincronizar acciones del usuario en el panel
frontal con la ejecucin del diagrama de bloques. Los eventos permiten ejecutar un caso de control
de eventos especfico cada vez que un usuario realice una accin concreta. Sin los eventos, el
diagrama de bloques debe sondear el estado de objetos del panel frontal en un bucle, comprobando
si ha ocurrido algn cambio. Sondear el panel frontal requiere una cantidad de tiempo significativa
de la CPU y quiz no detecte cambios si ocurren con demasiada rapidez.

Al usar eventos para responder a acciones especficas del usuario, no necesita sondear el panel

tio ts
frontal para determinar qu acciones realiz el usuario. LabVIEW notifica activamente al diagrama
de bloques cada vez que ocurre una interaccin que especific. El uso de eventos reduce los

bu en
requisitos de CPU del programa, simplifica el cdigo del diagrama de bloques y garantiza que el
diagrama de bloques pueda responder a todas las interacciones que realice el usuario.

n
tri m
Use eventos generados programticamente para comunicarse entre varias partes del programa que
is tru
no tengan dependencia del flujo de datos. Los eventos generados programticamente comparten
muchas ventajas con los eventos de la interfaz de usuario y pueden compartir el mismo cdigo de
rd s

control de eventos, lo que facilita la implementacin de arquitecturas avanzadas, como las


fo l In

mquinas de estados con colas que usan eventos.


ot a

Componentes de la estructura Event


N ion

Use la estructura Event, mostrada a continuacin, para controlar eventos en un VI.


at
N

La estructura Event funciona como una estructura Case con una funcin Wait on Notification
integrada. La estructura Event puede tener varios casos, cada uno de los cuales es una rutina de
control de eventos distinta. Puede configurar cada caso para controlar uno o ms eventos, pero slo
uno de estos eventos puede ocurrir a la vez. Cuando se ejecuta la estructura Event, espera hasta que
ocurra uno de los eventos configurados y despus ejecuta el caso correspondiente a ese evento. La
estructura Event completa su ejecucin tras controlar exactamente un evento. No hace
implcitamente un bucle para controlar varios eventos. Como una funcin Wait on Notification, la
estructura Event puede superar su lmite de tiempo mientras espera una notificacin de evento.
Cuando esto ocurre, se ejecuta un caso Timeout especfico.

1-6 | ni.com
Manual de Curso LabVIEW Core 2

La etiqueta del selector de evento en la parte superior de la estructura Event indica que eventos
hacen que el caso que se muestra actualmente sea ejecutado.

Vea otros casos de eventos haciendo clic en la flecha abajo junto al nombre del caso y
seleccionando otro caso del men contextual.

El terminal Timeout de la esquina superior izquierda de la estructura Event especifica el nmero


de milisegundos que hay que esperar antes de que un evento supere el tiempo lmite.

El valor predeterminado es -1, que especifica esperar indefinidamente hasta que ocurra un evento.
Si cablea un valor al terminal Timeout, debe proporcionar un caso Timeout.

tio ts
El Event Data Node acta de igual modo que la funcin Unbundle By Name.

bu en
n
tri m
Este nodo se acopla al borde interior izquierdo de cada caso de evento. El nodo identifica los datos
is tru
que proporciona LabVIEW cuando ocurre un evento. Puede cambiar el tamao de este nodo
verticalmente para aadir ms elementos de datos y puede configurar stos en el nodo para acceder
rd s

a cualquier elemento de datos de evento. El nodo proporciona varios datos en cada caso de la
fo l In

estructura Event en funcin de qu eventos configure para que controle ese caso. Si configura que
un solo caso controle varios eventos, el Event Data Node proporciona slo los datos de evento que
son comunes para todos los eventos configurados para ese caso.
ot a
N ion

El Event Filter Node es similar al Event Data Node.


at
N

Este nodo se acopla al borde interior derecho de los casos de eventos de filtrado. El nodo identifica
el subconjunto de datos disponibles en el Event Data Node que puede modificar el caso de evento.
El nodo muestra varios datos en funcin de qu eventos configure para que controle ese caso. De
forma predeterminada, estos elementos se encuentran en los elementos de datos correspondientes
del Event Data Node. Si no cablea un valor a un dato de un Event Filter Node, ese dato permanecer
inalterado.

Consulte la seccin Eventos de notificacin y de filtrado de esta leccin para obtener informacin
adicional acerca de los eventos de filtrado.

Puede acceder a los terminales de eventos dinmicos haciendo clic con el botn derecho en la
estructura Event y seleccionando Show Dynamic Event Terminals en el men contextual.

National Instruments | 1-7


Leccin 1 Ms all del flujo de datos

Estos terminales slo se usan para el registro de eventos dinmicos.

Consulte el tema Using Events in LabVIEW de la Ayuda de LabVIEW para obtener informacin
sobre el uso de estas terminales.

Nota Al igual que una estructura Case, la estructura Event admite tneles. Sin embargo,
de forma predeterminada no tiene que cablear tneles de salida de la estructura Event en
cada caso. Todos los tneles sin cablear usan el valor predeterminado para el tipo de dato
de tnel. Haga clic con el botn derecho en un tnel y deseleccione Use Default If
Unwired en el men contextual para volver al comportamiento de la estructura Case
predeterminada en el que debe cablear los tneles en todos los casos. Tambin puede
configurar los tneles para cablear los tneles de entrada y salida automticamente en los
casos sin cablear.

Consulte la Ayuda de LabVIEW para obtener informacin de los valores predeterminados para cada

tio ts
tipo de datos.

bu en
n
Uso de eventos en LabVIEW
tri m
LabVIEW puede generar numerosos eventos distintos. Para evitar generar eventos indeseados, use
is tru
el registro de eventos para especificar qu eventos desea que le notifique LabVIEW. LabVIEW
admite dos modelos de registro de eventos: esttico y dinmico.
rd s
fo l In

El registro esttico permite especificar qu eventos del panel frontal de un VI desea controlar en
cada caso de la estructura Event en el diagrama de bloques de ese VI. LabVIEW registra estos
eventos automticamente cuando se ejecuta el VI, por lo que la estructura Event empieza a esperar
ot a

eventos en cuanto se ejecuta el VI. Cada evento se asocia con un control del panel frontal del VI,
N ion

la ventana del panel frontal del VI en conjunto o la aplicacin de LabVIEW. No puede configurar
estticamente una estructura Event para controlar eventos para el panel frontal de otro VI. La
at

configuracin es esttica porque no puede cambiar en el tiempo de ejecucin qu eventos controla


la estructura Event.
N

El registro de eventos dinmico evita las limitaciones del registro esttico integrando el registro de
eventos con el VI Server, que permite usar referencias de aplicacin, VI y control para especificar
en el tiempo de ejecucin los objetos para los que desea generar eventos. El registro dinmico
ofrece ms flexibilidad en el control de qu eventos genera LabVIEW y cundo los genera. Sin
embargo, el registro dinmico es ms complejo que el esttico porque requiere usar referencias de
VI Server con funciones del diagrama de bloques para registrar y desregistrar eventos en lugar de
controlar el registro automticamente usando la informacin que configur en la estructura Event.

Nota En general, LabVIEW genera eventos de interfaz de usuario slo como resultado
de la interaccin directa del usuario con el panel frontal activo. LabVIEW no genera
eventos, como Value Change, cuando usa variables compartidas, variables globales,
variables locales, etc. Sin embargo, puede usar la propiedad Value (Signaling) para
generar un evento Value Change programticamente. En muchos casos, se pueden usar
eventos generados programticamente en lugar de colas.

1-8 | ni.com
Manual de Curso LabVIEW Core 2

Los datos de evento que proporciona un evento de LabVIEW siempre incluyen una marca de hora,
una enumeracin que indica qu evento ocurri, as como una referencia de VI Server al objeto que
activ el evento. La marca de hora es un contador de milisegundos que puede usar para calcular el
tiempo transcurrido entre dos eventos o para determinar el orden en que sucedieron. La referencia
al objeto que gener el evento se escribe estrictamente en la clase de VI Server de ese objeto. Los
eventos se agrupan en clases segn el tipo de objeto que genera el evento, como una aplicacin, VI
o control. Si un solo caso controla varios eventos para objetos de distintos tipos de VI Server, el
tipo de referencia es la clase primaria comn de todos los objetos. Por ejemplo, si configura un solo
caso en la estructura Event para controlar eventos en un control numrico y un control de rampa
de color, el tipo de referencia de control del origen del evento es numrico porque los controles
numrico y rampa de color estn en la clase Numeric. Si se registra para el mismo evento en la
clase VI y Control, LabVIEW genera el evento VI primero.

Nota Los clusters son los nicos objetos contenedores para los que puede generar
eventos. LabVIEW genera eventos Control para clusters, antes de generar eventos para

tio ts
los objetos que contienen, salvo en el caso del evento Value Change. El evento Value

bu en
Change genera el evento en un elemento del cluster, despus en el cluster mismo. Si el
caso de la estructura Event de un evento VI o de un evento Control en un objeto de un

n
tri m
contenedor desecha el evento, LabVIEW no generar ms eventos.
is tru
Cada estructura Event y funcin Register For Events del diagrama de bloques posee una cola que
usa LabVIEW para almacenar eventos. Cuando ocurre un evento, LabVIEW coloca una copia suya
rd s

en cada cola registrada para l. Una estructura Event controla todos los eventos de su cola y los
fo l In

eventos de la colas de cualquier funcin Register For Events que cable a los terminales de eventos
dinmicos de la estructura Event. LabVIEW usa estas colas para que los eventos se entreguen
ot a

correctamente a cada estructura Event registrada en el orden en que ocurren los eventos.
N ion

De forma predeterminada, cuando un evento entra en una cola, LabVIEW bloquea el panel frontal
que contiene el objeto que gener ese evento. LabVIEW mantiene bloqueado el panel frontal hasta
at

que todas las estructuras Event terminen de procesar el evento. Mientras est bloqueado el panel
frontal, LabVIEW no procesa la actividad del panel frontal sino que coloca las interacciones en un
N

bfer y las controla cuando se desbloquea el panel frontal.

Por ejemplo, un usuario podra prever que un caso de evento lance una aplicacin que requiera
introducir texto. Como el usuario ya sabe que hay que escribir texto, podra empezar a escribir
antes de que la aplicacin aparezca en el panel frontal. Si est habilitada la opcin Lock front
panel (defer processing of user action) until this event case completes, una vez que se lance la
aplicacin y aparezca en el panel frontal, procesar las pulsaciones de teclas en el orden en que
ocurrieron. Si est inhabilitada la opcin Lock front panel (defer processing of user action) until
this event case completes, las pulsaciones de teclas podran procesarse en otra parte del panel
frontal, ya que LabVIEW no pone en cola su ejecucin para que dependa de que termine el caso
de evento.

El bloqueo del panel frontal no afecta a ciertas acciones, como mover la ventana, interactuar con
las barras de desplazamiento y hacer clic en el botn Abort.

National Instruments | 1-9


Leccin 1 Ms all del flujo de datos

LabVIEW puede generar eventos aunque ninguna estructura Event est esperando para
controlarlos. Como la estructura Event controla slo un evento cada vez que se ejecuta, coloque la
estructura Event en un bucle While para que sta pueda controlar todos los eventos que ocurran.

Precaucin Si no se ejecuta una estructura Event para controlar un evento y se habilita


el bloqueo del panel frontal, la interfaz de usuario del VI no responder. Si esto ocurre,
haga clic en el botn Abort para detener el VI. Puede desactivar el bloqueo del panel
frontal haciendo clic con el botn derecho en la estructura Event y desmarcando la casilla
de verificacin Lock front panel (defer processing of user action) until this event case
completes en el cuadro de dilogo Edit Events. No puede desactivar el bloqueo del
panel frontal para eventos de filtrado.

Registro de eventos estticos


El registro de eventos estticos slo se permite para eventos de la interfaz de usuario. Use el cuadro

tio ts
de dilogo Edit Events para configurar una estructura Event que controle un evento registrado

bu en
estticamente. Seleccione el origen del evento, que puede ser la aplicacin, el VI o un solo control.
Seleccione un evento que pueda generar el origen del evento, como Panel Resize, Value Change,

n
tri m
etc. Modifique el caso para controlar los datos de evento conforme a los requisitos de la aplicacin.
is tru
LabVIEW registra estticamente eventos de forma automtica y transparente, cuando ejecuta un
VI que contiene una estructura Event. LabVIEW genera eventos para un VI slo mientras se est
rd s

ejecutando el VI o cuando otro VI en ejecucin llama al VI como un subVI.


fo l In

Cuando ejecuta un VI, LabVIEW configura ese VI de alto nivel y la jerarqua de subVIs a los que
llama el VI en su diagrama de bloques para un estado de ejecucin llamado reservado. No puede
ot a

modificar un VI ni hacer clic en el botn Run mientras el VI est en estado reservado, porque se
N ion

puede llamar al VI como un subVI en cualquier momento mientras su VI primario se ejecuta.


Cuando LabVIEW configura un VI al estado reservado, automticamente registra los eventos que
at

configur estticamente en todas las estructuras Event del diagrama de bloques de ese VI. Cuando
el VI de alto nivel termina la ejecucin, LabVIEW lo configura (y su jerarqua de subVI) al estado
N

de ejecucin inactivo y automticamente desregistra los eventos.

Configuracin de eventos
Antes de configurar eventos para que los controle la estructura Event, consulte el tema Caveats and
Recommendations when Using Events in LabVIEW de la Ayuda de LabVIEW.

Siga estos pasos para configurar un caso de estructura Event para controlar un evento.
1. (Opcional) Si desea configurar la estructura Event para que controle el evento de un usuario,
un control booleano de un control de botones de radio o un evento de interfaz de usuario
que se genera basndose en una referencia a una aplicacin, VI o control, primero debe
registrar dinmicamente ese evento. Consulte el tema Dynamically Registering Events de la
Ayuda de LabVIEW para obtener informacin adicional acerca de usar eventos dinmicos.
2. Haga clic con el botn derecho en el borde de la estructura Event y seleccione Edit Events
Handled by This Case en el men contextual para ver el cuadro de dilogo Edit Events y

1-10 | ni.com
Manual de Curso LabVIEW Core 2

modificar el caso actual. Tambin puede seleccionar Add Event Case en el men contextual
para crear un nuevo caso.
3. Especifique un origen de evento en el panel Event Sources.
4. Seleccione el evento que desee configurar para el origen de evento, como Key Down, Timeout
o Value Change en la lista Events. Cuando seleccione un origen de evento dinmico en la lista
Event Sources, la lista Events mostrar ese evento. Es el mismo evento que seleccion cuando
registr el evento. Si ha registrado eventos dinmicamente y ha cableado event reg refnum
out en el terminal de eventos dinmicos, los orgenes aparecern en la seccin Dynamic.
5. Si desea aadir eventos adicionales para que los gestione el caso actual, haga clic en el botn +
y repita los pasos 3 y 4 para especificar cada evento adicional. La seccin Event Specifiers de
la parte superior del cuadro de dilogo muestra todos los eventos que controlar el caso.
Cuando hace clic en un elemento de esta lista, la seccin Event Sources se actualiza para
resaltar el origen de evento que seleccion. Puede repetir los pasos 3 y 4 para redefinir cada
evento o hacer clic en el botn X para eliminar el evento seleccionado.

tio ts
6. Haga clic en el botn OK para guardar la configuracin y cerrar el cuadro de dilogo. Los casos

bu en
de eventos que configur aparecern como opciones de seleccin en la etiqueta del selector de
eventos en la parte superior de la estructura Event y el nodo Event Data mostrar los datos

n
tri m
comunes a todos los eventos controlados en ese caso.
is tru
7. (Opcional) Puede usar un evento Timeout para configurar una estructura Event para que espere
un tiempo determinado a que ocurra un evento. Cablee un valor al terminal Timeout en la parte
rd s

superior izquierda de la estructura Event para especificar el nmero de milisegundos que debe
fo l In

esperar la estructura Event a que ocurra un evento antes de generar un evento Timeout. El valor
predeterminado del terminal Timeout es -1, que especifica esperar indefinidamente hasta que
ocurra un evento.
ot a

8. Repita los pasos 1 al 6 para cada caso de evento que desee configurar.
N ion

Eventos de notificacin y de filtrado


at

Los eventos de notificacin indican que ya ha ocurrido una accin del usuario, como cambiar el
N

valor de un control. Use eventos de notificacin para responder a un evento cuando haya ocurrido
y LabVIEW lo haya procesado. Puede configurar cualquier nmero de estructuras Event para
responder al mismo evento de notificacin en un objeto concreto. Cuando ocurre el evento,
LabVIEW enva una copia de sta a cada estructura Event configurada para controlar el evento en
paralelo.

Los eventos de filtrado le informan de que el usuario ha realizado una accin antes de que
LabVIEW la procese, lo que permite personalizar el modo en que el programa responde a
interacciones con la interfaz de usuario. Use eventos de filtrado para participar en el control del
evento, posiblemente invalidando el comportamiento predeterminado del evento. En un caso de
estructura Event de un evento de filtrado, puede validar o cambiar los datos del evento antes de que
LabVIEW termine de procesarlo, o puede desechar el evento totalmente para evitar que el cambio
afecte al VI. Por ejemplo, puede configurar una estructura Event para desechar el evento Panel
Close?, que evitar que el usuario cierre interactivamente el panel frontal del VI.

National Instruments | 1-11


Leccin 1 Ms all del flujo de datos

Los eventos de filtrado tienen nombres que terminan con un signo de interrogacin, como Panel
Close?, para ayudar a distinguirlos de eventos de notificacin. La mayora de los eventos de
filtrado tienen un evento de notificacin asociado con el mismo nombre, pero sin el interrogante,
que genera LabVIEW tras el evento de filtrado si ningn caso de evento desech el evento.

Por ejemplo, puede usar los eventos de filtrado Mouse Down? y Shortcut Menu Activation? para
mostrar un men contextual cuando haga clic con el botn izquierdo en un control. Para realizar
esta accin, modifique los datos que devuelve el campo de datos de evento Button del evento de
filtrado Mouse Down?. El valor del botn izquierdo del ratn es 1 y el valor del botn derecho del
ratn es 2. Para ver el men contextual cuando hace clic con el botn izquierdo en un control,
cambie el campo de datos de evento Button a 2, para que LabVIEW considere el clic con el botn
izquierdo igual que con el derecho.

Al igual que con los eventos de notificacin, puede configurar cualquier nmero de estructuras
Event para responder al mismo evento de filtrado en un objeto concreto. Sin embargo, LabVIEW

tio ts
enva eventos de filtrado secuencialmente a cada estructura Event configurada para el evento. El
orden en que LabVIEW enva el evento a cada estructura Event depende de en qu orden se

bu en
registraran los eventos. Cada estructura Event debe completar su caso de evento para el evento en

n
concreto, antes de que LabVIEW pueda notificar la siguiente estructura Event. Si una estructura
tri m
Event cambia cualquiera de los datos del evento, LabVIEW pasa los datos cambiados a las
is tru
siguientes estructuras Event de la cadena. Si una estructura Event de la cadena desecha el evento,
LabVIEW no pasa ste a las estructuras Event que queden en la cadena. LabVIEW completa el
rd s

procesamiento de la accin del usuario que activ el evento slo cuando todas las estructuras Event
fo l In

configuradas controlen el evento sin desecharlo.

Nota National Instruments recomienda usar eventos de filtrado slo cuando desee
ot a

intervenir en el control de la accin del usuario, desechando el evento o modificando los


N ion

datos del evento. Si slo desea saber que el usuario realiz una accin concreta, use
eventos de notificacin.
at

Los casos de la estructura Event que controlan eventos de filtrado tienen un Event Filter Node.
N

Puede cambiar los datos de evento cableando nuevos valores a estos terminales. Si no cablea un
valor al dato del Event Filter Node, el valor predeterminado ser el valor que devuelva el elemento
correspondiente del Event Data Node. Puede desechar completamente cualquier evento cableando
un valor TRUE al terminal Discard?.

Nota Un solo caso de la estructura Event no puede controlar eventos de notificacin y


de filtrado. Un caso puede controlar varios eventos de notificacin, pero solo puede
controlar varios eventos de filtrado si los datos del evento son idnticos para todos los
eventos.

1-12 | ni.com
Manual de Curso LabVIEW Core 2

Consulte la seccin Uso de eventos en LabVIEW de esta leccin para obtener informacin adicional
acerca del registro de eventos.

Consejo En el cuadro de dilogo Edit Events, los eventos de notificacin se indican


con una flecha verde, mientras que los eventos de filtrado tienen una roja.

Ejemplo de eventos
La figura 1-3 muestra una estructura Event configurada con el evento Menu Selection (User). Este
VI usa la estructura Event para capturar selecciones de men realizadas con el men definido por
el usuario y llamado sample.rtm. El ItemTag devuelve el elemento del men que se seleccion
y MenuRef devuelve el refnum a la barra de mens. Esta informacin se pasa a la funcin Get
Menu Item Info. Consulte examples\general\uievents.llb para ver ms ejemplos de uso
de eventos.

tio ts
Figura 1-3. Evento Menu Selection (User)

bu en
n
tri m
is tru
rd s
fo l In

Nota Si usa la funcin Get Menu Selection con una estructura Event configurada para
controlar el mismo elemento de men, la estructura Event tiene prioridad, y LabVIEW
ot a

ignora la funcin Get Menu Selection. En cualquier VI, use la estructura Event o la
N ion

funcin Get Menu Selection para controlar eventos de men, no ambas.


at

Advertencias y recomendaciones
N

La siguiente lista describe algunas de las advertencias y recomendaciones que hay que considerar
al incorporar eventos en aplicaciones de LabVIEW.
Evite utilizar una estructura Event fuera de un bucle.
LabVIEW puede generar eventos aunque ninguna estructura Event est esperando para
controlarlos. Como la estructura Event controla slo un evento cada vez que se ejecuta, coloque
la estructura Event en un bucle While que se termine cuando el VI ya no est interesado en
eventos y para que sta pueda controlar todos los eventos que ocurran.
Recuerde leer el terminal de un control booleano bloqueado en su caso de evento Value
Change.
Cuando active un evento en un control booleano configurado con una accin mecnica de
bloqueo, el control booleano no se reinicia a su valor predeterminado hasta que el diagrama de
bloques lea el terminal en el control booleano. Debe leer el terminal dentro del caso de evento
para que la accin mecnica funcione correctamente.

National Instruments | 1-13


Leccin 1 Ms all del flujo de datos

Evite colocar dos estructuras Event en un bucle.


National Instruments recomienda que coloque slo una estructura Event en un bucle. Cuando
ocurre un evento en esta configuracin, la estructura Event gestiona el evento, el bucle se itera
y la estructura Event espera a que ocurra el siguiente evento. Si coloca dos estructuras Event
en un solo bucle, ste no puede iterarse hasta que ambas estructuras Event gestionen un evento.
Si ha habilitado el bloqueo del panel frontal para las estructuras Event, la interfaz de usuario
del VI quiz no responda, en funcin de cmo interacte el usuario con el panel frontal.

Consulte el tema Caveats and Recommendations when Using Events in LabVIEW de la Ayuda de
LabVIEW para ver ms advertencias y recomendaciones cuando utilice eventos en LabVIEW.

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

1-14 | ni.com
Manual de Curso LabVIEW Core 2

Autorrevisin: Cuestionario
1. Cul de los siguientes elementos almacena temporalmente datos?
a. Colas
b. Eventos
c. Variables locales

2. Una los siguientes elementos:

Obtain Queue Destruye la referencia de la cola

tio ts
bu en
Get Queue Status Asigna el tipo de datos de la cola

n
tri m
is tru
Release Queue Aade un elemento a la parte posterior de la cola
rd s
fo l In

Enqueue Element Determina el nmero de elementos actualmente en cola


ot a
N ion
at

3. Cules de los siguientes elementos son tipos de datos vlidos para colas?
N

a. Cadena de caracteres
b. Numrico
c. Enumerar
d. Array de booleanos
e. Cluster de una cadena de caracteres y un valor numrico

4. La estructura Event gestiona slo un evento cada vez que se ejecuta.


a. Verdadero
b. Falso

National Instruments | 1-15


N
at
N ion
ot a
fo l In
rd s
is tru
tri m
bu en
tio ts
n
Manual de Curso LabVIEW Core 2

Autorrevisin: Respuestas
1. Cul de los siguientes elementos almacena temporalmente datos?
a. Colas
b. Eventos
c. Variables locales

2. Una los siguientes elementos:

Obtain Queue Asigna el tipo de datos de la cola

tio ts
bu en
Get Queue Status Determina el nmero de elementos actualmente en cola

n
tri m
is tru
Release Queue Destruye la referencia de la cola
rd s
fo l In

Enqueue Element Aade un elemento a la parte posterior de la cola


ot a
N ion
at

3. Cules de los siguientes elementos son tipos de datos vlidos para colas?
N

a. Cadena de caracteres
b. Numrico
c. Enumerar
d. Array de booleanos
e. Cluster de una cadena de caracteres y un valor numrico

4. La estructura Event gestiona slo un evento cada vez que se ejecuta.


a. Verdadero
b. Falso

National Instruments | 1-17


Leccin 1 Ms all del flujo de datos

Notas

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

1-18 | ni.com
Implementando patrones de diseo
2
Puede desarrollar mejores programas en LabVIEW y en otros lenguajes de programacin si sigue
tcnicas de programacin sistemticas. Los patrones de diseo representan tcnicas que han
resultado siempre tiles. Para facilitar el desarrollo, LabVIEW incluye plantillas para varios
patrones de diseo comunes. Esta leccin describe dos tipos de patrones de diseo de
programacin: bucles simples y bucles mltiples.

Los patrones de diseo de bucle simple incluyen el VI simple, el VI general y la mquina de


estados.

tio ts
Los patrones de diseo de mltiples bucles son el VI de bucles paralelos, el maestro/esclavo y el

bu en
productor/consumidor.

n
Comprender el uso apropiado de cada patrn de diseo ayuda a crear VIs de LabVIEW ms
eficientes. tri m
is tru
Temas
rd s
fo l In

A. Patrones de diseo
B. Patrones de diseo simple
ot a

C. Patrones de diseo de bucles mltiples


N ion

D. Gestores de errores
E. Generando cdigos de error y mensajes
at

F. Temporizar un patrn de diseo


N

G. Patrn de diseo variable global funcional

National Instruments | 2-1


Leccin 2 Implementando patrones de diseo

A. Patrones de diseo
Los patrones de diseo de aplicaciones representan implementaciones y tnicas de cdigo de
LabVIEW que son soluciones para problemas concretos en el diseo de software. Los patrones de
diseo normalmente evolucionan gracias a los esfuerzos de muchos desarrolladores y se ajustan
para conseguir simplicidad, mantenibilidad y legibilidad. Los patrones de diseo representan las
tcnicas que han resultado siempre tiles. Adems, a medida que gana aceptacin un modelo,
resulta ms fcil de reconocer, lo que le ayuda a leer y realizar cambios en el cdigo.

B. Patrones de diseo simple


Usted aprendi a disear tres tipos distintos de patrones de diseo en el curso LabVIEW Core 1: la
arquitectura simple, la arquitectura general y la mquina de estados.

tio ts
Patrones de diseo de VI simple

bu en
Para realizar clculos o mediciones rpidas en el laboratorio, no necesita una arquitectura
complicada. Su programa podra constar de un solo VI que realice una medicin o un clculo y

n
tri m
muestre los resultados o los grabe en el disco. El patrn de diseo del VI simple normalmente no
requiere una accin de inicio o parada especfica por parte del usuario. El usuario slo hace clic en
is tru
el botn Run. Use esta arquitectura para aplicaciones sencillas o para componentes funcionales
dentro de aplicaciones ms grandes. Puede convertir estos VIs simples en subVIs que use como
rd s

bloques de construccin para aplicaciones ms grandes.


fo l In

La figura 2-1 muestra el diagrama de bloques del VI Determine Warnings, que era el proyecto del
curso LabVIEW Core 1. Este VI ejecuta una sola tarea: determina qu alarma generar en funcin
ot a

de un conjunto de entradas. Puede utilizar este VI como un subVI cuando tenga que determinar el
N ion

nivel de alarma.
at

Observe que el VI de la figura 2-1 no contiene acciones de inicio o parada por parte del usuario.
En este VI todos los objetos del diagrama de bloques se conectan mediante el flujo de datos. Puede
N

determinar el orden general de las operaciones siguiendo el flujo de datos. Por ejemplo, la funcin
Not Equal no se puede ejecutar hasta que se hayan ejecutado las funciones Greater Than or Equal,
Less Than or Equal y ambas funciones Select.

2-2 | ni.com
Manual de Curso LabVIEW Core 2

Figura 2-1. Arquitectura del VI simple

Patrn de diseo del VI general

tio ts
Un patrn de diseo de VI general tiene tres fases principales: arranque, aplicacin principal y

bu en
cierre. Cada una de estas fases puede contener cdigo que usa otro tipo de patrn de diseo.

tri m
Arranque: inicializa el hardware, lee la informacin de configuracin de los archivos o solicita
al usuario ubicaciones de archivos de datos.
is tru
Aplicacin principal: consta de al menos un bucle que se repite hasta que el usuario decida
salir del programa o ste termine por otras razones, como la finalizacin de E/S.
rd s
fo l In

Cierre: cierra archivos, escribe informacin de configuracin en el disco o restablece E/S al


estado predeterminado.
ot a

La figura 2-2 muestra el patrn de diseo del VI general.


N ion

Figura 2-2. Patrn de diseo del VI general


at
N

En la figura 2-2, los cables del cluster de error controlan el orden de ejecucin de las tres secciones.
El bucle While no se ejecuta hasta que el VI Start Up termine de ejecutarse y devuelva los datos
del cluster de error. Como consecuencia, el VI Shut Down no puede ejecutarse hasta que termine
la aplicacin principal del bucle While y los datos del cluster de error abandonen el bucle.

National Instruments | 2-3


Leccin 2 Implementando patrones de diseo

Consejo La mayora de los bucles requieren una funcin Wait, especialmente si ese
bucle monitoriza la interaccin del usuario con el panel frontal. Sin la funcin Wait, el
bucle podra ejecutarse continuamente y usar todos los recursos del sistema. La funcin
Wait obliga al bucle a ejecutarse asncronamente aunque especifique 0 milisegundos
como periodo de espera. Si las operaciones del bucle principal reaccionan a las entradas
del usuario, puede aumentar el periodo de espera a un nivel aceptable para los tiempos
de reaccin. Una espera de 100 a 200 ms suele ser buena porque la mayora de los
usuarios no puede detectar ese retardo entre hacer clic en un botn del panel frontal y la
ejecucin del evento siguiente.

Para aplicaciones simples, el bucle de la aplicacin principal es obvio y contiene cdigo que utiliza
el patrn de diseo del VI simple. Cuando la aplicacin incluye interfaces de usuario complicadas
o varias tareas como acciones del usuario, triggers de E/S, etc., la fase de la aplicacin principal se
complica ms.

tio ts
Patrn de diseo de mquina de estados (Por sondeo)

bu en
El patrn de diseo de mquina de estados es una modificacin del patrn de diseo general.

n
tri m
Normalmente tiene una fase de arranque y de cierre. Sin embargo, la fase de la aplicacin principal
consta de una estructura Case embebida en el bucle. Esta arquitectura permite ejecutar cdigo
is tru
diferente cada vez que se ejecuta el bucle, en funcin de alguna condicin. Cada caso define un
estado de la mquina, de ah el nombre mquina de estados. Use este patrn de diseo para VIs que
rd s

se dividan fcilmente en varias tareas ms simples, como VIs que actan como una interfaz de
fo l In

usuario.

Una mquina de estados en LabVIEW consta de un bucle While, una estructura Case y un registro
ot a

de desplazamiento. Cada estado de la mquina de estados es un caso distinto en la estructura Case.


N ion

Debe colocar los VIs y el resto de cdigo que el estado deba ejecutar dentro del caso apropiado.
Un registro de desplazamiento almacena el estado que debe ejecutarse en la siguiente iteracin
at

del bucle. La figura 2-3 muestra el diagrama de bloques de un VI de mquina de estados con
cinco estados. La figura 2-4 muestra los otros casos, o estados, de la mquina de estados.
N

Figura 2-3. Mquina de estados con estado de arranque

2-4 | ni.com
Manual de Curso LabVIEW Core 2

Figura 2-4. Estados Idle (predeterminado), Event 1 y Event 2

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a

En el patrn de diseo de mquina de estados, usted disea la lista de posibles tareas, o estados, y
despus los asigna a cada caso. Para el VI del ejemplo anterior, los posibles estados son Startup,
N ion

Idle, Event 1 y Event 2. Una constante de enumeracin guarda los estados. Cada estado tiene su
propio caso en la estructura Case. El resultado de un caso determina qu caso ejecutar despus. El
at

registro de desplazamiento almacena el valor que determina el prximo caso a ejecutar.


N

El patrn de diseo de mquina de estados puede hacer el diagrama de bloques mucho ms


pequeo y, por lo tanto, ms fcil de leer y de depurar. Otra ventaja de la arquitectura de la mquina
de estados es que cada caso determina el siguiente estado, a diferencia de las estructuras Sequence,
que deben ejecutar cada marco secuencialmente.

Una desventaja del patrn de diseo de mquina de estados es que con el enfoque del ejemplo
anterior, es posible saltar estados. Si se llama a dos estados de la estructura a la vez, este modelo
gestiona slo uno de ellos mientras que el segundo no se ejecuta. Saltar estados puede producir
errores difciles de depurar porque son complicados de reproducir. Versiones ms complejas del
patrn de diseo de la mquina de estados contienen cdigo adicional que crea una cola de eventos,
o estados, para que no se pierda un estado. Consulte la leccin 1, Ms all del flujo de datos, para
obtener informacin adicional acerca de las mquinas de estados basadas en colas.

National Instruments | 2-5


Leccin 2 Implementando patrones de diseo

Patrn de diseo de mquina de estados (Basada en eventos)


El patrn de diseo de la mquina de estados basada en sondeo, monitorea la actividad en el panel
frontal usando tcnicas estndar de flujo de datos. Una mquina de estados basada en eventos,
combina el poder de la interaccin del usuario en una interfaz de usuario de un controlador de
eventos con la flexibilidad de transicin de una mquina de estados. Debido a que esta
combinacin es tan til para una amplia gama de aplicaciones, LabVIEW proporciona una plantilla
basada en proyectos, la mquina de estados simple, para simplificar el proceso de creacin de una
aplicacin basada en este patrn de diseo.

La plantilla de la mquina de estados simple es una aplicacin personalizable que se encuentra en


forma de un archivo .lvproj con soporte de los VIs y los controles de definicin tipo. La
aplicacin se basa en el patrn de diseo de una mquina de estados basada en eventos. La plantilla
incluye una amplia documentacin acerca de cmo modificar el cdigo para crear una aplicacin
personalizada con mquinas de estados.

tio ts
Utilice el cuadro de dilogo de Crear Proyecto para crear un proyecto a partir de una plantilla o

bu en
muestra. Las plantillas proporcionan arquitecturas comunes que se pueden modificar para lograr
metas especficas. Proyectos de ejemplo demuestran cmo una plantilla se puede modificar para

n
lograr metas especficas.
tri m
is tru
Consulte el proyecto de ejemplo Single Shot Measurement, disponible en el cuadro de dilogo de
Crear Proyecto, para un ejemplo de la adaptacin de la plantilla de una mquina de estados simple
rd s

en una aplicacin de medicin.


fo l In

Figura 2-5. Diagrama de transicin de estados en una mquina de estados simple.


ot a
N ion

Initialize
at
N

Wait for Stop


Event
User
State 1
User
State 2

Despus de la inicializacin, la mquina de estados transiciona al estado Esperar Evento. Este


estado contiene una estructura Event que espera los cambios en el panel frontal. Cuando un usuario
hace clic en un botn, LabVIEW reconoce el evento y cambia al subdiagrama apropiado en la
estructura Event. Este subdiagrama inicia una transicin al estado apropiado.

Slo un estado se ejecuta a la vez, y el nico bucle While ejecuta todas las tareas en un solo ciclo.
Si usted necesita tareas con distintas velocidades o en paralelo, considere un patrn de diseo
multi-bucle. En esta leccin usted aprender sobre el patrn de diseo del productor/consumidor.

2-6 | ni.com
Manual de Curso LabVIEW Core 2

En los cursos posteriores se aprender acerca de otros patrones de diseo de otros LabVIEW para
los cuales se dispone de plantillas, como las plantillas Queued Message Handler o Actor
Framework.

El estado Esperar por Evento es el nico que reconoce la entrada del usuario. La mquina de
estados debe estar en este estado para aceptar cualquier entrada del usuario. Por lo tanto, cada
estado debe ser rpido para que el cdigo pueda volver al estado Esperar por Eventos.

Patrn de diseo del controlador de eventos de la interfaz de usuario


El patrn de diseo del controlador de eventos de la interfaz de usuario incluye una arquitectura
potente y eficaz para controlar la interaccin del usuario con LabVIEW. Use el controlador de
eventos de la interfaz de usuario para detectar cundo un usuario cambia el valor de un control,
mueve el ratn, hace clic en l o pulsa una tecla.

tio ts
La plantilla estndar del controlador de eventos de la interfaz de usuario consta de una estructura
Event contenida en un bucle While, como en la figura 2-6. Configure la estructura Event para tener

bu en
un caso para cada categora de evento que desee detectar. Cada caso de evento contiene el cdigo
de control que se ejecuta inmediatamente despus de que ocurra un evento.

n
tri m
Como el bucle del controlador de eventos se activa precisamente cuando ocurre un evento y se
is tru
suspende entre eventos, no tiene que sondear ni leer valores de control constantemente para
detectar cundo un usuario hace clic en un botn. El controlador de eventos de la interfaz de
rd s

usuario permite minimizar el uso del procesador sin sacrificar la interactividad.


fo l In

Figura 2-6. Patrn de diseo del controlador de eventos de la interfaz de usuario


ot a
N ion

3
at

1
N

1 Estructura Event 3 Terminal Timeout


2 Bucle While 4 Event Data Node

Un problema comn al usar el controlador de eventos de la interfaz de usuario es que computa la


condicin de terminacin del bucle While antes de que se ejecute la estructura Event. Esto puede
hacer que el bucle While se itere una vez ms de lo esperado. Para evitar esta situacin, calcule el
final del bucle While en todo el cdigo de control de eventos.

National Instruments | 2-7


Leccin 2 Implementando patrones de diseo

El cdigo del controlador de eventos debe ejecutarse rpidamente, en general en menos de 200 ms.
Si es ms lento, puede parecer que la interfaz de usuario se bloquea. Asimismo, si el cdigo del
controlador de eventos tarda mucho en ejecutarse, la estructura Event podra bloquearse. De forma
predeterminada, el panel frontal se bloquea mientras se controla un evento. Puede desactivar el
bloqueo del panel frontal para cada caso de evento para que la interfaz de usuario sea ms sensible.
Sin embargo, los nuevos eventos que se generen mientras se est controlando un evento no se
controlarn inmediatamente. Por lo tanto, la interfaz de usuario an parecer que no responde.

Todo cdigo que est en un caso de evento no puede compartirse con otra estructura Event. Debe
utilizar un buen diseo de cdigo al usar la estructura Event. Modularice el cdigo que se
compartir entre varios casos de estructura Event.

La estructura Event incluye un evento Timeout, que permite controlar cundo se ejecuta el evento
Timeout. Por ejemplo, si configura un Timeout de 200 ms, el caso del evento Timeout se ejecuta
cada 200 ms en ausencia de otros eventos. Puede usar el evento Timeout para realizar la

tio ts
temporizacin crtica de su cdigo.

bu en
C. Patrones de diseo de bucles mltiples

n
tri m
Hay varios patrones de diseo de bucles mltiples, algunos de los cuales estn ms all del alcance
is tru
de este curso. Este curso se enfoca en el patrn de diseo del productor/consumidor debido a su
versatilidad y flexibilidad .
rd s
fo l In

Patrn de diseo de productor / consumidor


El patrn de diseo de productor / consumidor se basa en el patrn de diseo de maestro / esclavo
ot a

y mejora la comparticin de datos entre varios bucles que se ejecutan a distintas velocidades. Al
N ion

igual que el patrn de diseo de maestro / esclavo, el patrn de diseo de productor / consumidor
separa tareas que producen y consumen datos a distintas velocidades. Los bucles paralelos en el
at

patrn de diseo de productor / consumidor estn separados en dos categoras: los que producen
datos y los que consumen los datos producidos. Las colas de datos comunican datos entre los
N

bucles. Las colas de datos tambin almacenan temporalmente datos en un bfer entre los bucles
productor y consumidor.

Consejo Un bfer es un dispositivo de memoria que almacena datos temporales entre


dos dispositivos o, en este caso, mltiples bucles.

Use el patrn de diseo de productor / consumidor cuando tenga que adquirir varios conjuntos de
datos que deben procesarse en orden. Suponga que desea crear un VI que acepte datos mientras
procesa los conjuntos de datos en el orden en que se recibieron. El patrn de productor /
consumidor es ideal para este tipo de VI, porque poner en cola (producir) los datos se realiza mucho
ms rpidamente que el procesamiento de stos (consumir). Podra colocar al productor y al
consumidor en el mismo bucle para esta aplicacin, pero la cola de procesamiento no podra recibir
ms datos hasta que el primer dato se procesara completamente. El enfoque de productor /
consumidor para este VI pone en cola los datos en el bucle productor y procesa los datos en el bucle
consumidor, como en la figura 2-7.

2-8 | ni.com
Manual de Curso LabVIEW Core 2

Consejo Las funciones de manejo de colas permiten almacenar un conjunto de datos


que puede pasarse entre bucles mltiples que se ejecutan simultneamente o entre VIs.
Consulte la leccin 1, Ms all del flujo de datos, para obtener informacin adicional
acerca de colas e implementacin de aplicaciones que utilicen el patrn de diseo
productor / consumidor.

Figura 2-7. Patrn de diseo de productor / consumidor

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at

Este patrn de diseo permite que el bucle consumidor procese los datos a su propio ritmo,
N

mientras que el bucle productor sigue poniendo en cola datos adicionales.

Tambin puede usar el patrn de diseo de productor / consumidor para crear un VI que analice la
comunicacin de red. Este tipo de VI requiere dos procesos simultneos y a distintas velocidades.
El primer proceso sondea constantemente la lnea de red y captura paquetes. El segundo proceso
analiza los paquetes que captura el primer proceso.

En este ejemplo, el primer proceso acta como productor porque suministra datos al segundo
proceso, que acta de consumidor. El patrn de diseo de productor / consumidor es una
arquitectura efectiva para este VI. Los bucles paralelos productor y consumidor controlan la
captura y el anlisis de datos fuera de la red. La comunicacin en cola entre los dos bucles permite
el almacenamiento temporal de los paquetes de red recuperados. El uso del bfer puede ser
importante si la comunicacin de red es intensa. Mediante el bfer, los paquetes pueden capturarse
y comunicarse ms rpidamente de lo que pueden analizarse.

National Instruments | 2-9


Leccin 2 Implementando patrones de diseo

Patrn de diseo de productor/consumidor (Datos)


El patrn de diseo del productor/consumidor mejora el intercambio de datos entre mltiples
bucles que funcionan a diferentes velocidades. Hay dos categoras de bucles paralelos en el patrn
de diseo productor/consumidorlos que producen los datos y los que consumen los datos. Las
colas de datos comunican datos entre los bucles. Las colas de datos tambin almacenan
temporalmente datos en un bfer entre los bucles productor y consumidor. Utilice el patrn de
diseo productor/consumidor para adquirir varios conjuntos de datos que se deben procesar en
orden, por ejemplo, un VI que acepta datos al procesar los conjuntos de datos en el orden en que
se reciban. Introducir datos en la cola (producir) ocurre mucho ms rpido que el procesamiento
de datos (consumidos). El enfoque de productor/consumidor pone en cola los datos en el bucle
productor y procesa los datos en el bucle consumidor, como en la figura 2-8.
Figura 2-8. Patrn de diseo de productor/consumidor (Datos)

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

Este patrn de diseo permite que el bucle consumidor procese los datos a su propio ritmo,
mientras que el bucle productor sigue poniendo en cola datos adicionales. Tambin puede utilizar
el productor/consumidor para crear un VI que analice la comunicacin de red en la que dos
procesos operan al mismo tiempo y a diferentes velocidades. El primer proceso sondea
constantemente la lnea de red y captura paquetes. El segundo proceso analiza los paquetes que
captura el primer proceso. El primer proceso acta como productor porque suministra datos al
segundo proceso, que acta de consumidor. Los bucles paralelos productor y consumidor controlan
la captura y el anlisis de datos fuera de la red. La comunicacin en cola entre los dos bucles
permite el almacenamiento temporal de los paquetes de red recuperados.

2-10 | ni.com
Manual de Curso LabVIEW Core 2

La figura 2-8 muestra cmo puede usar los VIs de Sincronizacin y las funciones para aadir
funcionalidad al patrn de diseo. Las colas pueden transferir cualquier tipo de datos. El tipo de
datos transferido de la figura 2-8 es una cadena de caracteres. Una cadena de caracteres no es el
tipo de datos ms eficaz para pasar datos en patrones de diseo. Un tipo de datos ms eficaz para
pasar datos en patrones de diseo es un cluster que consta de un estado y elementos de datos.

Demostracin de Productor/consumidor (datos)


El proyecto de productor/consumidor, ubicado en el directorio <Exercises>\LabVIEW
Core 2\Demonstrations\Producer Consumer - Data, demuestra el patrn de diseo. El
panel frontal incluye un botn que controla cuando el valor de la cadena de caracteres es aadido
a la cola. El control deslizante cableado a la funcin Wait (ms) en el del blucle Consumidor simula
el tiempo de procesamiento intensivo dentro del bucle. Esto demuestra el efecto sobre la ejecucin
general del programa. Mientras que el bucle consumidor se ejecuta, el usuario puede poner en cola
ms elementos. La cola retiene cada elemento y los ejecuta en orden despus del procesamiento

tio ts
simulado del elemento en el bucle consumidor. Con esta implementacin, cuando el bucle
consumidor est ocupado, la interfaz de usuario sigue respondiendo y los comandos de usuario

bu en
siguen siendo registrados.

n
tri m
Patrn de diseo Productor/Consumidor (Eventos)
is tru
Uno de los patrones de diseo ms verstiles y flexibles combina los patrones de diseo productor/
consumidor y el controlador de eventos de interfaz de usuario. Un VI creado usando el patrn de
rd s

diseo productor/consumidor (eventos) responde a la interfaz de usuario asncronamente, para que


fo l In

la interfaz de usuario pueda responder continuamente al usuario. El bucle consumidor de este


patrn responde cuando ocurren eventos, al igual que el bucle consumidor del patrn de diseo de
ot a

(datos) productor / consumidor.


N ion

El patrn de diseo productor / consumidor (eventos) usa la misma implementacin que el patrn
de diseo productor / consumidor (datos), salvo que el bucle productor usa una estructura Event
at

para responder a los eventos de la interfaz de usuario, como se ve en la figura 2-9. La estructura
Event permite la respuesta continua a la interaccin del usuario.
N

National Instruments | 2-11


Leccin 2 Implementando patrones de diseo

Figura 2-9. Patrn de diseo Productor/Consumidor (Eventos)

tio ts
bu en
n
tri m
is tru
rd s

Demostracin de productor/consumidor (eventos)


fo l In

El proyecto de productor/consumidor, ubicado en el directorio <Exercises>\LabVIEW


Core 2\Producer Consumer - Event, demuestra el patrn de diseo. El panel frontal incluye
ot a

botones para poner en cola un mensajes con una prioridad normal o bien un mensaje con una
N ion

prioridad alta. Cuando un mensaje con prioridad normal es puesto en la cola, el estado del
consumidor se establece a prioridad normal, los datos booleanos se establecen a falso, y el valor
del dato numerico se establece a la cantidad de iteraciones en el bucle While. Cuando un mensaje
at

con prioridad alta es puesto en la cola, el estado del consumidor se establece a prioridad alta, los
N

datos booleanos se establecen a verdadero, y el valor del dato numerico se establece a 1000. El
indicador State to Execute muestra el estado actual a ser ejecutado en el bucle del Consumidor.

El bucle consumidor se implementa con una espera de 1 segundo para demostrar el efecto del
tiempo de procesamiento intensivo. Mientras que el bucle consumidor se ejecuta, el usuario puede
poner en cola ms elementos (hacer clic en otros botones). Con esta implementacin, cuando el
bucle consumidor est ocupado, la interfaz de usuario sigue respondiendo y los comandos de
usuario siguen siendo registrados. Debido a que el bucle de productores recurre a una estructura
Event, menos procesamiento se produce debido a que los controles dentro de la estructura Event
son de slo lectura cuando sus valores cambian. La interfaz de usuario es totalmente responsable
de determinar las acciones a ser realizadas en el bucle consumidor. Incluso si hay un retraso
acumulado de elementos con prioridades normales en la cola, un elemento de cola de prioridad alta
se aade en la parte delantera de la cola y se procesa antes que los mensajes de prioridad normal.

Cuando el usuario hace clic en el botn Stop, un mensaje de apagado se enva al bucle consumidor
el cual termina enviando un valor True al terminal condicional del bucle.

2-12 | ni.com
Manual de Curso LabVIEW Core 2

Ayuda de Trabajo
Use la tabla 2-1 para determinar la mejor forma de usar los patrnes de diseo descritos en esta
leccin.

Tabla 2-1. Comparacin entre patrones de diseo

Patrones de diseo Uso Ventajas Desventajas


Simple subVIs estndar Permite aplicaciones No es adecuado para
modulares el diseo de la
Clculos / algoritmos,
interfaz de usuario o
procesamiento
VIs de alto nivel
modular
Equivalente de
LabVIEW de una

tio ts
subrutina en otros
lenguajes de

bu en
programacin

n
General
tri m
Control de flujo
estndar
Diferencia entre
fases de
No puede retornar a
una fase anterior
is tru
inicializacin,
Bueno para prototipos
ejecucin y de
rd s

rpidos o aplicaciones
parada
fo l In

sencillas y directas
que no crecen en
complejidad
ot a
N ion

Mquina de estados Controla la Secuencias de Una Interfaz de


(sondeo) funcionalidad de un control usuario basada en
VI mediante la sondeo no es
at

Mantenimiento del
creacin de una escalable a medida
cdigo es sencillo
N

secuencia que la aplicacin


porque se pueden
crece
aadir fcilmente
nuevos estados. No es apto para el
paralelismo
Para aplicaciones
simples, no tienen
que manejar ambos
diagramas: eventos y
mquinas de estados.

National Instruments | 2-13


Leccin 2 Implementando patrones de diseo

Tabla 2-1. Comparacin entre patrones de diseo (Continuacin)

Patrones de diseo Uso Ventajas Desventajas


Mquina de estados Controla la Secuencias de No es apto para el
(Basada en eventos) funcionalidad de un control paralelismo
VI mediante la
Mantenimiento del
creacin de una
cdigo es sencillo
secuencia
porque se pueden
aadir fcilmente
nuevos estados.
El uso de la
estructura de eventos
es ms eficiente que
un control por

tio ts
sondeo

bu en
Controlador de Procesa mensajes Maneja los mensajes No permite el

n
eventos de interfaz de
usuario tri m
desde la interfaz de
usuario
de la interfaz de
usuario
procesamiento
intensivo
is tru
No es apto para el
paralelismo
rd s
fo l In

Productor/consumidor Procesa o analiza los Comunicacin por No proporciona


(datos) datos en paralelo con medio de un bfer sincronizacin entre
otro procesamiento de entre procesos de una bucles
ot a

datos o anlisis aplicacin


N ion

Limitado a un tipo de
dato, a menos que los
datos estn
at

contenidos en un
N

cluster

2-14 | ni.com
Manual de Curso LabVIEW Core 2

Tabla 2-1. Comparacin entre patrones de diseo (Continuacin)

Patrones de diseo Uso Ventajas Desventajas


Productor/consumidor Responde a la interfaz Separa la interfaz de No integra eventos no
(eventos) de usuario con usuario del cdigo de realcionados con la
aplicaciones de uso procesamiento interfaz de usuario
intensivo del intensivo
procesador
Variables globales Utilizar como un Almacena datos No es adecuado para
funcionales subVI que necesita siempre que el VI VIs reentrantes
mantener los datos est en memoria
Problemtico al
globales y realizar
Ejecuta operaciones duplicar o ampliar los
acciones en esos
en funcin de la datos globales con
datos.

tio ts
seleccin de entrada mltiples copias y
realizar acciones en

bu en
Una buena manera
dichas copias
de proteger las

n
tri m secciones crticas de
cdigo para eliminar
is tru
las condiciones de
carrera
rd s
fo l In

D. Gestores de errores
ot a

De forma predeterminada, LabVIEW controla automticamente cualquier error cuando un VI se


N ion

ejecuta suspendiendo la ejecucin, resaltando el subVI o la funcin donde ocurri el error y


mostrando un cuadro de dilogo de error. La gestin automtica de errores es conveniente para el
desarrollo de prototipos rpidos y pruebas de concepto, pero no se recomienda para el desarrollo
at

de aplicaciones profesionales. Si confa en la gestin automtica de errores, su aplicacin podra


detenerse en una parte crtica de su cdigo por un cuadro de dilogo de error. Quiz el usuario no
N

pueda continuar ejecutando la aplicacin o solucionar el problema.

Al implementar manualmente la gestin de errores, usted controla cundo aparecen cuadros de


dilogo emergentes. Si piensa crear una aplicacin independiente, debe incorporar la gestin
manual de errores porque LabVIEW no muestra cuadros de dilogo de gestin automtica de
errores en LabVIEW Run-Time Engine.

Un gestor de errores es un VI o cdigo que cambia el flujo normal del programa cuando ocurre un
error. El VI Simple Error Handler es un ejemplo de un gestor de errores integrado que se utiliza en
LabVIEW. Puede aplicar otros gestores de errores personalizados para su aplicacin. Por ejemplo,
puede elegir registrar informacin del error en un archivo. Otro gestor de errores comn es un VI
que redirecciona cdigo a una rutina de limpieza o cierre cuando ocurre un error, para que su
aplicacin salga correctamente. La figura 2-10 muestra un gestor de errores de mquina de estados
que configura el siguiente estado en Shutdown cuando un error tiene el estado TRUE.

National Instruments | 2-15


Leccin 2 Implementando patrones de diseo

Figura 2-10. Gestor de errores de la mquina de estados

Gestin de errores en el patrn de diseo


productor/consumidor (eventos)
El diagrama del productor/consumidor que se muestra en la Figura 2-9 es til para la comprensin
de la arquitectura fundamental del patrn de diseo. Adems de pasar comandos y datos entre los
bucles, el patrn de diseo para ambos bucles cuando el usuario hace clic en el botn Stop. Sin

tio ts
embargo, si se produce un error en cualquier bucle, no existe ningn mecanismo para comunicar

bu en
esta informacin al otro bucle. Por lo tanto, es posible que uno de los bucles se ejecute
indefinidamente despus de que el otro se haya detenido.

n
tri m
Por lo tanto, es necesario aadir el cdigo de gestor de errores con el patrn de diseo para que los
is tru
bucles productor y consumidor se detengan elegantemente cuando se produce un error. Hay
muchas tcnicas para comunicar informacin de error entre los dos bucles, algunos de los cuales
rd s

estn cubiertos en cursos posteriores. Algunas tcnicas implican la adicin de un canal de


fo l In

comunicacin adicional, como una cola adicional. Otra tcnica es utilizar el cluster de cola actual
para ejecutar un caso de apagado en el bucle consumidor. Este enfoque se demuestra usando el VI
gestor de errores que se muestra en la figura 2-11 y el productor/consumidor llamando al VI Error
ot a

Handler ilustrado en la figura 2-12.


N ion
at
N

2-16 | ni.com
Manual de Curso LabVIEW Core 2

Figura 2-11. VI gestor de errores

tio ts
bu en
n
tri m
is tru
Figura 2-12. Productor/Consumidor llamando al VI Error Hander
rd s
fo l In
ot a
N ion
at
N

Si se produce un error en el bucle productor, el VI Error Handler pone en cola el estado de apagado
junto con la informacin de cluster de error. Puesto que se deseara volver a utilizar este VI Error
Handler en el bucle consumidor, es necesario eliminar el error en el cable de error despus de poner
en cola la informacin. De lo contrario, el bucle consumidor terminara antes de que tuviera la
oportunidad de ejecutar el caso de apagado. Si falla la funcin Enqueue en el VI Error Handler, la

National Instruments | 2-17


Leccin 2 Implementando patrones de diseo

comunicacin entre los bucles se detiene por lo que el nico curso razonable de accin es dar por
terminada la ejecucin del bucle inmediatamente.

Dado que el estado de procesamiento, incluyendo el procesamiento de cierre, se produce en el


bucle consumidor y no en el bucle de productor, todava necesita algn mecanismo en el bucle
consumidor para informar al bucle productor que detenga la ejecucin. Un enfoque, como se
muestra en la figura 2-13, es utilizar una variable local que se sondea en el caso del evento Timeout.
Si se produce un error en el bucle consumidor, el caso de apagado se ejecuta y detiene el bucle. La
variable local Consumer Shutdown? puede entonces detener el bucle productor.
Figura 2-13. Productor/Consumidor usando una variable local

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

E. Generando cdigos de error y mensajes


La gestin de errores en LabVIEW sigue el modelo de flujo de datos. Al igual que los valores de
datos fluyen por un VI, tambin lo hace la informacin de errores. Mientras se ejecuta el VI,
LabVIEW comprueba si hay errores en cada nodo de ejecucin. Si LabVIEW no encuentra errores,
el nodo se ejecuta con normalidad. Si LabVIEW detecta un error, el nodo pasa el error al siguiente

2-18 | ni.com
Manual de Curso LabVIEW Core 2

nodo sin ejecutar esa parte del cdigo. El siguiente nodo hace lo mismo y as sucesivamente. Al
final del flujo de ejecucin, el error se expresa a travs del Simple Error Handler.vi o a travs de
un cluster de error.

Configurar un error cuando un nodo o VI falla no debera estar limitado a los errores cuyas
funciones y VIs de LabVIEW ya reportan. Como desarrollador de un VI, tambin se deben detectar
las condiciones de error y el reporte de estos errores los subVIs. Hay muchas situaciones en las que
puede que desee reportar una condicin de error que se detect en su cdigo. A continuacin se
presentan algunos ejemplos para configurar o invalidar los cdigos de error y mensajes:
Comprobar las entradas no vlidas a subVIs o algoritmos. Verificar si existen arrays o cadenas
de caracteres vacas antes de procesar. Si una entrada es invlida, se debe configurar un cdigo
de error y mensaje apropiados. Un ejemplo podra ser comprobar si una entrada es un valor
positivo antes de intentar obtener la raz cuadrada del nmero. Si un valor es negativo, se
generar un error con un mensaje apropiado con el fin de notificar al usuario como se podra
arreglar el valor de la entrada.

tio ts
Verificar salidas invlidas en diferentes algoritmos. Por ejemplo, la funcin Search 1D Array

bu en
retorna un valor ndice de -1 si la bsqueda de un elemento no es exitosa en un array. En esta

n
situacin, es posible que desee informar de un error con un mensaje que indica que el valor del
tri m
elemento no se encuentra en el array.
is tru
Sobrescribir mensajes de error de LabVIEW con detalles ms especficos. La funcin
Open/Create/Replace devuelve el cdigo de error 7 al intentar abrir un archivo que no existe.
rd s

El cdigo de error 7 est asociado al mensaje de error genrico file not found. En lugar del
fo l In

mensaje de error genrico, es posible que se desee un mensaje de error ms especfico teniendo
en cuenta la ruta del archivo especfico que fall, adems de informacin sobre cmo el usuario
puede corregir el problema y volver a intentar la operacin.
ot a
N ion

Error Ring
at

Se utiliza el Error Ring para seleccionar y pasar de forma rpida cdigos de error personalizados a
travs de un VI. Se puede configurar el ring para devolver un mensaje de error integrado, o se
N

puede crear un mensaje de error personalizado para un solo uso. De forma predeterminada, la
cadena de caracteres de origen del cluster de error contiene la cadena de llamadas del VI de nivel
superior para el VI que se est ejecutando. La figura 2-14 ilustra un Error Ring configurado.
Figura 2-14. Error Ring

Una vez seleccionado el error, puede cambiar el tipo (error o advertencia) e incluir la cadena de
llamada haciendo clic en los iconos del ring. Tambin puede cambiar el tipo de error y las opciones
de llamada de la cadena, haga clic con el botn derecho en en el Error Ring y seleccione: Generate
Error, Generate Warning, Include Call Chain, o Exclude Call Chain, en el men contextual.

National Instruments | 2-19


Leccin 2 Implementando patrones de diseo

Definiendo un codigo de error personalizado


La creacin de un cdigo de error personalizado es til si se desea definir un cdigo de error simple
o sobrescribir uno nico incorporado en el cdigo de error. Si se tienen varios errores
personalizados que se deseen utilizar en el Error Ring, utilice el cuadro de dilogo Error Code
Editor.

F. Temporizar un patrn de diseo


Esta seccin describe dos formas de temporizacin: de ejecucin y control del software. La
temporizacin de ejecucin usa funciones de temporizacin facilitando tiempo al procesador para
completar otras tareas. La temporizacin de control del software temporiza una operacin del
mundo real para realizarla en un periodo de tiempo concreto.

Temporizacin de ejecucin

tio ts
La temporizacin de ejecucin implica temporizar un patrn de diseo explcitamente o en funcin

bu en
de eventos que ocurren en el VI. La temporizacin explcita utiliza una funcin que facilita

n
especficamente tiempo al procesador para completar otras tareas, como la funcin Wait Until Next
tri m
ms Multiple. Cuando la temporizacin se basa en eventos, el patrn de diseo espera a que ocurra
is tru
alguna accin antes de continuar y permite que el procesador complete otras tareas mientras espera.

Utilice sincronizacin explcita de los patrones de diseo basados en sondeo, tales como el patrn
rd s

de diseo (datos) de productor/consumidor o la mquina de estados basada en sondeo.


fo l In

Consejo El sondeo es el proceso de realizar solicitudes continuas de datos desde otro


ot a

dispositivo. En LabVIEW, esto normalmente significa que el diagrama de bloques


N ion

pregunta continuamente si hay datos disponibles, en general desde la interfaz de usuario.


at

Por ejemplo, el patrn de diseo de productor/consumidor de la figura 2-15 usa un bucle While y
una estructura Case para implementar el bucle productor. El productor se ejecuta continuamente y
N

sondea un evento de algn tipo, como cuando el usuario hace clic en un botn. Cuando ocurre el
evento, el productor enva un mensaje al consumidor. Se debe temporizar el productor para que no
acapare la ejecucin del procesador. En este caso, normalmente use la funcin Wait (ms) para
regular la frecuencia de sondeo del maestro.

Consejo Use siempre una funcin de temporizacin como Wait (ms) o Wait Until Next
ms Multiple en cualquier patrn de diseo que se ejecute continuamente y deba
regularse. Si no usa una funcin de temporizacin en una estructura que se ejecuta
continuamente, LabVIEW usar todo el tiempo del procesador y quiz no se ejecuten los
procesos en segundo plano.

2-20 | ni.com
Manual de Curso LabVIEW Core 2

Figura 2-15. Patrn de diseo de productor / consumidor

tio ts
bu en
n
tri m
is tru
rd s

Tenga en cuenta que el bucle consumidor no contiene ninguna forma de temporizacin. El uso de
fo l In

colas para pasar los datos y mensajes proporciona una forma inherente de temporizacin en el
bucle consumidor debido a que el bucle consumidor espera a la funcin Queue para recibir un
ot a

elemento de la cola. Despus de que la funcin Queue recibe un elemento de la cola, el bucle
N ion

consumidor se ejecuta sobre los datos o mensajes pasados. As se crea un diagrama de bloques
eficiente que no malgasta ciclos del procesador al sondear mensajes. ste es un ejemplo de
temporizacin de ejecucin esperando un evento.
at
N

Al implementar patrones de diseo basados en temporizacin de aparicin de eventos, se puede


utilizar los mecanismos de sincronizacin de eventos para la ejecucin temporizada y control
temporizada por software. Funciones de sincronizacin y la estructura Event incluyen una funcin
de Timeout. El valor predeterminado para un Timeout es -1, esto indica una espera infinita. Con un
Timeout infinito, la ejecucin de un patrn de diseo solamente ocurre cuando un evento se
produce.

El VI del patrn de diseo (Eventos) productor/consumidor que se muestra en la figura 2-16 no


requiere funciones de temporizacin porque la sincronizacin es inherente en la ejecucin del
bucle productor y consumidor. La estructura Event en el bucle productor controla cuando el bucle
productor se ejecuta. La funcin Dequeue Element en el bucle consumidor espera hasta que un
elemento es puesto en cola, controlando as la ejecucin en el bucle consumidor. Patrones de diseo
tales como el productor/consumidor (eventos), no requieren temporizacin, debido a que su
temporizacin es controlada por eventos externos.

National Instruments | 2-21


Leccin 2 Implementando patrones de diseo

Figura 2-16. Patrn de diseo Productor/Consumidor (Eventos) con tiempo de espera indefinido

tio ts
bu en
n
tri m
is tru
Especificar un valor de Timeout permite la funcionalidad de ser ejecutado a intervalos regulares.
rd s

Por ejemplo, el patrn de diseo productor/consumidor (eventos) que se ilustra en la figura 2-17
fo l In

muestra cmo se puede ejecutar cdigo a intervalos regulares tanto en el bucle productor como en
el consumidor. En la figura 2-17, el bucle productor se ejecuta cada 100ms incluso si no han
ot a

ocurrido eventos. Cableando un valor en milisegundos a la terminal de Timeout de una estructura


N ion

Event despierta la estructura Event y ejecuta el cdigo en el caso de que el Timeout se agote. El
bucle consumer se ejecuta cada 50 ms incluso si la cola est vaca.
at
N

2-22 | ni.com
Manual de Curso LabVIEW Core 2

Figura 2-17. Caso de eventos con Timeout en patrones de diseo productor/consumidor con
ejecucin temporizada

tio ts
bu en
n
tri m
is tru
rd s

Temporizacin de control del software


fo l In

Muchas aplicaciones que crea deben ejecutar una operacin durante un tiempo especfico. Piense
en la implementacin de un patrn de diseo de mquina de estados para un sistema de adquisicin
ot a

de datos de temperatura. Si las especificaciones requieren que el sistema adquiera los datos de
N ion

temperatura durante 5 minutos, usted podra permanecer en el estado de adquisicin durante


5 minutos. Sin embargo, durante ese tiempo no puede procesar ninguna accin de la interfaz de
at

usuario como detener el VI. Para procesar acciones de la interfaz de usuario, debe implementar la
temporizacin, de modo que el VI se ejecute continuamente durante el tiempo especificado.
N

Implementar este tipo de temporizacin conlleva que la aplicacin se est ejecutando mientras
monitoriza un reloj en tiempo real.

En el curso LabVIEW Core 1 implement temporizacin de control de software para controlar el


tiempo hasta que el VI adquira el siguiente dato, como en la figura 2-18. Observe el uso del
Elapsed Time Express VI para realizar el seguimiento de un reloj.

National Instruments | 2-23


Leccin 2 Implementando patrones de diseo

Figura 2-18. Uso del Elapsed Time Express VI

tio ts
bu en
Si usa las funciones Wait (ms) o Wait Until Next ms Multiple para realizar temporizacin de
software, la ejecucin de la funcin que est temporizando no ocurrir hasta que termine la funcin

n
tri m
de espera. Estas funciones de temporizacin no son el mtodo preferido para realizar la
temporizacin de control de software, sobre todo para VIs en los que debe ejecutarse
is tru
continuamente el sistema. Un mtodo mejor para la temporizacin de control de software utiliza la
funcin Get Date/Time In Seconds para obtener el tiempo actual y realizar su seguimiento
rd s

mediante registros de desplazamiento.


fo l In

Figura 2-19. Temporizacin de software usando la funcin Get Date/Time In Seconds


ot a
N ion
at
N

La funcin Get Date/Time In Seconds, conectada al terminal izquierdo del registro de


desplazamiento, inicializa ste con la hora del sistema actual. Cada estado usa otra funcin Get
Date/Time In Seconds y compara la hora actual con la hora de inicio. Si la diferencia entre estas
dos horas es mayor o igual que el tiempo de espera, el estado terminar de ejecutarse y se ejecutar
el resto de la aplicacin.

2-24 | ni.com
Manual de Curso LabVIEW Core 2

Consejo Use siempre la funcin Get Date/Time In Seconds en lugar de la funcin Tick
Count (ms) para este tipo de comparacin, porque el valor de la funcin Tick Count (ms)
puede volver a 0 durante la ejecucin.

G. Patrn de diseo variable global funcional


A medida que contine desarrollando sus habilidades en LabVIEW e interactuando con otros
desarrolladores, aprender acerca de los patrones de diseo de otros con nombres como
Maestro/Esclavo y controlador de mensajes de cola. Algunos patrones de diseo, como el actor
Framework, estn bastante avanzados y requieren un conocimiento adicional de caractersticas de
programacin orientados a objetos en LabVIEW. Algunos patrones de diseo son componentes
muy tiles en aplicaciones ms grandes. El patrn de diseo variable global funcional es uno de
estos. Para poder entender este nuevo patrn de diseo, es bueno comprender en profundidad un
tipo de condicin de carrera llamado lectura-modificacin-escritura.

tio ts
Condiciones de carrera lectura-modificacin-escritura

bu en
Una condicin de carrera ocurre cuando la temporizacin de eventos o la programacin de tareas

n
tri m
afecta involuntariamente a un valor de salida o de datos. Las condiciones de carrera suponen un
problema comn en los programas que ejecutan varias tareas en paralelo y comparten datos entre
is tru
ellos. Piense en el ejemplo de la figura 2-20.
rd s

Figura 2-20. Ejemplo de Condicin de Carrera


fo l In
ot a
N ion
at
N

Ambos bucles modifican una variable local durante cada iteracin del bucle. Un bucle incrementa
el contador, mientras que el otro decrementa el contador. Si ejecuta este VI, el resultado esperado
despus de hacer clic en el botn Stop es que la variable Running Total es igual a Loop Count
Difference. Dado que los dos bucles estn funcionando a la misma velocidad, el valor debe ser
cero o prximo a cero. Dependiendo de cuando se detiene el VI, es posible que se vea el resultado
esperado. Sin embargo, es tambin probable que la variable Running Total no sea igual a Loop
Count Difference porque este VI contiene una condicin de carrera.

National Instruments | 2-25


Leccin 2 Implementando patrones de diseo

En un ordenador con un solo procesador, las acciones de un programa multitarea como este
ejemplo realmente suceden secuencialmente, pero LabVIEW y el sistema operativo cambian
rpidamente las tareas para que se ejecuten a la vez. La condicin de carrera de este ejemplo se
produce cuando el cambio de una tarea a la otra ocurre en un determinado momento. Observe que
ambos bucles realizan las siguientes operaciones:
Leer la variable local
Aumentar o disminuir el valor a ser ledo
Escribir el valor modificado en la variable local

Qu sucede ahora si las operaciones del bucle se han programado en este orden?:
1. El bucle 1 lee la variable local.
2. El bucle 2 lee la variable local.
3. El bucle 1 incrementa el valor ledo.

tio ts
4. El bucle 2 incrementa el valor ledo.

bu en
5. El bucle 1 escribe el valor incrementado en la variable local.

n
tri m
6. El bucle 2 escribe el valor decrementado en la variable local.
is tru
En este ejemplo, el incremento del primer bucle es sobrescrito por el bucle 2 de forma efectiva. Si
la variable local comenz con un valor cero, el valor resultante sera menos uno. Esto genera una
rd s

condicin de carrera, lo que puede causar problemas serios si se desea que el programa calculae
fo l In

una diferencia exacta.

En este ejemplo en particular, existen varias instrucciones que ocurren mientras la variable local es
ot a

leda y cuando es escrita. Por lo tanto, el VI tiene menos probabilidad de cambiar entre los bucles
N ion

en el momento equivocado. Esto explica por qu este VI se ejecuta con precisin durante cortos
periodos y slo pierde varios recuentos durante periodos ms largos.
at

Las condiciones de carrera son difciles de identificar y de depurar, porque el resultado depende
N

del orden en que el sistema operativo ejecuta tareas programadas y la temporizacin de eventos
externos. El modo en que las tareas interactan entre s y el sistema operativo, as como la
temporizacin arbitraria de los eventos externos convierten este orden en esencialmente aleatorio.
A menudo el cdigo con una condicin de carrera puede devolver el mismo resultado miles de
veces en las pruebas, pero aun as puede devolver un resultado distinto, que puede aparecer cuando
se est usando el cdigo.

Para evitar condiciones de carrera, lo mejor es seguir estas tcnicas:


Control y limitacin de recursos compartidos
Identificar y proteger secciones crticas del cdigo
Especificar el orden de ejecucin

2-26 | ni.com
Manual de Curso LabVIEW Core 2

Controlar y limitar recursos compartidos


Las condiciones de carrera son muy comunes cuando dos tareas tienen acceso tanto de lectura
como de escritura en un recurso, como en el caso del ejemplo anterior. Un recurso es cualquier
entidad compartida entre los procesos. Cuando se trata con condiciones de carrera, los recursos
compartidos ms comunes son el almacenamiento de datos, como las variables. Otros ejemplos de
recursos son archivos y referencias a recursos de hardware.

Permitir que un recurso se altere desde varias ubicaciones suele introducir la posibilidad de una
condicin de carrera. Por lo tanto, una forma ideal de evitar condiciones de carrera es minimizar
recursos compartidos y el nmero de escritores en los recursos compartidos restantes. En general,
no es perjudicial tener varios lectores y monitores para un recurso compartido. Sin embargo,
intente usar slo un escritor o controlador para un recurso compartido. La mayora de las
condiciones de carrera slo ocurren cuando un recurso tiene varios escritores.

tio ts
En el ejemplo anterior, puede reducir la dependencia de recursos compartidos, si cada bucle
mantiene su recuento localmente. A continuacin, comparta los recuentos finales tras hacer clic en

bu en
el botn Stop. Esto supone slo una nica lectura y una nica escritura en un recurso compartido
y elimina la posibilidad de una condicin de carrera. Si todos los recursos compartidos tienen slo

n
tri m
un nico escritor o controlador y el VI tiene un orden de instrucciones bien secuenciado, no habr
condiciones de carrera.
is tru
rd s

Proteccin de secciones crticas


fo l In

Una seccin crtica de cdigo es cdigo que debe actuar con coherencia en todas las circunstancias.
En los programas multitarea, una tarea puede interrumpir otra que se est ejecutando. En casi todos
ot a

los sistemas operativos modernos esto sucede constantemente. Normalmente esto no tiene efecto
N ion

en el cdigo que se ejecuta, pero cuando la tarea que interrumpe altera un recurso compartido que
la tarea interrumpida supone que es constante, ocurre una condicin de carrera.
at

Cada bucle en la figure 2-20 contiene una seccin de cdigo crtico. Si uno de los bucles
interrumpe al otro bucle mientras est ejecutando el cdigo en su seccin crtica, puede ocurrir una
N

condicin de carrera. Una forma de eliminar las condiciones de carrera es identificar y proteger las
secciones crticas del cdigo. Existen numerosas tcnicas para proteger secciones crticas. Dos de
las ms eficaces son las variables globales funcionales y los semforos.

Semforos
Los semforos son mecanismos de sincronizacin especficamente diseados para proteger
recursos y secciones crticas de cdigo. Puede evitar que las secciones crticas de cdigo se
interrumpan entre s encerrndolas entre un VI Acquire Semaphore y Release Semaphore. De
forma predeterminada, un semforo slo permite que una tarea lo adquiera simultneamente. Por
lo tanto, una vez que una de las tareas entra en una seccin crtica, las otras tareas no pueden entrar
en sus secciones crticas hasta que se complete la primera tarea. Si se hace correctamente, esto
elimina la posibilidad de una condicin de carrera.

National Instruments | 2-27


Leccin 2 Implementando patrones de diseo

Puede usar semforos para proteger las secciones crticas de cdigo mostrado en la figura 2-20.
Para eliminar la condicin de carrera, abra el semforo antes de comenzar cada ciclo. Dentro de
cada bucle, utilice el VI Acquire Semaphore justo antes de la seccin crtica y usar el VI Release
Semaphore despus de la seccin crtica. La figura 2-21 muestra una solucin a la condicin de
carrera usando semforos.
Figura 2-21. Proteccin de secciones crticas utilizando semforos

tio ts
bu en
n
tri m
is tru
Variables globales funcionales
rd s

Una forma de proteger secciones crticas es colocarlas en subVIs. Puede llamar slo a un subVI no
fo l In

reentrante desde una ubicacin a la vez. Por lo tanto, si coloca cdigo crtico en un subVI no
reentrante, evitar que otros procesos que llaman al subVI interrumpan el cdigo. Usar la
ot a

arquitectura de variables globales funcionales para proteger secciones crticas resulta


N ion

especialmente eficaz, ya que los registros de desplazamiento pueden sustituir mtodos de


almacenamiento menos protegidos como las variables compartidas globales o de tipo
single-process. Las variables globales funcionales tambin sirven para crear subVIs
at

multifuncionales que controlen todas las tareas asociadas con un recurso concreto.
N

Tras identificar cada seccin de cdigo crtico en su VI, agrupe las secciones por los recursos a los
que acceden y cree una variable global funcional para cada recurso. Las secciones crticas que
realizan distintas operaciones pueden convertirse en un comando para la variable global funcional.
Puede agrupar secciones crticas que realicen la misma operacin en un comando, reutilizando el
cdigo.

2-28 | ni.com
Manual de Curso LabVIEW Core 2

Puede utilizar variables globales funcionales para proteger secciones crticas del cdigo de la
figura 2-20. Para eliminar la condicin de carrera, sustituya las variables locales por una variable
global funcional y coloque el cdigo para incrementar el contador de la variable global funcional,
como en la figura 2-22.
Figura 2-22. Uso de variables globales funcionales para la proteccin de secciones de cdigo

tio ts
bu en
n
tri m
is tru
rd s
fo l In

Variables globales funcionales


Una variable global funcional es un VI no reentrante que utiliza registros de desplazamiento sin
ot a

inicializar para almacenar los datos globales. El VI a menudo permite acciones a realizar sobre los
N ion

datos. Cuando un VI es no reentrante, hay un espacio de datos para el VI. Por lo tanto, slo una
llamada puede ejecutar el VI en cualquier momento dado. Otras llamadas tienen que esperar su
turno para usar el VI.
at
N

Puede utilizar registros de desplazamiento sin inicializar en bucles For o While para almacenar
datos, siempre que el VI est en la memoria. El registro de desplazamiento retiene el ltimo valor
de los datos. Un bucle con un registro de desplazamiento no inicializado se conoce como una
variable global funcional. La ventaja de este mtodo frente a una variable global es que puede
controlar el acceso a los datos en el registro de desplazamiento. Adems, la variable global
funcional elimina la posibilidad de condiciones de carrera, porque slo una instancia de una
variable global funcional a la vez, puede ser cargada en la memoria. La forma general de un VI de
variable global funcional incluye una estructura Case y un registro de desplazamiento sin
inicializar con un bucle While de una sola iteracin, como en la figura 2-23.

National Instruments | 2-29


Leccin 2 Implementando patrones de diseo

Figura 2-23. Formato de variables globales funcionales

Functional Global Variable Code

1 Registro de desplazamiento sin inicializar

Una variable global funcional normalmente tiene un parmetro de entrada action que especifica

tio ts
qu tarea realiza el VI. El VI usa un registro de desplazamiento sin inicializar en un bucle While

bu en
para retener el resultado de la operacin. La figura 2-24 muestra una variable global funcional
simple con funcionalidad set y get.

n
tri m
Figura 2-24. Variable global funcional con funcionalidad set y get
is tru
rd s
fo l In
ot a
N ion
at
N

En este ejemplo, los datos pasan al VI y se almacena en el registro de desplazamiento si el tipo de


datos enumerado est configurado en Set. Los datos se capturan desde el registro de
desplazamiento si el tipo de datos enumerado se configura en Get.

Consejo Antes de utilizar una variable local o global, asegrese de que una variable
global funcional no habra funcionado en su lugar.

Aunque puede usar variables globales funcionales para implementar variables globales simples,
como en el ejemplo anterior, resultan especialmente tiles para implementar estructuras de datos
ms complejas, como una pila o un bfer de puesta en cola. Tambin puede usar variables globales

2-30 | ni.com
Manual de Curso LabVIEW Core 2

funcionales para proteger el acceso a recursos globales, como archivos, instrumentos y dispositivos
de adquisicin de datos, que no puede representarse con una variable global.

Uso de variables globales funcionales para la temporizacin


Una aplicacin potente de las variables globales funcionales es realizar la temporizacin en su VI.
Muchos VIs que realizan medicin y automatizacin requieren alguna forma de temporizacin. A
menudo un instrumento o dispositivo de hardware necesita tiempo para inicializarse. Debe crear
temporizacin explcita en su VI para tener en cuenta el tiempo fsico requerido para inicializar un
sistema. Usted puede crear una variable global funcional que mida el tiempo transcurrido entre
cada vez que se llama al VI, como en la figura 2-25.
Figura 2-25. Variable global funcional Elapsed Time

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at

El caso Elapsed Time obtiene la fecha y hora actuales en segundos y lo resta del tiempo que est
N

almacenado en el registro de desplazamiento. El caso Reset Time inicializa la variable global


funcional con un valor de tiempo conocido.

National Instruments | 2-31


N
at
N ion
ot a
fo l In
rd s
is tru
tri m
bu en
tio ts
n
Manual de Curso LabVIEW Core 2

Autorrevisin: Cuestionario
1. Cul de los siguientes elementos son motivos para utilizar un patrn de diseo de mltiples
bucles?
a. Ejecutar varias tareas a la vez
b. Ejecutar distintos estados en una mquina de estados
c. Ejecutar tareas a distintas velocidades
d. Ejecutar el cdigo de arranque, el bucle principal y el cdigo de cierre

2. Cules de los siguientes son ejemplos de cdigo gestor de errores?


a. Mostrar un cuadro de dilogo que se utiliza para corregir un VI roto.

tio ts
b. Genera un cdigo de error definido por el usuario

bu en
c. Muestra un cuadro de dilogo cuando se produce un error

n
tri m
d. Transicin de un estado de la mquina de estados a un estado de apagado cuando se produce
un error
is tru
rd s
fo l In

3. Cul es el valor de tiempo de espera predeterminado de una estructura Event?


a. 0
ot a

b. 100 ms
N ion

c. Ningn tiempo de espera


d. El valor de entrada de la funcin Wait (ms) que exista en el mismo bucle que la estructura
at

Event
N

National Instruments | 2-33


N
at
N ion
ot a
fo l In
rd s
is tru
tri m
bu en
tio ts
n
Manual de Curso LabVIEW Core 2

Autorrevisin: Respuestas
1. Cul de los siguientes elementos son motivos para utilizar un patrn de diseo de mltiples
bucles?
a. Ejecutar varias tareas a la vez
b. Ejecutar distintos estados en una mquina de estados
c. Ejecutar tareas a distintas velocidades
d. Ejecutar el cdigo de arranque, el bucle principal y el cdigo de cierre

2. Cules de los siguientes son ejemplos de cdigo gestor de errores?


a. Mostrar un cuadro de dilogo que se utiliza para corregir un VI roto.

tio ts
b. Genera un cdigo de error definido por el usuario

bu en
c. Muestra un cuadro de dilogo cuando se produce un error

n
tri m
d. Transicin de un estado de la mquina de estados a un estado de apagado cuando se
produce un error
is tru
rd s
fo l In

3. Cul es el valor de tiempo de espera predeterminado de una estructura Event?


a. 0
ot a

b. 100 ms
N ion

c. Ningn tiempo de espera


d. El valor de entrada de la funcin Wait (ms) que exista en el mismo bucle que la estructura
at

Event
N

National Instruments | 2-35


Leccin 2 Implementando patrones de diseo

Notas

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

2-36 | ni.com
Control de la interfaz de usuario
3
Al escribir programas, a menudo debe cambiar los atributos de los objetos del panel frontal
programticamente. Por ejemplo, quiz desee hacer un objeto invisible hasta cierto punto de la
ejecucin del programa. En LabVIEW, puede utilizar el VI Server para acceder a las propiedades
y mtodos de los objetos del panel frontal. Esta leccin explica el VI Server, Nodos de Propiedad,
referencias de control y Nodos de Invocacin.

Temas
A. Arquitectura del VI Server

tio ts
B. Nodos de Propiedad

bu en
C. Nodos de Invocacin

n
tri m
D. Referencias de control
is tru
rd s
fo l In
ot a
N ion
at
N

National Instruments | 3-1


Leccin 3 Control de la interfaz de usuario

A. Arquitectura del VI Server


El VI Server es una tecnologa independiente de plataforma orientada a objetos que ofrece acceso
programtico a LabVIEW y a aplicaciones de LabVIEW. VI Server realiza muchas funciones; sin
embargo, esta leccin se concentra en el uso del VI Server para controlar objetos del panel frontal
y editar las propiedades de un VI y de LabVIEW. Para entender cmo usar el VI Server, es til
entender la terminologa asociada a l.

Terminologa orientada a objetos


La programacin orientada a objetos se basa en objetos. Un objeto es un miembro de una clase.
Una clase define lo que puede hacer un objeto, qu operaciones puede realizar (mtodos) y qu
propiedades tiene, como color, tamao, etc.

Los objetos pueden tener mtodos y propiedades. Los mtodos realizan una operacin, como

tio ts
reinicializar el objeto a su valor predeterminado. Las propiedades son los atributos de un objeto.

bu en
Las propiedades de un objeto pueden ser su tamao, color, visibilidad, etc.

n
Clases de control
tri m
is tru
Los objetos del panel frontal de LabVIEW heredan propiedades y mtodos de una clase. Cuando
crea un control Stop, es un objeto de la clase booleana y tiene propiedades y mtodos asociados
con esa clase, como en la figura 3-1.
rd s
fo l In

Figura 3-1. Ejemplo de clase booleana


ot a

Control Class
Control
Example Property: Visible
N ion

Example Method: Reinitialize to Default


at

Boolean Sub-Class Array Sub-Class


Boolean Array
N

Example Property: Boolean Text Example Property: Number of Rows

Stop Object
Stop
Visible: Yes
Reinitialize to Default: No
Boolean Text: Stop

Clase VI
Los controles no son los nicos objetos de LabVIEW que pertenecen a una clase. Un VI pertenece
a la clase VI y tiene sus propias propiedades y mtodos asociados a ella. Por ejemplo, puede usar
los mtodos de clase VI para abortar un VI, para ajustar la posicin de la ventana del panel frontal
y para obtener una imagen del diagrama de bloques. Puede usar las propiedades de la clase VI para
cambiar el ttulo de una ventana del panel frontal, para recuperar el tamao del diagrama de bloques
y para ocultar el botn Abort.

3-2 | ni.com
Manual de Curso LabVIEW Core 2

B. Nodos de Propiedad
Los Nodos de Propiedad acceden a las propiedades de un objeto. En algunas aplicaciones quiz
desee modificar programticamente el aspecto de objetos del panel frontal como respuesta a ciertas
entradas. Por ejemplo, si un usuario introduce una contrasea no vlida, quiz desee que parpadee
un LED rojo. Otro ejemplo es cambiar el color de un trazo en un grfico tipo chart. Cuando los
puntos de datos superan cierto valor, quiz desee mostrar un trazo rojo en lugar de uno verde. Los
Nodos de Propiedad permiten realizar estas modificaciones programticamente. Tambin puede
usar Nodos de Propiedad para cambiar el tamao de objetos de paneles, ocultar partes del panel
frontal, aadir cursores a grficos, etc.

Los Nodos de Propiedad en LabVIEW son muy potentes y tienen muchos usos. Consulte la Ayuda
de LabVIEW para obtener informacin adicional acerca de Nodos de Propiedad.

tio ts
Creacin de Nodos de Propiedad

bu en
Cuando cree una propiedad desde un objeto del panel frontal haciendo clic con el botn derecho
en el objeto, seleccionando CreateProperty Node y seleccionando una propiedad del men

n
tri m
contextual, LabVIEW crear un Nodo de Propiedad en el diagrama de bloques que est
implcitamente vinculado al objeto del panel frontal. Si el objeto tiene una etiqueta, el Nodo de
is tru
Propiedad tendr la misma etiqueta. Puede cambiar la etiqueta tras crear el nodo. Puede crear
varios Nodos de Propiedad para el mismo objeto del panel frontal.
rd s
fo l In

Uso de Nodos de Propiedad


Cuando crea un Nodo de Propiedad, al principio tiene un terminal que representa una propiedad
ot a

que puede modificar para el objeto correspondiente del panel frontal. Si usa este terminal en el
N ion

Nodo de Propiedad, puede set (escribir) la propiedad o get (leer) el estado actual de esa propiedad.
at

Por ejemplo, si crea un Nodo de Propiedad para un control numrico digital usando la propiedad
Visible, aparecer una pequea flecha a la derecha del terminal Property Node, indicando que est
N

leyendo el valor de esa propiedad. Puede cambiar la accin a escribir haciendo clic con el botn
derecho en el terminal y seleccionando Change to Write en el men contextual. Si cablea un valor
booleano False al terminal de la propiedad Visible, el control numrico desaparecer del panel
frontal cuando el Nodo de Propiedad reciba los datos. Si cablea un valor booleano True, el control
reaparecer.
Figura 3-2. Uso de Nodos de Propiedad

Para obtener informacin de la propiedad, haga clic con el botn derecho en el nodo y seleccione
Change All to Read en el men contextual. Para configurar informacin de la propiedad, haga clic
con el botn derecho en el nodo y seleccione Change All to Write en el men contextual. Si una
propiedad es de slo lectura, Change to Write se atenuar en el men contextual. Si la flecha de
direccin del Nodo de Propiedad apunta a la derecha, est obteniendo el valor de la propiedad. Si

National Instruments | 3-3


Leccin 3 Control de la interfaz de usuario

la flecha de direccin del Nodo de Propiedad apunta a la izquierda, est configurando el valor de
la propiedad. Si el Nodo de Propiedad de la figura 3-2 se configura en Read, cuando se ejecute
producir un valor True si el control es visible o False si es invisible.

Consejo Algunas propiedades son slo de lectura, como la propiedad Label, o slo de
escritura, como la propiedad Value (Signaling).

Para aadir terminales al nodo, haga clic con el botn derecho en la zona blanca del nodo y
seleccione Add Element en el men contextual o use la herramienta de posicionamiento para
cambiar el tamao del nodo. A continuacin, puede asociar cada terminal Property Node con otra
propiedad desde su men contextual.

Consejo Los Nodos de Propiedad ejecutan cada terminal en orden de arriba a abajo.

tio ts
Algunas propiedades usan clusters. Estos clusters contienen varias propiedades a las que puede
acceder usando las funciones del cluster. Para escribir en estas propiedades como grupo necesita la

bu en
funcin Bundle y para leer en estas propiedades se necesita la funcin Unbundle. Para acceder a

n
las propiedades unidas, seleccione All Elements en el men contextual. Por ejemplo, puede
tri m
acceder a todos los elementos de la propiedad Position seleccionando PropertiesPositionAll
is tru
Elements en el men contextual.

Sin embargo, puede acceder a los elementos del cluster como propiedades individuales, como en
rd s

la figura 3-3.
fo l In

Figura 3-3. Propiedades que usan clusters


ot a
N ion
at
N

C. Nodos de Invocacin
Los Nodos de Invocacin acceden a los mtodos de un objeto.

Use el Nodo de Invocacin para realizar acciones o mtodos en una aplicacin o VI. A diferencia
del Nodo de Propiedad, un solo Nodo de Invocacin ejecuta nicamente un mtodo o una
aplicacin o VI. Seleccione un mtodo utilizando la herramienta de operaciones para hacer clic en
el terminal del mtodo o haciendo clic con el botn derecho en la zona blanca del nodo y
seleccionando Methods en el men contextual. Tambin puede crear un Nodo de Invocacin
implcitamente vinculado haciendo clic con el botn derecho en un objeto del panel frontal,
seleccionado CreateInvoke Node y seleccionando un mtodo del men contextual.

El nombre del mtodo es siempre el primer terminal de la lista de parmetros del Nodo de
Invocacin. Si el mtodo devuelve un valor, el terminal del mtodo muestra el valor devuelto. De
lo contrario, el terminal del mtodo no tendr valor.

3-4 | ni.com
Manual de Curso LabVIEW Core 2

El Nodo de Invocacin muestra los parmetros de arriba a abajo con el nombre del mtodo en la
parte superior y los parmetros opcionales, que estn atenuados, en la parte inferior.

Mtodos de ejemplo
Un ejemplo de mtodo comn a todos los controles es Reinitialize to Default. Use este mtodo para
reinicializar un control a su valor predeterminado en algn punto del VI. La clase VI tiene un
mtodo similar llamado Reinitialize All to Default.

La figura 3-4 es un ejemplo de mtodo asociado con la clase Waveform Graph. Este mtodo
exporta la imagen del grfico waveform graph al Portapapeles o a un archivo.
Figura 3-4. Nodo de Invocacin para el mtodo Export Image

tio ts
bu en
n
tri m
is tru
D. Referencias de control
rd s

Un Nodo de Propiedad creado desde el objeto del panel frontal o el terminal del diagrama de
fo l In

bloques es un Nodo de Propiedad vinculado implcitamente. Esto significa que el Nodo de


Propiedad est vinculado al objeto del panel frontal. Qu ocurre si usted debe colocar los Property
ot a

Nodes en un subVI? Entonces los objetos ya no se encuentran en el panel frontal del VI que
N ion

contiene los Property Nodes. En este caso, necesita un Nodo de Propiedad explcitamente
vinculado. Un Nodo de Propiedad explcitamente vinculado se crea cableando una referencia a un
Nodo de Propiedad genrico.
at
N

Si est creando un VI que contiene varios Nodos de Propiedad o si est accediendo a la misma
propiedad para varios controles e indicadores distintos, puede colocar el Nodo de Propiedad en un
subVI y usar referencias de control para acceder a ese nodo. Una referencia de control es una
referencia a un objeto concreto del panel frontal.

Esta seccin muestra una forma de usar referencias de control. Consulte el tema Controlling Front
Panel Objects de la Ayuda de LabVIEW para obtener informacin adicional acerca de las
referencias de control.

National Instruments | 3-5


Leccin 3 Control de la interfaz de usuario

Creacin de un SubVI con Nodos de Propiedad


Como en la figura 3-5, el modo ms sencillo de crear Nodos de Propiedad explcitamente
vinculados es completar los siguientes pasos:
1. Cree el VI.
2. Seleccione la parte del diagrama de bloques que se encuentre en el subVI, como se muestra en
la primera parte de la figura 3-5.
3. Seleccione EditCreate SubVI. LabVIEW crea automticamente las referencias de control
necesarias para el subVI.
4. Personalice y guarde el subVI. Como puede ver en la segunda parte de la figura 3-5, el subVI
usa el icono predeterminado.
Figura 3-5. Uso de EditCreate SubVI para crear referencias de control

tio ts
bu en
n
tri m
is tru
Objetos seleccionados para crear el subVI EditCreate SubVI utilizado
rd s

La figura 3-6 muestra el subVI creado. Observe que los controles Control Refnum del panel frontal
fo l In

se han creado y conectado a un Nodo de Propiedad del diagrama de bloques.


Figura 3-6. SubVI creado usando EditCreate SubVI
ot a
N ion
at
N

Panel frontal del subVI creado Diagrama de bloques del subVI creado

Nota Una estrella roja en el control Control Reference indica que el refnum es de tipo
estricto. Consulte la seccin Strictly Typed and Weakly Typed Control Refnums del tema
Controlling Front Panel Objects de la Ayuda de LabVIEW para obtener informacin
adicional acerca de las referencias de control de tipo dbil y estricto.

3-6 | ni.com
Manual de Curso LabVIEW Core 2

Creacin de referencias de control


Para crear una referencia de control para un objeto del panel frontal, haga clic con el botn derecho
en el objeto o en su terminal del diagrama de bloques y seleccione CreateReference en el men
contextual.

Puede cablear esta referencia de control a un Nodo de Propiedad genrico. Puede pasar la
referencia del control a un subVI usando un terminal de refnum de control.

Uso de referencias de control


Configurar propiedades con una referencia de control resulta til para configurar la misma
propiedad para varios controles. Algunas propiedades se aplican a todas las clases de controles,
como la propiedad Disabled. Algunas propiedades slo se aplican a ciertas clases de control, como
la propiedad Lock Boolean Text in Center.

tio ts
El siguiente ejemplo muestra cmo crear un VI que use una referencia de control en el subVI para

bu en
configurar el estado Enable/Disable de un control en el panel frontal del VI principal.

n
Figura 3-7. Referencias de control
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

1 2

1 VI principal 2 SubVI

National Instruments | 3-7


Leccin 3 Control de la interfaz de usuario

El VI principal enva una referencia para el control numrico digital al subVI junto con un valor
cero, uno o dos desde el control enumerado. El subVI recibe la referencia mediante el Ctl Refnum
en su ventana del panel frontal. A continuacin, la referencia se pasa al Nodo de Propiedad. Como
el Nodo de Propiedad ahora se vincula con el control numrico del VI principal, el Nodo de
Propiedad puede cambiar las propiedades de ese control. En este caso, el Nodo de Propiedad
manipula el estado enabled/disabled.

Observe el aspecto del Nodo de Propiedad en el diagrama de bloques. No puede seleccionar una
propiedad en un Nodo de Propiedad genrico hasta que se elija la clase. La clase se elige cableando
una referencia al Nodo de Propiedad. ste es un ejemplo de un Nodo de Propiedad explcitamente
vinculado. No se vincula a un control hasta que el VI se est ejecutando y se pase una referencia al
Nodo de Propiedad. La ventaja de este tipo de Nodo de Propiedad es su naturaleza genrica. Como
no tienen vnculo explcito a un control, puede reutilizarse para varios controles. El Nodo de
Propiedad genrico est disponible en la paleta de Funciones.

tio ts
Seleccin de la Clase VI Server

bu en
Cuando aade un Control Refnum al panel frontal de un subVI, a continuacin debe especificar la
VI Server Class del control. Esto especifica el tipo de referencias de control que aceptar el subVI.

n
tri m
En el ejemplo anterior, se seleccion Control como tipo de VI Server Class, como en la figura 3-7.
is tru
Esto permite que el VI acepte una referencia a cualquier tipo de control del panel frontal.

Sin embargo, puede especificar una clase ms concreta para el refnum de manera que el subVI sea
rd s

ms restrictivo. Por ejemplo, puede seleccionar Digital como la clase. As, el subVI slo podr
fo l In

aceptar referencias a controles numricos de la clase Digital. Si selecciona una clase ms genrica
para un refnum de control, permitir que acepte un rango de objetos mayor, pero limitar las
ot a

propiedades disponibles que se aplican a todos los objetos que pueda aceptar el Nodo de Propiedad.
N ion

Para seleccionar una clase especfica de control, haga clic con el botn derecho en el control y
seleccione Select VI Server ClassGenericGObjectControl en el men contextual. A
at

continuacin, seleccione la clase concreta de control.


N

3-8 | ni.com
Manual de Curso LabVIEW Core 2

Creacin de propiedades y mtodos con la ventana Class


Browser
Puede utilizar la ventana Class Browser para seleccionar una librera de objetos y crear una nueva
propiedad o mtodo.

Complete los siguientes pasos para crear una nueva propiedad o mtodo utilizando la ventana Class
Browser.
1. Seleccione ViewClass Browser para mostrar la ventana Class Browser.

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at

2. En el men desplegable de la librera Object, seleccione una librera.


N

3. Seleccione una clase en el men desplegable Class. Use los siguientes botones para navegar
por las clases.
Haga clic en el botn Select View para alternar entre una vista alfabtica y una vista
jerrquica de los elementos del men desplegable Class y la lista Properties y mtodos.

Haga clic en el botn Search para lanzar el cuadro de dilogo Class Browser Search.

National Instruments | 3-9


Leccin 3 Control de la interfaz de usuario

4. En la lista Properties and Methods de la ventana Class Browser, seleccione una propiedad o
mtodo. La propiedad o mtodo que seleccione aparecer en el cuadro Selected property or
method.
5. Haga clic en el botn Create o Create Write para aadir un nodo con la propiedad o mtodo
seleccionados al cursor del ratn y aadir el nodo al diagrama de bloques. El botn Create crea
una propiedad para lectura o un mtodo. Este botn se atena cuando selecciona una propiedad
de slo escritura. Para crear una propiedad para escritura, haga clic en el botn Create Write.
Este botn se atena cuando selecciona un mtodo o una propiedad de slo lectura. Tambin
puede arrastrar una propiedad o mtodo desde la lista Properties and Methods directamente al
diagrama de bloques.
6. Repita los pasos 2 al 5 para otras propiedades o mtodos que desee crear y aadir al diagrama
de bloques.

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

3-10 | ni.com
Manual de Curso LabVIEW Core 2

Autorrevisin: Cuestionario
1. Para cada uno de estos elementos, determine si funcionan en una clase VI o en una clase
Control.
Format and Precision
Visible
Reinitialize to Default Value
Show Tool Bar

2. Usted tiene un refnum de control numrico, se muestra a la izquierda, en un subVI. Cul de


las siguientes referencias de control podra cablear al terminal de refnum de control del subVI?

tio ts
(varias respuestas)

bu en
n
tri m
is tru
a. Referencia de control de un mando
rd s

b. Referencia de control de un array numrico


fo l In

c. Referencia de control de un indicador de termmetro


d. Referencia de control de un LED
ot a
N ion
at
N

National Instruments | 3-11


N
at
N ion
ot a
fo l In
rd s
is tru
tri m
bu en
tio ts
n
Manual de Curso LabVIEW Core 2

Autorrevisin: Respuestas
1. Para cada uno de estos elementos, determine si funcionan en una clase VI o en una clase
Control.
Format and Precision: Control
Visible: Control
Reinitialize to Default Value: Control
Show Tool Bar: VI

2. Usted tiene un refnum de control numrico, se muestra a la izquierda, en un subVI. Qu


referencias de control podra cablear al terminal de refnum de control del subVI?

tio ts
bu en
n
tri m
is tru
a. Referencia de control de un mando
b. Referencia de control de un array numrico
rd s

c. Referencia de control de un indicador de termmetro


fo l In

d. Referencia de control de un LED


ot a
N ion
at
N

National Instruments | 3-13


Leccin 3 Control de la interfaz de usuario

Notas

tio ts
bu en
n
tri m
is tru
rd s
fo l In
ot a
N ion
at
N

3-14 | ni.com

También podría gustarte