En ésta aplicación se explica el procedimiento para utilizar los Timers controlados por Hardware en los modos 1, 2 y 3.
Para este ejemplo se requiere preguntar por el valor actual de los Switches en todo momento, por lo que utilizaremos un hilo o subproceso (Thread) y esté trabajando en segundo plano.
Vamos a la pestaña Project > Add Existing Item… y seleccionamos el archivo Hilo.cs.
Ahora debemos agregar la librería Threading.
using LibMetodosSade; using System.IO.Ports; using System.Threading;
Creamos los objetos hilo y t.
public partial class Form1 : Form { Thread t; Hilo hilo; ... ... ... public Form1() { InitializeComponent(); hilo = new Hilo(this); t = new Thread(hilo.Metodo); ... ... ...
Para evitar la restricción de poder modificar los elementos de la interfaz de usuario mediante un hilo, debemos agregar la siguiente instrucción.
public Form1() { InitializeComponent(); t = new Thread(hilo.Metodo); CheckForIllegalCrossThreadCalls = false; //Añadir esta línea de código. ... ... ...
En el diseño agregamos un botón que ejecutará el hilo el cual revisará las notificaciones de los Timers en todo momento. Le damos doble clic para crear un evento.
Timer en modo 1
El timer en modo 1 funciona especificando el tiempo que se esperará antes de mandar una notificación a la aplicación. El conteo se hace desde Hardware y la notificación se observa en Software. Disponemos de 4 Timers para trabajarlos en modo 1 (Timer1, Timer2, Timer3, Timer4), para éste ejemplo trabajaremos con Timer1.
En nuestro diseño agregamos un botón para resetear a Timer1 y una etiqueta en la cual se mostrará la notificación cuando haya terminado de contar.
Cambiamos la propiedad de la etiqueta para volverla un objeto público (se repetirá este paso en las demás etiquetas).
Para resetear a Timer1 utilizamos el método Reset_Timer_Modo1.
private void button3_Click(object sender, EventArgs e) { ms.Reset_Timer_Modo1(ms.Timer1); }
Ya en la clase colocamos el código que se ejecutará en segundo plano en un while infinito dentro de Metodo(). Para mandar a llamar un elemento de la clase Form1 desde la clase Hilo utilizamos el objeto form1.
public void Metodo() { while(true) { /*Configuramos a "Timer1" para que mande la notificación en 2 segundos y lo mostramos en la etiqueta el método "Timer_Modo1" devuelve "true" cuando ya haya transcurrido el tiempo especificado*/ form1.label2.Text = "Fin: " + form1.ms.Timer_Modo1(form1.ms.Timer1, 2, "s").ToString(); } }
Timer en modo 2
El Timer en modo 2 funciona igual que el modo 1 pero la notificación se observa tanto en Software como en Hardware a través de uno de los 4 pines disponibles, utilizaremos el Pin A3 de la tarjeta Symbhia por ejemplo.
En el diseño agregamos un botón para resetear el Timer y una etiqueta donde se mostrará la notificación cuando haya terminado de contar.
Para resetear el Timer en modo 2 utilizamos el método Reset_Timer_Modo2.
private void button4_Click(object sender, EvenArgs e) { ms.Reset_Timer_Modo2(ms.Pin_Sy_A3); }
De vuelta en el Hilo escribimos el código para revisar la notificación.
public void Metodo() { while(true) { /*Configuramos a "Timer1" para que mande la notificación en 2 segundos y mostramos en la etiqueta el método "Timer_Modo1" devuelve "true" cuandoya haya transcurrido el tiempo especificado*/ form1.label2.Text = "Fin: " + form1.ms.Timer_Modo1(form1.ms.Timer1, 2, "s").ToString(); /*Configuramos el pin "A3" para que opere como timer y se muestre la notificación en ese pin y también en la etiqueta cuando hayan transcurrido 5 segundos*/ form1.label4,Text = "Fin: " + form1.ms.Timer_Modo2(form1.ms.Pin_Sy_A3, 5, "s").ToString(); } }
Timer en modo 3
El Timer en modo 3 requiere de un evento externo para iniciarse, la notificación se muestra tanto en Hardware como en Software y a diferencia de los modos 1 y 2 el modo 3 se puede especificar el tiempo que durará la notificación (Ancho). Para éste ejemplo utilizaremos el pin A5 para la notificación externa (la notificación se mostrará en el pin B3).
En el diseño agregaremos 2 etiquetas, en la primera se mostrará la notificación del evento externo y en la otra se mostrará la notificación del Timer.
En la clase Hilo escribimos el siguiente código:
Por último ejecutamos nuestra aplicación presionando el botón
Y así finaliza nuestra aplicación.
¡Gracias por su interés en SADE!
Cualquier duda o información pueden contactarnos en: [email protected]