# Controlar puerto serial automáticamente al ejecutar el programa



## eacs (Mar 13, 2009)

Bueno pues les explico el proyecto que traemos en manos, es un sistema de alarma en el cual queremos eliminar la necesidad de los detectores de movimiento que tienen un costo algo alto, y sustituirlos con webcams,l o cual permite la videovigilancia en vivo, y mediante un software detecta los cambios de movimiento, ahora el software que estamos utilizando (webcamxp) tiene la opcion de ejecutar un programa a la hora de detectar movimiento, la idea es la siguiente


crear un programa , como el de pc-control de neo, pero que al abrirse te active algun pin especiífico del puerto serial, esto a su vez ya puede ir a la parte electronica del sistema y activar una alarma...., el programa tendria que abrirse, activar el pin del serial, luego cerrarse dsepues de unos segundos, para que quee listo para volverse a abrir en caso de que se necesite

he buscado en estos foros y estan muy bien mas que solo hay control manual del puerto serial, no algo que se active automático, espero que sepan si hay algo o si no como hacerlo? muchisimas gracias, felicitaciones por todos los aporteS!


----------



## LIAMNEESON (Mar 13, 2009)

Claro que se puede, si lo haces en VB mandarías un dato por el puerto serie cuando se cargue el form

Private Sub Form_Load()
MSComm1.Output = "hola" 'Aquí envias el dato
End Sub

Y luego con un timer que tu programa se cierre al haber transcurrido n segundos.


----------



## eacs (Mar 17, 2009)

y se puede alrevez? que al recibir un pulso de un circuito en el serial se ejecute automáticamente un programa que a su vez abra otro, y el programa inicial se cierre? 


mas claro explicado, que le llegue un pulso al serial y este ejecute un programa A que a su vez el programa A llame a B y el programa A se cierre, espero su comentario gracias =)


----------



## LIAMNEESON (Mar 17, 2009)

Para saber que se está recibiendo un pulso en el serial necesitas abrir el puerto serie primero, por ello debes tener un programa abierto monitoreando el puerto serie de siempre y desde ahí abrir y/o cerrar otros programas después de cierto tiempo que tu asignes.

Manteniendo abierto siempre el programa que monitoree el puerto serie.


----------



## Moyano Jonathan (Mar 17, 2009)

Ahora si vos querés que cuando el puerto serie reciba un dato , windows abra el programa ahi es más dificil porque tenés que manejar interrupciones de windows


----------



## LIAMNEESON (Mar 17, 2009)

Moyano Jonathan dijo:
			
		

> Ahora si vos querés que cuando el puerto serie reciba un dato , windows abra el programa ahi es más dificil porque tenés que manejar interrupciones de windows



Al utilizar las interurpciones de Windows, el puerto serie quedaría siempre abierto ? Sino como se enteraría que se recibió algo, aclarame esa duda.


----------



## Moyano Jonathan (Mar 17, 2009)

Tendría que investigar un poco más ese tema, pero creo que no porque lo que supuestamente detectaria windows sería un cambio de estado en la pata de recepción de datos, osea hace una interrupción por hardware. Igual dejame que investigue un poco mas y te digo.......asi no me equivoco.


----------



## LIAMNEESON (Mar 17, 2009)

Moyano Jonathan dijo:
			
		

> Tendría que investigar un poco más ese tema, pero creo que no porque lo que supuestamente detectaria windows sería un cambio de estado en la pata de recepción de datos, osea hace una interrupción por hardware. Igual dejame que investigue un poco mas y te digo.......asi no me equivoco.



De ser cierto estaría bien para lo que propone eacs y a lo mejor aplicarlo a otras cosas tambien.


----------



## Meta (Mar 17, 2009)

eacs dijo:
			
		

> Bueno pues les explico el proyecto que traemos en manos, es un sistema de alarma en el cual queremos eliminar la necesidad de los detectores de movimiento que tienen un costo algo alto, y sustituirlos con webcams,l o cual permite la videovigilancia en vivo, y mediante un software detecta los cambios de movimiento, ahora el software que estamos utilizando (webcamxp) tiene la opcion de ejecutar un programa a la hora de detectar movimiento, la idea es la siguiente
> 
> 
> crear un programa , como el de pc-control de neo, pero que al abrirse te active algun pin especiífico del puerto serial, esto a su vez ya puede ir a la parte electronica del sistema y activar una alarma...., el programa tendria que abrirse, activar el pin del serial, luego cerrarse dsepues de unos segundos, para que quee listo para volverse a abrir en caso de que se necesite
> ...



Dime en forma de lista numerada lo que quieres y quizás te pueda decir como lo haces en Visual C#.

Si quieres ayuda de algo.
http://www.abcdatos.com/tutoriales/tutorial/z9521.html
http://www.abcdatos.com/tutoriales/tutorial/v12.html

Lo de nada más ejecutar la aplicación ya se puede detecta el puerto serie, abrirlo para enviar datos a donde quiera y volver a cerrarlo. ¿Sólo es para la alarma?


