Usuario:984 M17214

De Wikifab

Tarea Nº 1

Para comenzar se construye la interfaz visual del usuario, por medio de la cual se realizaran las gráficas de la función Senosoidal con las distintas combinaciones de ruido añadido.

1er - Paso Creación de la Interfaz Gráfica

Definimos un proyecto nuevo mediante el comando

- "New Proyect"

Seguidamente, en la pestaña de "File", hacemos clic en la opción:

- "User Interface"

Una vez realizado esto, observamos el panel principal en blanco, al cual le añadiremos los diferentes controles que nos permita la interfaz. Para este caso se utilizaron las siguientes familias:

-Numéricos -Numéricos (Asignación de Color) -Command Buttons -Graph -Text

Haciendo doble clic sobre ellos se accede a las propiedades de cada uno con la finalidad de cambiar desde la fuente y estilo de las letras, el color, los límites máximos y mínimos de entras hasta el tipo de data a ingresar.

A continuación se presenta el esquema de la interfaz gráfica. Imagen:Imagen Nº1.jpg

Una vez realizado el diseño final de la interfaz, procedemos a generar el código

2do Paso Creación del Código

Utilizando la opción"Code" de la barra de harramientas, hacemos clic en:

-"Generate"

De esta forma generamos el código del programa. Cada uno de los controles que hemos utilizado en el diseño de la interfaz tendrá su propio apartado en el código con su propia función de llamada.

Ejemplo 1:

  1. include <analysis.h>
  2. include <cvirte.h>
  3. include <userint.h>
  4. include "Tarea Nº1 - M17214.h"

static int panelHandle;

//Definimos las variables

// El valor double indica que se tratará de un valor decimal

// Se utiliza el comando double seguido del nombre de la función.

double AmplitudSeno; double Ciclos; double FaseSeno; double AmplitudRuido; int COLORNUM;

// Definimos dos vectores de 1000 elementos, para ello utilizamos el [],

double Seno[1000]; double Ruido[1000]; double SenoRuidoso[1000];

int i;

int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "Tarea Nº1 - M17214.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0; }

int CVICALLBACK Panelhandle (int panel, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_GOT_FOCUS:

break; case EVENT_LOST_FOCUS:

break; case EVENT_CLOSE:

break; } return 0; }

3er Paso Obtención de Variables

Utilizando la función "GetCtrlVal" obtenemos los valores de cada uno de los controladores utilizados en la interfaz. Para ello lo programamos directamente dentro del Callback del controlador del Botón de graficar.

Ejemplo 2:

int CVICALLBACK Call_Graficar (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT:

// Le indicamos al programa que tome los valores de los controladores ubicados en la UI

//Para ello utilizamos la función "GetCtrlVal" que permite obtene el valor del controlador, siguiendo los argumentos siguientes: // (Panel de referencia guardado en la memoria, ID del controlador, Nombre de la Variable)

// Amplitud del Seno GetCtrlVal (panelHandle, PANEL_AmplitudSeno, &AmplitudSeno);

// Ciclos del Seno GetCtrlVal (panelHandle, PANEL_Ciclos, &Ciclos);

// Angulo de Fase del Seno GetCtrlVal (panelHandle, PANEL_FaseSeno, &FaseSeno);

//Amplitud del Ruido GetCtrlVal (panelHandle, PANEL_AmplitudRuido, &AmplitudRuido);

//Color de la Gráfica GetCtrlVal (panelHandle, PANEL_COLORNUM, &COLORNUM);

// Escribimos la función del Seno //Utilizando la función "SinePattern", cuyos argumentos de entrada son: //(Nº de elementos para generar el seno, Amplitud Max, Angulo Incial de Desfase, Ciclos,Vector donde se guardan los puntos del Seno)

4To Paso Evaluación del Seno y el Ruido

Utilizando las funciones "SinePattern" y "WhiteNoise", se general los valores del Seno y el Ruido evaluados para 1000 puntos.

Dichos valores se guardara posteriormente en un vector de tipo double (permite guardar decimales).

Ejemplo 3:

inePattern (1000, AmplitudSeno, FaseSeno, Ciclos, Seno);

// Definimos el Ruido que se le añadirá a la señal //Utilizamos la función "WhiteNoise", cuyos argumentos son: //(Nº de elementos para generar el ruido, Amplitud Max, Semilla de Inicio ,Vector donde se guardan los puntos del Ruido) // La semilla lo que hace es generar una secuencia de numeros aleatorios, que dependiendo del valor puede ser: // <0 Toma la misma frecuencia para cada iteración // >0 Genera una nueva frecuencia en cada iteración

WhiteNoise (1000, AmplitudRuido, -1, Ruido);

//Realizamos un ciclo for, con el objetivo de calcular el Seno de forma iterativa

5To Paso Definición del ciclo for

Se define un ciclo "for", mediante el establecimiento de una variable que hará las veces de contador comenzando desde 0 hasta 999.

Para cada iteración, el valor de la amplitud del Seno se le sumará el valor de la amplitud del Ruido, de esta forma se obtendrán las gráficas con distorsión.

Ejemplo 4:

for (i=0; i<=999; i++) { SenoRuidoso[i]=Seno[i]+Ruido[i]; //Para cada iteración vamos air sumando cada una de las componentes de los dos vectores el del Seno //con la del SenoRuidoso }

// Ahora procedemos a gráficar las curvas del Seno

PlotY (panelHandle, PANEL_GraficaSeno, SenoRuidoso, 1000, VAL_DOUBLE, VAL_THIN_LINE, VAL_NO_POINT, VAL_SOLID, 1, COLORNUM);

break; } return 0

6To Paso Gráfica

Se utilizo, la función "PlotY", además, de la función "DeleteGraphPlot" para realizar la gráfica del Seno con ruido y a su vez eliminar las diferentes gráficas ya generas.

Esto último se logra añadiendo al función al controlador del botón "Borrar".

Ejemplo 5:

// Ahora procedemos a gráficar las curvas del Seno

PlotY (panelHandle, PANEL_GraficaSeno, SenoRuidoso, 1000, VAL_DOUBLE, VAL_THIN_LINE, VAL_NO_POINT, VAL_SOLID, 1, COLORNUM)

int CVICALLBACK Call_Borrar (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT:

//Para eliminar la gráfica procedemos a realizar la siguiente la función "DeleteGraphPlot" de esta forma borramos las graficas que ya se encuentra realizadas.

DeleteGraphPlot (panelHandle, PANEL_GraficaSeno, -1, VAL_IMMEDIATE_DRAW);

break; } return 0;

7mo Paso Resultado

A continuación se anexa la imagen con el resultado final

Imagen:Imagen 2 - Tarea Nº1.jpg

Archivo del programa.

media:Tarea_Nº1_-_M17214.rar



Tarea Nº 2 - Generación y Medición de la Temperatura de un Compresor

1er - Paso Creación de la Interfaz Gráfica

Definimos la nueva interfaz gráfica, compuesta por una serie de comandos de tipo "dial" (regulables), capaces de modificar una variable de acuerdo a la escala que le indicamos. En este caso se decidió modificar los siguientes parámetros:

- Límite máximo de temperatura

- Límite mínimo de temperatura

- Frecuencia del contador

Adicionalmente, se agregaron los siguientes botones de comando:

- Guarda: Utilizado para borrar la gráfica

- Importar: Utilizado para importar y analizar un set de datos

- Guardar: Utilizado guardar los set de datos generados en la medición.

Por último, se agregó un gráfico para la muestra de los niveles máximos y mínimos de temperatura así como la generación de los puntos de temperatura. El incio del programa se hace al mediante un "binary Switch", cuya función es arrojar un valor 1 cuando esta encendido y 0 cuando esta apagado.

Un comando numérico permite visualizar el valor "random" de temperatura generado por el programa. Adicionalmente, un grupo de Leds se activa cuando el valor de temperatura generado aleatoriamente está por encima o por debajo de los límites establecidos.

A continuación se presenta el esquema de la interfaz gráfica.

Imagen:Tarea Nº2-M17214 -1.jpg

De igual forma, se genera una segunda interfaz gráfica cuyo proposito es desplegarse con un histrograma para mostrar la evolución del set de datos.

Esta esta compuesta por una serie de comandos gráficos cuya finalidad es desplegar la información estadística solicita y los siguientes botones de comando:

- Promedio: Llama a la función que permite calcular el promedio del set de datos importado.

- Desviación: Permite calcular al desviación estandar de los datos importados.

- Varianza: Calculo de la varianza.

- Mediana: Cálculo de la mediana del Set de datos.

- Moda: Cálculo de la Moda, entre un valor base y uno superior del set de datos.

- Raíz Media Cuadrática (RMS): Cálculo de la raíz media cuadrática.

A continuación se presenta una imagen de la interfaz del segundo panel.

Imagen:Tarea Nº2-M17214 -2.jpg


2do Paso Guardado de Archivos

Para realizar el guardado del set de datos generado aleatoriamente, se procedió, a utilizar la función "LoadPanel", la cual se encarga de guardar la ubicación del panel dentro del ordenador en una variable.

Para este caso se decidió utilizar la variable panel2.

Para configurar la función de "LoadPanel"

Archivo del programa

Media:Tarea Nº2 - M17214.rar

Herramientas personales