Autor Tema: VB2005: Plantemaiento con controles domótica  (Leído 2410 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
VB2005: Plantemaiento con controles domótica
« en: 17 de Marzo de 2007, 03:06:41 »
Hola, quiero hacer algo así como un programa de control de domótica. Pido ayuda para plantearlo. Mis ideas son las siguientes, pero al llevar muy poco tiempo con 2005 y desconocer muchas cosas me pierdo:

-Hice un programa inicial para controlar un modulo (en concreto una cámara CCTV con IR, sensor presencia y LDR). Todo mas o menos bien, enciendo IR en función de la cantidad de luz, etc.

-La duda surge al quere hacer algo "serio": Cuando controle varios módulos, creo que sería conveniente usar algun tipo de control o clase. Me explico, el formulario principal creo que no debe ser el encargado de ir hablando con los módulo, sino que debe haber un control, clase o ? que lo vaya haciendo y que informe con eventos. Ésto al mismo tiempo, me serviria para usarlo como "servidor", es decir en un puesto o varios, tener distintos niveles de acceso al control. Esto se complica más cuando piensas en un futuro la posibilidad de ampliar o modifar algun modulo, y que cada modulo tiene un comportamiento y caracterñísticas distinto (cámaras, control de luces o acceso, etc, con lecturas y órdenes distintas).
-También creo que debe haber otro modulo que controle todos esos estados y que en función de la gravedad, genere un evento de p.e. alarma, pero que teniendo el formulario que tenga, el sistema no pare de funcionar.

La idea de funcionamiento para evitar colisiones en el bus, es que el PC, se vaya comunicando modulo a modulo cada x ms, bien sea para leer como para mandar una orden.

Gracias de antemano, David

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: VB2005: Plantemaiento con controles domótica
« Respuesta #1 en: 20 de Marzo de 2007, 06:04:49 »
Hola,

Bien, solucionado de momento. Se trata de crear una clase que genere eventos. En mi caso la colocaré dentro de un "control de usuario" de la siguiente forma:
Public Class UserControl1
    Public Event Final(ByVal num As Single) --> Esta es la instruccion en sí que genera el evento llamado "Final" y manda el valor "num"
    Public Sub Empezar()
        Timer1.Interval = 2000
        Timer1.Enabled = True
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        RaiseEvent Final(3)    --> Esta es la instrucción que hace generar el evento "Final" y hace que mande un "3"
    End Sub
End Class

En el frmMain, primero donde las declaraciones añadimos "private withevents [nombre que le daremos] as [Nombre del Control de usuario]

Public Class frmMain
    Private WithEvents Llamada As UserControl1
... Código del programa
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Llamada = New UserControl1
        Llamada.Empezar()
    End Sub
    Private Sub Llamada_Final(ByVal num As Single) Handles Llamada.Final     --> Este es el evento
        MsgBox(num)
    End Sub
End Class

  Creo que hay otras maneras, pero esta es bastante sencilla. Esto mismo se puede poner todo junto dentro de un mismo formulario. Como se puede ver esto es un ejemplo que al hacer click en button2 del form principal, pone en marcha un timer que cada 2 segundos genera un evento. Luego ya, a trabajar el código que irá comunicándose con los módulos, y cuando detecte algun valor que salga de lo programado, nos avise con un evento. He elegido un "UserControl" porque se le pueden añadir controles como Timers o SerialPorts.

  Espero sirva de ayuda para quien lo pueda necesitar. Creo que sería conveniente que algún moderador cambiara el título de este post por "VB2005: Crear un control de eventos" o lo que considere más oportuno.

  Saludos, David


 

anything