```
// Visual C#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Alarma_01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.Open(); // Abrir puerto.
            //Instrucciones...
            serialPort1.Close(); // Cerrar puerto.
        }
    }
}
```


```
'Visual Basic .net

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms

Namespace Alarma_01
    Public Partial Class Form1
        Inherits Form
        Public Sub New()
            InitializeComponent()
        End Sub
        
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
            serialPort1.Open() ' Abrir puerto.
            'Instrucciones...
            serialPort1.Close() ' Cerrar puerto.
        End Sub
    End Class
End Namespace
```

Saludo.

PD: Si es posible, pon el  enlace de _pc-control de NEO_ que no lo encuentro.


----------



## eacs (Abr 1, 2009)

muchisimas gracias por su aporte, ya está funcionando el programa, lo que hace es lo siguiente, un programa para camaras web esta monitoreando si hay movimiento en la camara, si lo hay ejecuta la aplicacion que hicimos, entonces la aplicacion se abre, manda un pulso al puerto serial, y se activa acá nuestro sistema de alarmas =)! ya quedo funcionando, lo que queremos hacer ahora también es ver si podemos hacerlo inverso osea:

que nuestro sistema electronico mande un pulso al puerto serial, y se ejecute el programa de las webcam 

como podriamos lograr eso? muchas gracias

pd: Meta eres la onda


----------



## Meta (Abr 1, 2009)

¿Si has acabado. Puedes poner fotos o vídeos del proyecto?


----------



## eacs (Abr 1, 2009)

tenemos todo por separado, no lo hemos probado aun todo junto, pero claro que lo vamos a mostrar aqui en video =D! sabrás como hacer lo ultimo meta? lo de ejecutar la aplicacion cuando se reciba un pulso en el serial? si nos puedes ayudar cno el programa ahi nos dices cuanto e$


----------



## eacs (Abr 1, 2009)

por cierto, estamos tratando de hacer este http://perso.wanadoo.es/chyryes/circuitos/cerradura.htm alguno de ustedes ya lo hizo y lo probo? ahi se utiliza el pic 16F876, nosotros tenemos el 16fl876A. No son iguales? no funcionaria? haciendo eso ya podremos mostrar el proyecto hecho =)


----------



## Meta (Abr 1, 2009)

eacs dijo:
			
		

> tenemos todo por separado, no lo hemos probado aun todo junto, pero claro que lo vamos a mostrar aqui en video =D! sabrás como hacer lo ultimo meta? lo de ejecutar la aplicacion cuando se reciba un pulso en el serial? si nos puedes ayudar cno el programa ahi nos dices cuanto e$



¿Te refieres que desde el puerto serie mande una señal de algo al programa del PC para que ese programa haga algo?


----------



## eacs (Abr 1, 2009)

me refiero a que nuestro sistema electronico mandara un pulso al serial en algun momento, y entonces el pc lo detecte y ejecute un programa (en este casoel de las webcam) es todo, un maestro nos dijo que se puede hacer con interrupciones o polling, la verdad no tengo ni idea


por cierto Meta, sabras lo del pic 16f876a para lo del otro circuito de la alarma con teclado?


----------



## Meta (Abr 1, 2009)

Lo que dices es crear una Interfaz para el PC. Esa Interfaz detecta el pulso del PIC desde el puerto serie y si puede activar cualquier programa que usted tenga instalado en Windows.


----------



## eacs (Abr 1, 2009)

ok, y como? de verdad, si lo puedes hacer , di cuanto sale de dinero y tel o pagamos


----------



## Meta (Abr 2, 2009)

Nota: Dije que se puede ejecutar, no dar órdenes al propio programa de la WebCam.

Lo tengo pensado hacer, pero más adelante, ya que se me quemó el PIC, el MAX232 y el LCD HD44780D 16x2. Estoy entretenido en otras cosas con otro PIC nuevo, es fácil de hacer y tengo previsto hacer un manual sobre él como he hecho con los demás y no los suelo cobrar, es *gratis para todos*. Algunos ya me conocen.

Si quieres hacemos pruebas, me dice que orden suelta el PIC y haré una parte del programa. El programa debe soltar información si es de un carácter mejor ya que es más fácil. También debes decirme cuanto tiene de baudios, paridad, etc del puerto serie. Decirme exactamente la dirección donde tienes el ejecutable de la webcam y su nombre completo respetando mayúsculas.

Ya verás aunque parezca sencillo de hacer, requiere su tiempo.


----------



## eacs (Abr 2, 2009)

con ejecutar el programa de la webcam es suficiente, el programa ya hace todo solo, con un simple pulso de 12 volts que se le de al puerto serial, que se ejecute el programa de la webcam, es todo, de hecho no tiene nada que ver con el pic que se use ni nada (pienso yo) solamente es un pulso en el serial y listo que se ejecute el programa, la verdad no tengo idea de los baudios, paridad, o etc jajaja  lo siento soy demasiado novato para programar y todo eso

