Javier Javier Gamo Aranda Departamento de Electr´onica onica
´ UNIVERSIDAD DE ALCALA
´ DEPARTAMENTO DE ELECTR ONICA
´ UNIVERSIDAD DE ALCAL A
Escuela Polit´ ecnica
LABWINDOWS/CVI:
— Producto de national
instrument
(www.ni.com)
— Entorno de integrado de desarrollo para programadores — Orientado para aplicaciones de adquisici´ on de datos y control de instrumentos — Compatible ANSI C ⇒ gran flexibilidad
Caracter´ısticas generales: — Desarrollo interactivo de programas — Librer´ıas de funciones — Herramientas software para adquisici´ on, an´alisis y presentaci´on de datos Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
2
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
Estructura de un programa en LABWINDOWS/CVI: 1. GUI (Interfaz Gr´ afico de Usuario) ⇒ User Interface Editor 2. Programa de control ⇒ Coordinaci´on adquisici´on + an´alisis + GUI 3. Adquisici´ o n de datos ⇒ Bus externo (GPIB, VXI,...) / tarjeta adquisici´on alisis de datos ⇒ Librer´ıas ad hoc 4. An´
Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
3
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
Entorno LABWINDOWS/CVI: Ventana Project:
Ventana Project (*.prj)
Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
4
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
Entorno LABWINDOWS/CVI: Ventana Source:
Ventana Source (.c) — C´odigo compatible ANSI C editable por el usuario — Herramientas de generaci´on autom´atica de c´odigo! — Utilidades de edici´on & depuraci´on de c´odigo
Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
5
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
Ejemplo 1: Generaci´ on aleatoria de n´ umeros 1. Abrir \tutorial\sample1.prj 2. Ejecutar proyecto (Run → Run project)
EJERCICIO 1: Modificar sample1.c de forma que: 1. Represente gr´aficamente los datos (pista: usar Function Panel YGraphPopup) 2. Calcule e imprima en Standard Input/Output la media de los n´umeros (pista: usar Function Panel Mean) Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
6
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
´ EJERCICIO 1: SOLUCION
— Code ⇒ Set Target File (sample1.c) + Insert Function Call
Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
7
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
´ EJERCICIO 1 (cont.): SOLUCION #include #include #include int i = 0, err; double mean_value; double datapoints[100]; int main(int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) /* needed if linking executable in external compiler; harmless otherwise */ return (-1); /* out of memory */ for (i = 0 ; i < 100 ; i++) { datapoints[i] = rand()/32768.0; printf ("%d \t %f\n", i, datapoints[i]); } YGraphPopup ("random data", datapoints, 100, VAL_DOUBLE); err = Mean (datapoints, 100, &mean_value); printf("Mean = \t %f \n", mean_value); return 0; }
Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
8
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
Entorno LABWINDOWS/CVI: User Interface Editor (.uir) — Construcci´on de GUIs para controlar el flujo del programa y mostrar resultados
EJERCICIO 2: Adquisici´ on y representaci´ on de una forma de onda
1. Project Window: File ⇒ Open User Interface (*.uir) ⇒ template.uir 2. UIR Window: Create ⇒ Command Button⇒ Adquirir , Salir 3. UIR Window: Create ⇒ Graph Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
9
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
User Interface Editor: edici´ on propiedades
— Callback Function: ⇒ AcquireData (a rellenar m´as tarde) — File ⇒ Save As (ejemplo2.uir) — Preview ⇒ User Interface Header ⇒ ejemplo2.h, generado autom´aticamente — Code ⇒ Preferences ⇒ Default Control Events ⇒ EVENT COMMIT, EVEN RIGHT CLICK
— Code ⇒ Generate All Code ⇒ panelHandle Javier Gamo Aranda
Introducci´ on a LabWindows/CVI
10
´ DEPARTAMENTO DE ELECTR ONICA
Escuela Polit´ ecnica
´ UNIVERSIDAD DE ALCAL A
User Interface Editor: adici´ on c´ odigo para AcquireData — Declarar variables: int i; double datapoints[100] — case: EVENT COMMIT ⇒ Edit ⇒ Insert Construct ⇒ For Loop... i=0, i
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.