Implementación de Arquitecturas de Programación en NI LabVIEW <Name> Ingeniero de Aplicaciones National Instruments
Qué es un patrón de diseño? Definición: Una solución bien establecida para un problema común Plantilla o arquitectura basada en LabVIEW Altamente conocida y aceptada Fácil de reconocer Por qué debo usar uno? Ahorra tiempo y mejora la longevidad, escalabilidad y legibilidad de un código. 3
4
Beneficios de Usar un Patrón de Diseño Simplifica el proceso de desarrollo Los desarrolladores puede entender fácilmente un código No es necesario reinventar la rueda Proveen soluciones definidas para problemas comunes Confiabilidad Muchas de ellas han sido utilizadas por años son están probadas Comparte o utiliza un código creado en la comunidad de desarrolladores y ahorra tiempo y esfuerzo. 5
El Comienzo: Cómo Elijo un Patrón de Diseño? Identificar el aspecto más importante de su aplicación: Procesos que requieren disociación Código limpio y fácil de leer Componentes de funciones criticas Seleccione una plantilla base con potencial para mejorar. 6
Máquina de Estados Necesito ejecutar una secuencia de eventos, pero el orden esta determinado de manera interactiva.
Cómo funciona Estructura Case contiene un caso para cada estado Código de transición determina el siguiente estado en base a los resultados de la ejecución del paso Step Execution FIRST STATE Shift registers usados para llevar el estado Transition Code FIRST STATE NEXT STATE 8
Máquina Expendedora con NI LabVIEW money deposited WAITING INITIALIZING EXITING DISTRIBUTING CHANGE return change pressed deposited <.50 cents ACCEPTING CHANGE deposited >=.50 cents VENDING 9
Máquina Expendedora con NI LabVIEW money deposited WAITING INITIALIZING EXITING DISTRIBUTING CHANGE return change pressed deposited <.50 cents ACCEPTING CHANGE deposited >=.50 cents VENDING 10
Máquina Expendedora con NI LabVIEW money deposited WAITING INITIALIZING EXITING DISTRIBUTING CHANGE return change pressed deposited <.50 cents ACCEPTING CHANGE deposited >=.50 cents VENDING 11
Ejercicio 1: Máquina Expendedora con NI LabVIEW money deposited WAITING INITIALIZING EXITING DISTRIBUTING CHANGE return change pressed deposited <.50 cents ACCEPTING CHANGE deposited >=.50 cents VENDING 12
Opciones de Código de Transición Step Execution Step Execution Step Execution 13
Ejercicio 2: Agregar Lógica de Transición al Nuevo Estado INITIALIZING WAITING money deposited ACCEPTING CHANGE EXITING DISTRIBUTING CHANGE return change pressed soda button pressed ACCEPTING SODA SELECTION deposited >=.50 cents deposited <.50 cents VENDING 14
Interfaz de Usuarios Basada en Eventos Estoy sondeando acciones del usuario en la interfaz, lo cual hace más lenta mi aplicación y en ocasiones no logro detectar esas acciones.
Cómo funciona 1. El SO transmite los eventos (mouse click, teclado) hacia las aplicaciones 2. Estructura de eventos captura los eventos registrados y ejecuta el caso apropiado 3. Estructura eventos regresa información del evento al caso 4. Estructura eventos almacena en una cola los eventos que ocurran mientras esta ocupada en otro caso 16
Ejercicio 3: Máquina Expendedora con Programación Basada en Eventos 17
Recomendaciones Casos de Uso UI: Conserva el uso del CPU UI: Asegura que no se perderá un evento Dirigir procesos de esclavos Consideraciones Estructura de eventos elimina el determinismo Evite colocar 2 estructuras de eventos en un ciclo while Recuerde leer la terminal de control boleano en el caso configurado para ese cambio de valor (value change) 18
Productor/Consumidor Tengo dos procesos que necesitan ejecutarse al mismo tiempo. Necesito asegurarme que uno de ellos, no haga más lento al otro.
Cómo funciona Ciclo maestro indica a uno o mas esclavos cuando pueden ejecutarse Permite ejecución asíncrona de ciclos La independencia de datos rompe el flujo de datos y permite el multithreading Desliga los procesos Thread 1 Thread 2 Thread 3 20
Ejercicio 4: Máquina Expendedora con Arquitectura de Programación Productor / Consumidor 21
Preguntas? <NAME> Ingeniero de Aplicaciones National Instruments