el ejecutable está en C:\Archivos de programa\wLite\wLite.exe  mira Meta, as de cuenta que lo que queremos hacer, es que cuando nosotros le mandemos una mensaje de texto a un modem especial que estamos utilizando, este activa una salida, es nada mas asi voltaje,  no se si de ahi se pueda conectar directamente al serial, o ocupemos pasarlo por un pic? para que la pc reconozca eso y ejecute el programa y listo, te agregue al gmail meta tambien, saludos


----------



## Meta (Abr 2, 2009)

Hola:

Un sólo pulso de 12v y ya está eso no va a reconocer nada, necesitas un protocolo de comunicación llamado RS232. Por eso de los baudios. Cuando sepas los baudios y demás historias podemos empezar otro paso, de momento es como tirarte al mar sin salvavidas.

Un cordial saludo.

*EDITO:*
Mejor usar el 16F84A-04. No hace falta el LCD.







*EDITO 2:*

Estoy haciendo el programa, espera.

C:\Archivos de programa\wLite\wLite.exe


Saludo.


----------



## Meta (Abr 2, 2009)

Puedes probar el programa sólo lo del botón.


----------



## eacs (Abr 2, 2009)

ok aqui va todo


estamos haciendo un sistema de alarmas para casa, el cual tu puedas controlar cosas en tu casa, como? por medio de un modem gsm especial, el modem tiene 6 salidas digitales y 2 a relé, que tu puedes activar en cualquier momento con un mensaje o una llamada

*la alarma se activa cuando algun contacto se abre (los que van en las puertas o ventanas)
*cuando se activa el sensor  de humo
* cuando se activa el sensor de movimiento
* o con la Camara Web, esto es lo importante---- voy a desglosar esto

el programa para las camaras web es el webcamxp, este programa tiene una funcion de sensor de movimiento (asi como lo tienen muchos otros programas de ese tipo), cuando detecta un movimiento, puede realizar varias cosas, tales como mandarte un correo, sonar algo en las bocinas de la pc, y ejecutar una aplicación.... bueno, nosotros conseguimos una aplicacion que manda un pulso al puerto serial le vams a llamar aplicacion "A", entonces le configuro en el webcamxp, que cuando detecte movimiento, corra la aplicacion A, 

aplicacion A= se abre, manda un pulso al puerto serial, y se cierra

entonces nuestro sistema electronico detecta el pulso como señal de alarma (tal como si se abriera una ventana o puerta o sensor de humo) y manda una señal al modem GSM, el cual a su vez te manda un mensaje a tu celular, diciendo que se te activo un sensor.....

hasta ahi ya esta todo bien, el problema es que la aplicacion WEBcamxp siempre estará prendida, y cuando las camaras detecten movimiento, van a estar mandando el pulso de alarma (aunque el sistema de alarma este desactivado en ese momento), eso lo queremos evitar 

como? pues haciendo que cuando tu actives la alarma al salir de tu casa se mande una señal al puerto serial de la pc, y entonces la pc lo reconozca, y ejecute automaticamente el webcamxp, y ya siga todo funcionando a la perfeccion, de esa manera, solo se activara el programa cuando se active el sistema de alarma

espero haberme explicado, muchisimas gracias


----------



## eacs (Abr 3, 2009)

Meta, el "perron" me abre un cuadro que dice wLite, y si le doy click y si se abre, el "perron" se queda trabado despues de eso, y solo se cierra cuando cierro el programa webcam xp  , gracias x ayudarr


----------



## eacs (Abr 7, 2009)

meta? =(


----------



## Meta (Abr 7, 2009)

Hola:

Estoy en exámenes, tardaré en pensar... 


A lo que iba. El programa no te funciona, dime si es posible ejecutar el programa de la webcam realmente.

Saludos.


----------



## eacs (Abr 7, 2009)

con el programa que hiciste si ejecuta el programa de la webcam, y se queda trabado hasta que se cierra el programa de la webcam y luego se cierran los dos


----------



## Meta (Abr 8, 2009)

Comprueba ahora la v0.2


----------



## eacs (Abr 8, 2009)

ok, este también abre el programa wlite, y se queda trabado hasta que lo cierro , =D !


----------



## Meta (Abr 8, 2009)

En mi ordenador no me pasa esto. Qué raro.

Prueba otra vez.


----------



## eacs (Abr 8, 2009)

si, eso no importa meta, no te preocupes pro eso el chiste es que podamos hacerlo con nuestro circuito externo jeje, tu hazlo como sea, nosotros lo armamos, si ocupas pics o como sea nosotros lo armamos  =) muchas ..


el perron v3 me da un error "no se encuentra el archivo en la misma ubicacion" el perron 2 y el 1 si funcionan, se quedan trabados pero no improta, nos urge mas lo del serial jeje  grac de antemano


----------



## Meta (Abr 9, 2009)

Utiliza otra vez el perron v0.4 que me equivoqué de ubicación. Si no te funciona utiliza ahora el v0.5 también y me cuenta.


----------



## eacs (Abr 9, 2009)

v4 y v5 funcionan bien, si lanzan el wlite y no se quedan trabados =)

? meta?


----------

