Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PRACTICA 1 Y 2
1. Se realizan juntas, por lo que no hay actividades adicionales.
PRACTICA 3
1. Añadir un botón que haga un reset del contador (puesta a 0). También se puede
hacer un evento al hacer clic en la propia Label que muestra la cuenta.
2. Añadir un RadioGroup para seleccionar que la cuenta sea ascendente o
descendente. Usar propiedad Items para añadir las opciones. Se puede consultar el
valor de ItemIndex dentro de la función Reloj.
3. Añadir un Edit para introducir el valor Final del contador. No hace falta programar
aquí ningún evento.
4. En la función Reloj, programar que cuando llegue al valor final, pare el contador, lo
ponga a 0, ponga color azul a la Shape1 y muestre un mensaje en un nuevo Label
(Label2)
Shape1->Brush->Color = clBlue;
Timer1Timer->???? = TrackBar1->Position;
PRACTICA 4
1. Añadir al proyecto un nuevo formulario, llamado Form2; de momento no contiene
nada.
2. En el formulario principal, crear un botón llamado “Abrir Form 2”, en su evento clic
hacer una llamada para abrir el formulario 2:
Form2->Show();
1. Cambiar nombre actual del TaskHandle, por TaskDigitalInputs, ya que usaremos las
tareas para varias entradas digitales.
2. Añadir las funciones para leer del bit2 una nueva entrada digital: OverHeat
3. Introducir el nombre de la tarjeta en tiempo de ejecución. Que podamos poner que
es Dev1, o Dev2, con el programa ejecutándose, antes de iniciar la tarjeta. Para ello
podemos añadir un Edit, y recuperar su contenido con EditN->Text
4. Cambiar periodo de muestreo en tiempo de ejecución, para ello añadir otro Edit, y
programar el evento “OnExit” para que el tiempo que se escriba se asigne a
Timer1->Interval.
5. Se puede iniciar la tarjeta automáticamente cuando se muestra el Form,
escribiendo en el evento OnShow del Form, pero para ello tenemos que tener un
valor por defecto en el Edit donde está el nombre de la tarjeta. También se puede
usar el evento OnClose, para hacer tareas como borrar la tarea DAQmxClearTask
PRACTICA 6
1. Añadir una segunda salida digital, para tener dos en total: válvula (valve) y
calefactor (heater). Usar la misma tarea y canal. Solo hay que crear una nueva
función process_write_heater(), igual a la process_write_valve() donde solo cambia
la máscara que usamos para actualizar mirror_DO, lo demás es todo igual. Poner
también el prototipo en process.h.
OPCIONAL: Si tuviéramos muchas más salidas digitales, optimizar el código
separando en funciones la parte de cálculo de máscara y la parte de funciones de la
tarjeta:
2. Combinar con la práctica de entrada digital, para tener en total dos entradas
(pulsadores) y dos salidas digitales. Solo tenemos un archivo process.h, con una
función process_init() donde hay que crear las dos tareas (sensors_task y
actuator_task) y dos canales (uno DI y otro DO).
3. En el timer de 500mS se muestrean (leen) ambos sensores, y en caso de estar
activos (OVERHEAT_YES, o OVERFLOW_YES), mostrar un label de alarma indicando
si hay OVERFLOW o OVERHEAT
4. Si en el paso anterior se detecta sobrecalentamiento, llamar a la función de la
tarjeta para apagar el calefactor.
5. Igual que el anterior pero controlando el sensor de OVERFLOW y en caso
producirse, cerrar la válvula.
PRACTICA 7
Esta es la function:
#include <stdio.h>
//---------------------------------------------------------------------------
void IO_Test(int error_code, int line){
char message[2000], buffer[1000];
if(error_code != 0){
DAQmxGetErrorString(error_code, buffer, 1000);
sprintf(message,"NiDAQmx Error\nLine: %d\nReason: %s\n", line, buffer);
ShowMessage(message);
exit(1);
}
}
Pasa a:
IO_Test( DAQmxCreateTask("temperature_sensor_task",&temperature_sensor_task),
__LINE__ );