# Controlar PC desde otro PC



## Meta (Mar 18, 2009)

Hola:

Tengo la idea de hacer dos programas en cada PC controlado mediante Internet y puerto serie.

1- EL PC1 hago la Interfaz de control para controlar por vía Internet mediante button (botones) el otro programa del PC que ahí está el PIC16F84A.

2- El PC2 tiene otro programa o Interfaz que puede controlar el puerto serie donde está conectado el PIC. Se controla como puedes ver en este vídeo...

YouTube - RS232 con PIC 16F84A y Visual C#

...con la diferencia que yo lo quiero hacer mediante control por IP y que ustedes sean capaces de controlarlo desde sus casas mientras ves como se mueve una webcam por poner un ejemplo.

Ahora la pregunta. ¿Con Visual C# se puede hacer esto?

Aquí hay un ejemplo directo de una Interfaz básico con su código fuente, conectado al puerto serie. En realidad esta Interfaz no tiene que ir con el puerto serie, sólo la conexión a Internet mediante una IP que debemos conocer para poder llegar al PC2 que si se puede conectar al puerto serie.

Las órdenes a enviar al PC2 para el puerto serie es algo parecido a esto.

```
byte[] mBuffer = new byte[1];  
            mBuffer[0] = 0x20; //ASCII letra "Espacio".  
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
```













Necesito información y cómo se programa. Poco a poco lo intentaré, al menos como se envía esta trama de bytes en hex para que lo entienda el PC2 desde el PC1. De momento sigo buscando en www.google.com


En resumen:

Sólo necesito introducir la IP desde PC1-Cliente, para conectar al PC2-Servidor. Si se conecta, el PC2-Servidor envía al PC1-Cliente un mensaje de bienvenida, por ejemplo:

"Bienvenido a PC2".

A partir de ahí, al pulsar un botón del PC1-Cliente, envía tramas y/o string o lo que sea al PC2-Servidor para que ejecute las ordenes hacia el serialPort1.
Si todo sale bien, puedo controlar el PIC16F84A por el puerto serie.

Espero que esto no sea tan complicado como parece.

¿Sugerencias?

Un cordial saludo.


----------



## eidtech (Mar 18, 2009)

Lo que necesitas es crear una conexión en base a sockets.

Ya tienes la mayoria de los conceptos, así que el resto solo es codificar.

Te recomiendo el siguiente libro.

Network programming in .NET de Fiach Reid.

Esta bastante completo, facil de entender y con sus respectivos ejemplos que se pueden descargar desde la web del autor.


----------



## cristian_elect (Mar 18, 2009)

Eso esta aqui:
http://www.pablin.com.ar/electron/proyecto/picnet/index.htm


----------



## Moyano Jonathan (Mar 18, 2009)

Muy buen proyecto meta lo voy a seguir de cerca


----------



## fernandoae (Mar 19, 2009)

Para solucionar el tema de la ip variable podes hacer una cuenta en http://www.no-ip.com/ y obtener un nombre dns. 
Una pregunta... cual es el hardware mas facil de hacer para grabar el 16f84a por puerto serie?


----------



## Meta (Mar 19, 2009)

cristian_elect dijo:
			
		

> Eso esta aqui:
> http://www.pablin.com.ar/electron/proyecto/picnet/index.htm



Ese software no lo consigo y  dejé la web por ello hace meses.

Aún así gracias.

*fernandoae:*
Gracias, es mejor el 
http://www.dyndns.com/

Lo tenía en cuenta, porque he montado web y foros de prueba hace años con windows y Linux a ver que pasa. 

Información que he visto por ahora es pero no entiendo nada.
http://www.eggheadcafe.com/software/aspnet/34123283/manual-redes-sockets-en.aspx
http://www.vitucho.información/detallearticulo.aspx?ca=7
http://elvex.ugr.es/decsai/csharp/distributed/remoting.xml
http://www.aztekmindz.org/2008/07/03/sockets-c-cliente-servidor/
http://foro.noticias3d.com/vbulletin/showthread.php?p=2593836#post2593836



```
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;


namespace ClienteBF
{
    
    public partial class Form1 : Form
    {
        public static Socket client;

        public Form1()
        {
            InitializeComponent();
            
        }

        private void miPanel_Paint(object sender, PaintEventArgs e)
        {

        }

        private void btnConectar_Click(object sender, EventArgs e)
        {
            //Declaro variables
            int recv;

            byte[] data = new byte[1024];  //Buffer de recepción y envío de los datos
            string input, stringData;

            //Preparo los datos (IP y puerto) del servidor al que me voy a conectar
            //La clase IPEndPoint representa un extremo de red como una dirección IP y un número de puerto. 
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.107.171"), 1234);

            //La clase Socket implementa la interfaz de sockets Berkeley (Creo el Socket)
            client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //CONECTO mi socket (cliente) al servidor definido por "ipep"
            //Try-Catch se usa en el caso de que un método pueda devolver excepciones
            //Connect puede devolver una excepción si es imposible conectar al servidor que queremos
            try
            {
                //Connect es un método de la clase Socket
                //Establece una conexión a un host remoto
                client.Connect(ipep);
                miTextBox.Text = "Conectado a 192.168.107.171 por el puerto 1234";
            }
            catch (SocketException error)
            {
                //Si existe algún error al conectar informaciónrmo al usuario
                miTextBox.Text = "Imposible conectar con el servidor:"+ error;
                return;
            }

            //Desactivo el botón Conectar y activo el botón Desconectar
            btnDesconectar.Enabled = !btnDesconectar.Enabled;
            btnConectar.Enabled = !btnConectar.Enabled;
        }

       private void btnDesconectar_Click(object sender, EventArgs e)
        {
            //Finalizo conexion con el servidor
            client.Shutdown(SocketShutdown.Both);
            client.Close();

            miTextBox.Text = "Desconectado del Sevidor";

            //Desactivo el botón Conectar y activo el botón Desconectar
            btnDesconectar.Enabled = !btnDesconectar.Enabled;
            btnConectar.Enabled = !btnConectar.Enabled;
        }
        
    }
}
```

Cualquier información que encuentre mejor que mejor, con la suma de todo, quizás podamos hacer algo.

Hay de dos tipos que quiero hacer, pero sólo un ame importa:
Control sobre escritorio y el otro método control por vía Web llamado *.net remoting*.

Saludos


----------



## Don Barredora (Mar 19, 2009)

Meta, muy buen proyecto. Voy a ver si consigo información para ayudarte en algo. Es algo parecido a lo q tenia en mente hace bastante. Conosco una web q permite el control del escitorio de forma remota, no me acuerdo el nombre pero lo puedo conseguir y se puede averiguar como funciona.

Saludos! 

Pablo

EDIT: Creo q lo mejor seria conseguir el codigo para conectar las dos pcs y el paso de información.. de ahi moficarlo para q los datos vayan al pic por puerto serie. (no tengo mucha idea en programacion pero todo se aprende )


----------



## Meta (Mar 19, 2009)

pablovila dijo:
			
		

> Meta, muy buen proyecto. Voy a ver si consigo información para ayudarte en algo. Es algo parecido a lo q tenia en mente hace bastante. Conosco una web q permite el control del escitorio de forma remota, no me acuerdo el nombre pero lo puedo conseguir y se puede averiguar como funciona.
> 
> Saludos!
> 
> ...



*Dedes el PC2-Servidor es donde están las variables para enviar las órdenes al PIC16F84A o otro. El PC1-Cliente, envía órdenes que el PC2-Servidor entiende que no tiene nada que ver con el PIC, sólo ejecuta las variables que tiene almacenadas en PC2-Servidor para que se comunique el PIC.

Después explico mejor lo que quiero decir con fotos.

Por ahora tengo que diseñar la Interfaz de control antes de empezar a programar.*





*EDITO:*





Siguiendo el tema de http://www.pablin.com.ar/electron/proyecto/picnet/index.htm me gustaría tener un Telnet con fundamento que me haga caso. He intentado usar el que viene con Windows XP en modo CMD o líneas de comandos:

Cliente Telnet de Microsoft

El carácter de escape es "CTRL++"

Microsoft Telnet> open
( a ) 192.168.1.35:8888
Conectándose a 192.168.1.35:8888...No se puede abrir la conexión al host, en pue
rto 23: Error en la conexión
Microsoft Telnet>

¿Hago algo mal? También podría conectarme vía red o por mi mismo sin usar el 127.0.0.1


----------



## Meta (Mar 19, 2009)

eidtech dijo:
			
		

> Lo que necesitas es crear una conexión en base a sockets.
> 
> Ya tienes la mayoria de los conceptos, así que el resto solo es codificar.
> 
> ...



No creas que me he olvidado de ti. Ya que hay ejemplos, ¿puedes decirme en qué Web me puedo bajar esos ejemplos?

Muchas gracias por el aporte.


----------



## eidtech (Mar 19, 2009)

Meta dijo:
			
		

> eidtech dijo:
> 
> 
> 
> ...



Estuve buscando en la web del autor y ya no estan los ejemplos para descargar, sin embargo los puedes copiar directo del libro.


----------



## Meta (Mar 19, 2009)

eidtech dijo:
			
		

> Meta dijo:
> 
> 
> 
> ...



Entendido, desgraciadamente no tengo el libro y encima en Inglés.

Gracias por la ayuda.


----------



## Meta (Mar 19, 2009)

Este ejemplo me sirvió. Cogí el EZServer09.exe de la web pablín y ahora me funciona al entrar. A ver si entro por el *HyperTerminal* de Windows. Estoy con el rollo de Winsock, si saben algo me avisan.


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;
using System.Net;
using System.Net.Sockets;

namespace ClienteBF
{
    public partial class Form1 : Form
    {
        Socket client = null; 
        public Form1()
        {
            InitializeComponent();
        }

        private void btnConectar_Click(object sender, EventArgs e)
        {
            //Declaro variables
            int recv;

            byte[] data = new byte[1024];  //Buffer de recepción y envío de los datos
            string input, stringData;

            //Preparo los datos (IP y puerto) del servidor al que me voy a conectar
            //La clase IPEndPoint representa un extremo de red como una dirección IP y un número de puerto. 
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 8888);

            //La clase Socket implementa la interfaz de sockets Berkeley (Creo el Socket)
             client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //CONECTO mi socket (cliente) al servidor definido por "ipep"
            //Try-Catch se usa en el caso de que un método pueda devolver excepciones
            //Connect puede devolver una excepción si es imposible conectar al servidor que queremos
            try
            {
                //Connect es un método de la clase Socket
                //Establece una conexión a un host remoto
                client.Connect(ipep);
                miTextBox.Text = "Conectado a 192.168.107.171 por el puerto 1234";
            }
            catch (SocketException error)
            {
                //Si existe algún error al conectar informaciónrmo al usuario
                miTextBox.Text = "Imposible conectar con el servidor:" + error;
                return;
            }

            //Desactivo el botón Conectar y activo el botón Desconectar
            btnDesconectar.Enabled = !btnDesconectar.Enabled;
            btnConectar.Enabled = !btnConectar.Enabled;

        }

        private void btnDesconectar_Click(object sender, EventArgs e)
        {
            //Finalizo conexion con el servidor
            client.Shutdown(SocketShutdown.Both);
            client.Close();

            miTextBox.Text = "Desconectado del Sevidor";

            //Desactivo el botón Conectar y activo el botón Desconectar
            btnDesconectar.Enabled = !btnDesconectar.Enabled;
            btnConectar.Enabled = !btnConectar.Enabled;
        }
    }
}
```


----------



## Moyano Jonathan (Mar 19, 2009)

Meta se podria decir que ya estás hecho un master en programacion .net te esta quedando bastante bueno


----------



## Meta (Mar 19, 2009)

Haciendo pruebas con el Telnet que ya me funciona al menos en red interna. Al acceder por vía Internet yo mismo no puedo.

Para saber la IP pública:
http://www.adslayuda.com/ip.html
http://www.whatismyip.com

Da la casualidad de que tenemos dos PC en mi casa, uno mio y  el otro de mi hermano. Tenemos la misma IP pública, la verdad que desde el router sólo se diferencia que el PC de cada uno de nosotros tenemos IP de red interna o Intranet.

En CMD de Windows, escriban 
telnet open IP_Pública y puerto.

Me pide el password que yo pensaba que era el del servidor de pablin EZServer09.exe pero me di cuenta de que es del Router.

¿Saben alguna solución sobre este tipos de cosa? Primero hay que probar las herramientas de otros para luego saber que hacer con las mías. Cuando ya consiga entrar con las herramientas de terceros a mi IP pública para entrar a mi ordenador, entonces ya empezaré a programar algo.

*Yony*, gracias, pero en realidad siempre estoy aprendiendo...


----------



## Don Barredora (Mar 19, 2009)

Yo de nuevo  

Estuve averiguando un poco y vi q hay algo q se llama winsock q es para poder hacer varias cosas desde un cliente a un server..

Estas son las cosas q permite uno q encontre:
    *  Enviar pulsaciones de teclas.
    * Enviar un Mensaje que se mostrará en el servidor con un MsgBox.
    * Enviar un comando al Servidor para que genere un string con todos los procesos que están corriendo en el server, luego le devuelve esa lista al cliente, y este lo visualiza en un Msgbox.
    * Abrir y cerrar la bandeja del Cd mediante el api McisendString.
    * El cliente puede ejecutar un archivo en el servidor.
    * El cliente puede cerrar el proceso activo del Servidor, es decir la ventana activa.

Lo unico q esta en VB...

Aca te dejo el link para q lo veas: 
http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/administrador-remoto-winsock.htm

Esta bastante bueno por q te deja hacer varias cosas.. Igual fijate por q en ese sitio hay varias cosas por el estilo...

Espero q sirva 

Saludos!

Pablo.


----------



## Meta (Mar 19, 2009)

Gracias *pablovila*:

Voy a investigar...

Por ahora he logrado conectarme en red mediante telnet y ya hasta puedo leer los mensajes desde el PIC16F84A-04. Es un menú de ayuda simple, pero se entiende. Repito, viene directamente del PIC, si pulsa *?* aparece este mensaje de ayuda.






Lo que me gustaría para hacer pruebas, que alguien de ustedes me entren al PIC16F84A, los grabo con el móvil N70 y les  envío el vídeo. Sólo por probar.

Hay que poner:
Telnet open 192.168.1.35 8888
Ya me entra en el servidor.


----------



## unleased! (Mar 20, 2009)

Meta, se que alomejor no es exactamente lo que buscas pero checa este link. Se explica como arrancar un pc desde cualquier parte del mundo, puede que te sea util:
http://foros.hackerss.com/lofiversion/index.php/t9320.html
saludos.


----------



## Meta (Mar 20, 2009)

unleased! dijo:
			
		

> Meta, se que alomejor no es exactamente lo que buscas pero checa este link. Se explica como arrancar un pc desde cualquier parte del mundo, puede que te sea util:
> http://foros.hackerss.com/lofiversion/index.php/t9320.html
> saludos.



La verdad que parece interesante, gracias por la colaboración.


----------



## LIAMNEESON (Mar 20, 2009)

Meta dijo:
			
		

> Gracias *pablovila*:
> 
> Voy a investigar...
> 
> ...



Lo que tienes que hacer es abrir un puerto de tu router (por ejemplo el 8888) para que sea accesible desde internet y de ahi direccionar todas las peticiones a ese puerto a la dirección de tu PC que es 192.168.1.35 8888, eso lo haces en la configuración del firewall de tu router y tambien lee un poco sobre NAT (Network Address Translation).

Que modelo es tu router ?

Una vez que lo configures me gustaría entrar a tu sistema del PIC


----------



## Meta (Mar 20, 2009)

Hay que poner en telnet
open metaconta.dnsalias.com 8888
pero no me entra.

Es la misma que en número.
open 81.35.205.73 8888

Para tener la misma IP. EL router es:





Algo debo hacer en el router.


----------



## Don Barredora (Mar 20, 2009)

Meta, lo prometido es deuda.. 

La web q deja manejar escritorios remotamente es esta:

https://secure.logmein.com/home.asp?lang=es

Cuando quieras probar el telnet avisame q probamos.

Saludos!


----------



## Meta (Mar 20, 2009)

pablovila dijo:
			
		

> Meta, lo prometido es deuda..
> 
> La web q deja manejar escritorios remotamente es esta:
> 
> ...



Gracias, cuando quieras puedes probar el telnet ya, pero da error, mira la página anterior que creo que no lo leíste porque escribiste después.


----------



## LIAMNEESON (Mar 20, 2009)

Ya abriste el puerto de tu router ?
Lo que te digo es algo como esto YouTube - Abrir puertos en modem 2wire de infinitum pero tienes que hacerlo con tu router, mientras no redirecciones ese puerto no se va a poder acceder desde internet a tu PC-PIC16F84a.

Intente conectarme pero no pude, debe ser por lo mismo que te comento, que marca  y modelo es tu router para ver si te consigo como configurarlo.


----------



## Don Barredora (Mar 20, 2009)

mmmm estoy probando pero tampoco puedo... pasame por mp msn si tenes y hablamos por ahi a ver si lo podemos arreglar..


----------



## Meta (Mar 20, 2009)

Lo estoy probado pero no encuentro la manera de poner la ip 81.35.205.73 8888 como en telnet.


----------



## Don Barredora (Mar 20, 2009)

Ya estas seguro q pudiste abrir el puerto desde el router?


----------



## Meta (Mar 21, 2009)

Hola:

He hablado con mi hermano y no me deja abrir nada porque dice que me entran todo el mundo y alguien puede joder buscando fallos de algo y hacer lo que le de la gana ya dentro de la máquina.

Esto no indica que no siga trabajando en el proyecto.

Ahora me toca a joderme.

Saludo.


----------



## jalva (Mar 21, 2009)

Meta:
Justamente el router hace "nating" entre la wan (internet) y tu lan para que nadie pueda llegar a tu computadora / s.
Lo que se usa para llegar a un elemento de lan desde la wan es el protocolo "NAT traversal" que abre un port determinado como el 8888 y lo enruta hacia una ip determinada en la lan.
Con lo cual necesitas un ez server con protocolo nat traversal, lo busqué pero no lo encontré.
Este protocolo le informaciónrma al router que cualquier pedido de conexión a su ip wan en un puerto dado debe enrutarlo hacia la ip lan que informaciónrma el programa corriendo en la pc(en la lan)
De todos modos puedes hacerlo en forma fija programando tu router, puedes usar un port superior a 65000 hasta 65535 donde no hay nada que puedan hacer.
yo tengo un linksys y envio un ejemplo de como hacerlo...

Espero te sirva.

... y dile a tu hermano que lo haces por tu educación...!   Jo...


----------



## jalva (Mar 21, 2009)

perdon, se me duplicó el mensaje...


----------



## Meta (Mar 21, 2009)

jalva dijo:
			
		

> Meta:
> Justamente el router hace "nating" entre la wan (internet) y tu lan para que nadie pueda llegar a tu computadora / s.
> Lo que se usa para llegar a un elemento de lan desde la wan es el protocolo "NAT traversal" que abre un port determinado como el 8888 y lo enruta hacia una ip determinada en la lan.
> Con lo cual necesitas un ez server con protocolo nat traversal, lo busqué pero no lo encontré.
> ...



Gracias por la foto.

Deja ver que dice y si me deja un momento. Entren cuando yo lo digan, hay dos personas que en privado me enviaron su e-mail, uno de hotmail y  otro de gmail. Ya les daré el aviso cuando mi hermano me deje (si es que me deja). Nos conectamos por messenger del que sea y dejaré que entre alguien para que se ponga a controlar el PIC16F84A.

Una cosa, leyendo el libro en Inglés que me recomendaron, puedo hacer pruebas y enseña hacer una Interfaz sea cliente y servidor, lo haré má adelante, ahora a comprobar si funciona en Telnet. Otra cosa que leí en el libro, que desde que empiece a tocar botones desde el telnet, la respuesta del PIC no responde sobre la marcha, hay retardos, latencias, un tiempo que puede durar 10 segundos en responder una orden tanto del cliente como el servidor, así que paciencia.

Claro que lo grabaré con el móvil y se los envío y en yotube.
El circuito es el mismo que ven aquí abajo pero controlado por ustedes.

YouTube - PIC16F84A db9 VC++ y Visual Basic

El servidor que uso es el del pablín y funciona bien.
http://www.pablin.com.ar/electron/proyecto/picnet/ezserver.zip

Sigo investigando.


----------



## Meta (Mar 21, 2009)

Acabo de hablar con mi hermano y dice *NO*. Así que mala suerte para mi.

Lo que podría hacer es que monten el circuito este, se llama *FIGURA 20-15 (Ejercicio RS232_11.asm):*







El .hex se los dejo aquí.


----------



## LIAMNEESON (Mar 21, 2009)

Lo que puedes hacer es lo contrario, que alguien más sea el servidor y que tu PC-PIC616F84A sea el cliente y así puedas probar tu sistema ó buscar un servidor que de alguna manera repita lo que le mandas hacia otro cliente, esto último no sabría como hacerlo pero sería:

Cliente - Servidor Intermedio - Cliente con PIC16F84A

Empieza a programar tanto tu servidor y tu cliente para que se hagan las pruebas.


----------



## Meta (Mar 21, 2009)

Entonces ya tendría que montar en la protoboard este circuito:

*FIGURA 20-14. Ejercicios RS232_09 y RS232_10.asm:*










Buen punto de vista, no lo había pensado. Se tiene que bajar el servidor de pablín, es ejecutar y ya está o más bien usa el HyperTerminal de Windows que también se puede configurar como servidor de escucha y se ve lo que muestra el vídeo.

YouTube - PIC 16F84A RS232 Sistemas de monitorizaciÃ³n

La mala suerte es que tengo que desmontar este circuito para montar el otro. Pero si hay colaboración y alguien está dispuesto, me lo dicen y lo monto para probarlo.

El sistema es:
*PIC16F84A----->>RS232----->>PC-Cliente(Meta)----->>Internet----->>PC2-Servidor*

Con esto el PC-Servidor que son alguien de ustedes, pueden ver en tiempo real (con retardos) el como controlo el PIC desde mi casa y lo ven desde sus casas.


----------



## LIAMNEESON (Mar 21, 2009)

Puedes dejar el circuito que quieras, nada más que ya se tendría que empezar a programar el cliente y el servidor.

Y ver que instrucciones son las que esperaría tu cliente para pasarlas al RS232.

Adjunto unos ejemplos de cliente y servidor muy sencillos en VB6.


----------



## Meta (Mar 21, 2009)

Hola:

He hecho un servidor de red, no se si en Internet funciona pero en red si. utiliza el puerto 8888.

Prueben ustedes mismos si el cliente es capaz de enviar textos en plano al servidor.

Ahora, entre nosotros, probamos estos programas, son de prueba y se necesita el .net framework 3.5 si no lo tienen instalado.

Me avisan que yo soy el PC1-Cliente, y el servidor son ustedes.

Me tienen que dar su IP pública aquí o en privado en este momento.











Saludo.


----------



## Meta (Mar 21, 2009)

Hola:

Bueno, ya hemos probado el cliente servidor enviando textos, y funciona. Lo pueden probar entre ustedes. Port 8888. Ahora toca averiguar como envío datos al puerto serie desde el PC1-Cliente.

Falta mejor diseño en los programas. Por ahora voy a intentar si soy capaz de enviar al servidor comandos para manjar el puerto serie y saber si funciona.

Cada vez avanzamos algo.

Vamos a ver como queda la cosa.

*NOTA:*
No se recomienda poner la IP publicamente aquí.


----------



## LIAMNEESON (Mar 21, 2009)

Sería bueno que pusieras en los programas una opción para cambiar el puerto, y visualizar el estado de la conexión y con que cliente/servidor se está conectado.

Para enviar datos del cliente al RS232, el servidor tendría que mandar datos al cliente una vez que: este se conecte y que el usuario del server así lo requiera.

Y si si funciona


----------



## Meta (Mar 21, 2009)

Entendido y en marcha...

Hicimos prueba hasta cuanto puede tardar los datos a recibir y fue muy rápido. Pensaba que había retardos de hasta de segundos pero actuó como un messenger. Muy rápido la verdad.

¿Sugerencias?

Cualquier idea es buena hasta en el diseño del programa como sus funciones.

Y gracias a todos/as por colaborar.


----------



## LIAMNEESON (Mar 21, 2009)

Supongo que debería ser más rápido que el msn, por que en el msn la conexión es:

usuario1 msn <--> Servidor MSN <--> usario2 msn

por eso no hay necesidad de estar abriendo puertos con el msn. Bueno eso es lo que yo creo, sino que alguien me corrija.


----------



## jokelnice (Mar 21, 2009)

huy colegas esto esta muy bien- fabuloso  y es justo lo que estoy desarrollando basicamente lo que yo quiero es una hacer una especie de targeta de adquicision que toma datos y los envia a un pc por usb ( eso ya esta listo ) y despues esos datos sean enviados a un pc 2 , para monitorear precisamente los datos de la targeta , me le peguo al foro , y espero colaborarles y 



> Meta  excelente todo lo que has hecho , realmente eres una persona de admirar , saludos y nos vemos pronto



ah y si   funciona  muy vacano


----------



## fernandoae (Mar 22, 2009)

Meta dijo:
			
		

> He hablado con mi hermano y no me deja abrir nada porque dice que me entran todo el mundo y alguien puede joder buscando fallos de algo y hacer lo que le de la gana ya dentro de la máquina



Realmente al redireccionar un puerto en el router hacia tu pc no comprometes la seguridad de tus datos. El problema puede surgir cuando usas "carpetas compartidas" de windows y las tenes si password.

Hace un tiempo hice algo muy parecido a esto pero usaba un cliente hecho en flash(mas que nada porque la interfaz queda mas bonita) que se podia colocar en una web o usarlo como un ejecutable comun. La principal diferencia es que usaba el puerto paralelo (se puede adaptar para comunicarlo con el pic)...  si necesitas una mano con la parte de sockets y demas con gusto te explico.
Y cual es la finalidad del proyecto?


----------



## Meta (Mar 22, 2009)

Gracias por el comentario.

La finalidad del proyecto es ser capaz de crear tu propio Cliente y Servidor con Visual C#, más adelante Visual C++ y Visual Basic dependiendo de la demanda de aquí.

Controla el puerto serie a distancia que tiene un PIC.

Ese PIC que puede ser cualquiera, en principio PIC16F84A, más adelante uno de 40 pines. Con esta idea, puedo controlar a distancia una webcam con dos motores para moverlo arriba, abajo, izquierda, derecha, etc. Control sobre la temperatura ambiente de la vivienda y externa. Detector de movimiento si alguien te entran por el jardín, te avisa los puntos de disparo de detección. La verdad puedes tener idea de lo que se pretende con todo este proyecto.

Lo primero que funcione lo muy básico, más adelante se mejorará poco a poco. Hasta logear el PIC y guardarlo en archivo txt.


----------



## Moyano Jonathan (Mar 22, 2009)

Meta felicidades por tu proyecto , en cuanto pueda le voy a hechar una mirada.


----------



## Don Barredora (Mar 22, 2009)

Me ausente unos dias y esto avanzo un monton! 

Me alegra q haya funcionado, y voy a hacer algunas pruebas a ver como funciona

Saludos!


----------



## Don Barredora (Mar 23, 2009)

Hiciste algun video del pic controlado por el Cliente?¿? Si es asi subelo asi lo vemos!


----------



## Meta (Mar 23, 2009)

Hola:

No, porque no he montado el circuito. Se que funcionará porque los comandos que envía el PIC por puerto serie es el mismo que envío yo con el Cliente, es decir, puedo hacer que desde el Cliente envíe lo mismo por un botón que por el PIC ya que los datos son los mismos.

Aún así, cuando monte algo en la protoboard, haré un vídeo.

Un cordial saludo.


----------



## Don Barredora (Mar 23, 2009)

Meta, se me ocurrio algo.. q tal si en vez 2 programas se configuraria el server como para q hostee una web.. esa web podria ser con pass y desde la web hacer las cosas q te permite el cliente.. pero seria desde un navegador.. y no necesitarias descargarte tu cliente cada vez q quieras entrar a tu servidor desde una pc distinta.. voy a ponerme a investigar esta opcion.. creo q si se puede hostear una web desde una pc cualquiera... 

Bueno, espero tu opinion..

Saludos!


----------



## Meta (Mar 23, 2009)

Si, si lo hay y se llama *.net remoting *.

Tengo dos ideas.

1) Control mediante Interfaz cliente Servidor con programas de escritorio.

2) Control vía Web mediante .net remoting con el ISS.

El más fácil veo que es el primero.

Saludos.


----------



## Don Barredora (Mar 23, 2009)

Ahhh, bueno, como los de escritorio ya estan hechos voy a ver si puedo hacer algo de .net remoting...

Si ya tienes algo de información sobre esto como links y eso, pasamelos asi los veo.

Saludos!


----------



## LIAMNEESON (Mar 23, 2009)

pablovila dijo:
			
		

> Ahhh, bueno, como los de escritorio ya estan hechos voy a ver si puedo hacer algo de .net remoting...
> 
> Si ya tienes algo de información sobre esto como links y eso, pasamelos asi los veo.
> 
> Saludos!



Sería interesante que tambien se hiciera tipo servidor web, aun que coincido que debe ser más difícil, si necesitan gente para hacer pruebas aquí estaré


----------



## Meta (Mar 23, 2009)

Estas cosas están aquí.

http://msdn.microsoft.com/es-es/default.aspx

Saludo.


----------



## fernandoae (Mar 23, 2009)

Por lo que veo vos queres empezar con un sistema de domotica, aca te paso algunas cosas que te pueden ser utiles para la comunicacion con el pic, un ejemplo de cliente-servidor, control de motores pap, etc.
En webcam.rar hay fotos de una webcam movida por dos motores pap.


----------



## jokelnice (Mar 24, 2009)

Como estan colegas , he estado haciendo pruebas con lagunos ejemplos me funciona perfecto con la ip local pero al momento de probar con otro pc es decir poder enviar datos realmente a otro pc , o funciona , no se si habra que hacer alguna configuracion de red o algo asi de , antemano gracias


----------



## LIAMNEESON (Mar 24, 2009)

Tienes que abrir el puerto 8888 de la PC que utilices como server, el XP siempre te pregunta si deseas desbloquear el programa dale que si ó talvez tu antivirus esté bloqueando tambien los puertos.


----------



## jokelnice (Mar 24, 2009)

que pena la ignorancia pero como podria abrir dicho puerto


----------



## Meta (Mar 24, 2009)

Voy a utilizar el protocolo como FTP que usa el TCP, me lo recomienda mucha gente porque es un protocolo y tiene acuse de recibo.


----------



## fernandoae (Mar 24, 2009)

LIAMNEESON dijo:
			
		

> Tienes que abrir el puerto 8888 de la PC que utilices como server, el XP siempre te pregunta si deseas desbloquear el programa dale que si ó talvez tu antivirus esté bloqueando tambien los puertos.


El 8888 o el que el programa estè usando, no siempre es ese.  
Si lo que se quiere es acceder a un puerto hay que configurar el router (en la mayoria de los casos) y el firewall. Hay que direccionar el puerto hacia alguna de las computadoras de la red.(en este caso la que ejecuta el programa).


----------



## LIAMNEESON (Mar 24, 2009)

fernandoae dijo:
			
		

> LIAMNEESON dijo:
> 
> 
> 
> ...



Si jokelnice está usando los programas que subió Meta, claro que estamos hablando del puerto 8888, sino que él mismo te lo diga.

Si jokelnice lo prueba localmente de pc a pc, no necesita configurar nada en su router solo en sus pc. La configuración del router es solo si sale a Internet.


----------



## fernandoae (Mar 24, 2009)

"Si jokelnice está usando los programas que subió Meta, claro que estamos hablando del puerto 8888, sino que él mismo te lo diga. "
Estoy de acuerdo, pero yo estoy hablando en forma general (o sea... esto de abrir y direccionar los puertos en el router hay que hacerlo con el emule, ares, etc).

"Si jokelnice lo prueba localmente de pc a pc, no necesita configurar nada en su router solo en sus pc. La configuración del router es solo si sale a Internet."
Lo que deberia es asignarle un ip fija a cada pc (no automatica por DHCP), con eso alcanza.


----------



## LIAMNEESON (Mar 24, 2009)

fernandoae dijo:
			
		

> "Si jokelnice está usando los programas que subió Meta, claro que estamos hablando del puerto 8888, sino que él mismo te lo diga. "
> Estoy de acuerdo, pero yo estoy hablando en forma general (o sea... esto de abrir y direccionar los puertos en el router hay que hacerlo con el emule, ares, etc).
> 
> "Si jokelnice lo prueba localmente de pc a pc, no necesita configurar nada en su router solo en sus pc. La configuración del router es solo si sale a Internet."
> Lo que deberia es asignarle un ip fija a cada pc (no automatica por DHCP), con eso alcanza.



Ojalá se halla aclarado su duda.


----------



## jokelnice (Mar 24, 2009)

ah gracias colegas muy claro , gracias por la colaboracion


----------



## Don Barredora (Mar 25, 2009)

Estos son los problemas que queria evitar haciendolo via pagina web...

Pero anduve investigando y sigo mas perdido q turco en la neblina...


----------



## jokelnice (Mar 25, 2009)

ok colegas una duda  quedando aclarado lo de los ejemplos de *meta * y por ejemplo trabajando con winsock , no se si *meta* lo hizo con este tambien , estariamos hablando de lo mismo es decir tambien tendriamos que configurar el router , les comento esto ya que se *LIAMNEESON* subio unos ejemplos con winsock que me sirvieron para hacer un sencillo chat aca lo dejo , la pregunta necesitamos hacer lo mismo que esta planteado anteriormente, ya que con este si no eh hecho pruebas


----------



## Meta (Mar 25, 2009)

Hola:

Más información.
http://www.codeproject.com/KB/IP/TCPIPChat.aspx

Saludo.

PD: Voy a ver tu programa.


----------



## LIAMNEESON (Mar 25, 2009)

jokelnice dijo:
			
		

> ok colegas una duda  quedando aclarado lo de los ejemplos de *meta * y por ejemplo trabajando con winsock , no se si *meta* lo hizo con este tambien , estariamos hablando de lo mismo es decir tambien tendriamos que configurar el router , les comento esto ya que se *LIAMNEESON* subio unos ejemplos con winsock que me sirvieron para hacer un sencillo chat aca lo dejo , la pregunta necesitamos hacer lo mismo que esta planteado anteriormente, ya que con este si no eh hecho pruebas



Hay que configurar el router cuando salgas a Internet, para los programas que se mantengan a la escucha de algún puerto (es el caso del servidor).


----------



## jokelnice (Mar 25, 2009)

comprendido amigos teniendo todo esto claro , no se entonces si alguien me podria ayudar a configurar mi router para que pueda hacer efectivo esto la marca

*smartAX mt880 adsl router - huawey*

de antemano gracias y espero seguir colaborando y por supuesto  que me sigan colaborando gracias


----------



## jokelnice (Mar 26, 2009)

pues colegas creo que ya configure el router , pero no lo he podido probar haber si sirve ya pude abrir el puerto solamente falta hacer pruebas , mirare haber como hago o si alguien me colabora mucho mejor ... saludos o no se si abria alguna forma de probarlo .... saludos


----------



## LIAMNEESON (Mar 26, 2009)

Lo puedes probar como lo haces de manera local, pero en la dirección del server al que te vas a conectar en vez de poner la dirección que te da tu router dentro de tu intranet, tienes que poner tu dirección IP de Internet, la que te da tu ISP.


----------



## jokelnice (Mar 27, 2009)

*ok* lo probe y *funciona * incluso con un amigo desde la casa de el ; funciono el chat  que habia hecho antes ahora comienza todo lo de adaptar mi targeta de adquisicion 

*gracias a todos por la colaboracion no habria podido sin su ayuda*  , saludos


----------



## lampaculos (Abr 14, 2009)

Hola gente, una pregunta: ¿alguien armo el picnet de pablin y le funciono?. Veremos que pasa con este proyecto. A mi se me ocurrió otra cosa, un circuito con un pic o algo que mande una señal de WOL a una PC en algun horario determinado.


Saludos


----------



## Meta (May 9, 2009)

lampaculos dijo:
			
		

> Hola gente, una pregunta: ¿alguien armo el picnet de pablin y le funciono?. Veremos que pasa con este proyecto. A mi se me ocurrió otra cosa, un circuito con un pic o algo que mande una señal de WOL a una PC en algun horario determinado.
> 
> 
> Saludos



Pues no sabemos, pero si lo han hecho y funciona que avise para saberlo.


----------



## unleased! (May 9, 2009)

fernandoae dijo:
			
		

> Lo que deberia es asignarle un ip fija a cada pc (no automatica por DHCP), con eso alcanza.


 La ip dinámica puedes mantenerla en el router si te es necesario solo que la ip que le asignes a la pc o pcs que quieras controlar tienen que estar fuera de ese rango dinámico. Por ejemplo, si el router tiene direcciones 168.184.1.xxx donde xxx tiene un rango de 33 a 255, puedes modificar el rango por ejemplo de 255 a 50 y entre 33 y 50 metes las pcs con ip fijo. Otra cosa es que también, para controlar un pc remotamente desde internet es necesario mantener una ip fija externa (la que te da tu proveedor de internet para conectarte) por lo que es necesario usar un proxy.
Saludos.


----------



## kiljaeded (May 12, 2009)

Buenas gente, vengo de ehacker.net, Meta me trajo, estuve leyendo, el problema que tienen ustedes, es que intentan hacer conexión directa con la pc que tiene el PIC, esto se les complicara bastante, abrir puertos, asignar ip, etc.

La mejor solucion es hacer que el PC con el PIC, se conecte a su maquina, o tambien llamado conexión inversa, el server, o PC con PIC, esta intentando conectarce a la PC con el CLiente, osea el programa que controla el PIC.

Solo les restaria, redirigir los puertos del router a su pc, con la ip local, y darle un permiso al firewall para que el programa se pueda conectar.

Asi meta tu hermano no te molestara jajajjaa.

Les dejo un ejemplo de conexión inversa en C# eso si leeanlo bien, solo tienen que aplicar a su programa la rutina de los sockets.

http://www.codeproject.com/KB/cs/ReverseRAT.aspx


----------



## fernandoae (May 12, 2009)

Meta si todavìa no solucionaste tu problema te podès poner en contacto conmigo por privado asi te explico en forma detallada como lograr tu objetivo (ip fija, configuraciòn del router, etc). No he recibido notificaciones del foro pero bueno...

kiljaeded hay que ver lo que uno sube, lo de coneXiòn inversa se usa para otra cosa y en este caso no sirve... te preguntaràs: por que?... bueno, porque en realidad el programa servidor tampoco va a conocer la ip del cliente... estamos en la misma situaciòn de antes.
La soluciòn: conseguir una IP fija o utilizar algùn servicio como NO-IP, DynDns, Comexe, PeanutHull, etc... para asignar un nombre de dominio a una ip variable.
En la gran mayoria de los Modem/Routers existe una funciòn destinada a eso que se conoce como DDNS:


----------



## kiljaeded (May 13, 2009)

fernandoae dijo:
			
		

> Meta si todavìa no solucionaste tu problema te podès poner en contacto conmigo por privado asi te explico en forma detallada como lograr tu objetivo (ip fija, configuraciòn del router, etc). No he recibido notificaciones del foro pero bueno...
> 
> kiljaeded hay que ver lo que uno sube, lo de coneXiòn inversa se usa para otra cosa y en este caso no sirve... te preguntaràs: por que?... bueno, porque en realidad el programa servidor tampoco va a conocer la ip del cliente... estamos en la misma situaciòn de antes.
> La soluciòn: conseguir una IP fija o utilizar algùn servicio como NO-IP, DynDns, Comexe, PeanutHull, etc... para asignar un nombre de dominio a una ip variable.
> En la gran mayoria de los Modem/Routers existe una funciòn destinada a eso que se conoce como DDNS:



Fer, es verdad, pero si le agregas al servidor, o maquina con PIC el dominio noip al cual se tiene que conectar, y en la maquina cliente le instalas el no ip duc para que actualice la ip o bien lo haces dentro del mismo cliente con una rutina sencilla ya tenes solucionado el problema.

Esta opcion es mas para el caso de Meta, que no puede abrir puertos en su router.


----------



## Meta (May 13, 2009)

Buenas.

Ahora el proyecto lo tengo parado por motivos de que estoy con otras cosas ocupado, seguiré más adelante.

Si alguien tiene montado este circuito que es el que _tenía_ yo montado. _(Se me quemó hasta el LCD)._







Avisen si alguien lo monta desde aquí. Si veo que alguien lo monta y funciona normal, haré la interfaz inmediatamente lo básico para controlar el PIC desde Internet. No tengo porqué ser yo que me controlen mi PIC, (_porque no puedo, me daría igual)._

Ustedes pueden utilizar el router más que yo. Sólo hago la Interfaz bajo Visual C# _(por ahora trabajamos con ese lenguaje)_ El control del PIC lo tengo hecho por puerto serie, probamos el envío de tramas entre nosotros y funciona.

Falta que alguien de aquí monte el circuito y hago el control mediante tramas como prueba. Más adelante me aconsejan mucha gente utilizar protocolo TCP como el FTP por poner un ejemplo ya que tiene acuse de recibo.

Si funciona y si es posible, graben con el movil un vídeo como prueba, sólo si es posible. Al menos para ver si se activa los led, motores, RELÉ, lo que sea.

*Ustedes deciden.*

Hasta otra a todos/as, poco a poco se consigue el objetivo, sólo falta colaborar un poco.


----------



## Meta (May 13, 2009)

A, otra cosa.

*kiljaeded*, bienvenido al foro.

Muchas gracias a todos/as, hemos llegado a un paso gracias a ustedes, poco a poco se consigue.

Saludo.

EDITO:
Cuando pueda, entrego una mejora más cómodo del programa cliente servidor.


----------



## Meta (May 15, 2009)

¿Qué tal gente?

He decidido continuar el proyecto ya una vez más.

PC1-Cliente y PC2-Servidor v0.2.

Descarguen el programa y me dicen si funcionan tanto el cliente como el servidor.

La única *novedad* que puse es una cosa que me pidieron hace tiempo y ya lo hice. Ya pueden elegir el puerto. La otra que en PC2 me olvidé de hacerlo pero no en el PC1, es que ya se guarda los datos IP, puerto para no tener que introducirlo cada vez que ejecutes la aplicación. El archivo es un xml.

La manera de probarlo es poniéndonos de acuerdo uno con el otro a ver quién hace de cliente y el otro de servidor.

¿Fallos? ¿Sugerencias? ¿Consejos de diseño? ¿Alguna idea?

Hay que mejorar la aplicación con el tiempo, es un prototipo incluido el diseño de la Interfaz. Puedes dar ideas del diseño de la Interfaz para hacerlo más ergonómico o cómodo posible.

Esperando respuestas...

DESCARGAR


----------



## Meta (May 15, 2009)

*Actualización PCv0.3*

- PC2-Server ya se puede guardar la configuración en archivo xml.
- PC2-Server ya se puede cambiar de puertos.
Y otras mejoras internas.

Si funcionan con ustedes, me avisan y me dicen que puertos les gusta más usar ustedes. A mi me recomiendan 60000 o por encima de ella.

Dependen de los fallos que encuentren o modificaciones a su gusto. Si todo sale bien, me meto con el puerto serie para ya comunicarlo con el PIC.

¿Alguna opinión?

Gracias.


----------



## fernandoae (May 15, 2009)

Meta podrìas subir el còdigo fuente tambièn asì si alguien lo quiere modificar lo puede hacer.


----------



## Meta (May 16, 2009)

*ACTUALIZACIÓN:*

- Se incluye ya por fin el control del puerto serie a distancia. Aún no he hecho prueba con alguien de Internet, según he analizado, practicamente debe de controlar ya el PIC por Internet.

Por fin he acabado lo básico.

¿Sugerencias?

El código fuente es un desastre, lo entregaré cuando esté bien depurado y haga el manual en PDF como puedes ver en el enlace de mi firma. Si quieren hacer algún añadido, solo es pedirlo por aquí y veremos si se puede hacer.

DESCARGAR

Ya pueden opinar de lo que sea, hasta en el diseño del programa, etc...


----------



## Moyano Jonathan (May 16, 2009)

Meta excelente proyecto ! La verdad que está muy bueno , una pregunta el control a distancia es bidireccional ?


----------



## Meta (May 17, 2009)

¿En qué sentido te refieres bidireccional?


----------



## Moyano Jonathan (May 17, 2009)

Perdón , ya me di cuenta que es cliente - servidor , por lo tanto es unidireccional error mio


----------



## Don Barredora (May 21, 2009)

Hola Meta, esta quedando muy bueno el programa.

Pregunta: el servidor puede recibir mensajes y comandos de 2 clientes a la vez?


----------



## Meta (May 21, 2009)

pablovila dijo:
			
		

> Pregunta: el servidor puede recibir mensajes y comandos de 2 clientes a la vez?



Si, y de muchos más. No tiene contraseña y funciona a UDP, es decir, a tramas. Por ahora es un peligro (si lo vas a usar permanentemente ya que te controla el PIC de tu casa, ejejejeje, te ven hasta la temperatura si incluyes ese sensor, etc), usarlo de prueba no pasa nada. 

Por eso lo de poner la contraseña y/o identificar que IP es la que acepta. Voy a rediseñar la interfaz otra vez hasta su estética.

También estoy para encriptar los datos.

En el futuro, utilizaré otro interfaz ya con TCP/IP, que este si se comporta como el messenger. Más en el futuro todavía, por vía Web con .net remoting.

http://msdn.microsoft.com/es-es/library/system.security.cryptography.des.aspx

http://msdn.microsoft.com/es-es/library/system.security.cryptography.aspx

No se preocupe si se puede usar miles de cliente para el mismo servidor. Que poco a poco va cambiando.

¿Más preguntas, dudas, sugerencias?

Saludo.


----------



## Don Barredora (May 21, 2009)

Ahhh, buenisimo.

Esperare la parte donde lo hagas tipo servidor web que es la que mas me interesa   , yo creo q el tipo servidor web dejaria obsoleto el modo de cliente-servidor, ya que no tendrias que bajarte ningun soft desde el lugar que quieras controlar el pic. Tambien entiendo que debe ser un poco mas dificil.. pero no imposible..   

Si me confundo y es mejor q sea Cliente-Servidor corrijanme.. es lo q pienso..


----------



## Meta (May 21, 2009)

Lo de vía Web lo dejaré más tarde cuando acabe con el actual porque es más complicado, pero no imposible. Habrá dos alternativas.

*- Vía Web:*
Estés donde estés, siempre tiene una puerta abierta, no solo para ti, sino para los demás que pueden averiguar la contraseña.

*- Control vía escritorio:*
Puedes elegir vía escritorio como vía Web. si no existe la vía Web, no todos puedes acceder al servidor si no se tiene el cliente sobre todo si es específico para uno mismo.

En estos momentos estoy diseñando la nueva interfaz. Otra funcionabilidad que se va a incluir, es guardar las IP, hora y fecha, comandos recibidos en archivos log por seguridad.

Si es mejor que sea Cliente-Servidor en circuito cerrado. Que esté tu sólo Cliente con el Servidor, no con un tercero excepto que le hayas pedido permiso.


----------



## Don Barredora (May 21, 2009)

Ahhh

Mira, se me acaba de ocurrir una idea: 

Se podra programar tareas desde el cliente en el servidor? EJ: programar el servidor para q en una hora determinada encienda una salida.

O eso iria en la parte de programacion del pic?

Si se me ocurre otra cosa aviso!


----------



## Meta (May 21, 2009)

Si se puede hacer, buena idea, no se me había ocurrido. Se hace en realidad en el Servidor, el Cliente avisa al Servidor lo que quieres hacer. También se puede programar desde el PIC. En el Servidor es más fácil.

Se puede hacer lo que pides comparando la fecha y hora del PC y guardar los datos de configuración en un archivo XML.

Deja que acabe ahora mismo de diseñar la nueva Interfaz, con tu idea la tendré que cambiar de nuevo.  Vale la pena hacerlo.

Muy buena idea, una función muy interesante. :


----------



## Meta (May 21, 2009)

Presento la nueva Interfaz. Si es posible, cualquier sugerencia es bien recibida, si no les gusta algo, comenta lo que te gusta para poder diseñarlo de otra manera, así haré algo de programar tareas.


----------



## Don Barredora (May 21, 2009)

Adjunta el nuevo programa asi puedo verlo mejor, o sea, interactuar a ver como es...


----------



## Moyano Jonathan (May 21, 2009)

Te ha quedado excelente la nueva interfaz.


----------



## Meta (May 21, 2009)

Bueno, presento la nueva Interfaz V0.8, no está acabada del todo, faltan funciones, elegir el puerto serie COM2, programas automáticos de tareas, etc.

¿Sugerencias?


----------



## Meta (May 22, 2009)

*pablovila:*

¿Quieres algo de esto así para controlar las fechas?

Voy hacer pruebas en proyecto a parte para ver como queda. Me imagino que no quieres solo una tarea de inicio y fin, sino varias ¿Cuántas te gustaría? Este proyecto sólo manipula 4 RELÉ, eso si, haré un manual para que se pueda usar 8 RELÉ, que sepan hacerlo ustedes y con otro PIC sea 16F876A o 18F2550. Lo digo para poder diseñar bien la interfaz en la parte de opciones.


----------



## mcrven (May 22, 2009)

Meta dijo:
			
		

> *ACTUALIZACIÓN:*
> 
> El código fuente es un desastre, lo entregaré cuando esté bien depurado y haga el manual en PDF como puedes ver en el enlace de mi firma. Si quieren hacer algún añadido, solo es pedirlo por aquí y veremos si se puede hacer.



Acaso crees que los grandes GURÚES hacen sus códigos muy bonitos.

Si me pagaran por todas las horas perdidas haciendo retroingeniería a miles de códigos dispersos dentro de un soft, ya sería multimillonario.

Lo que va a importar es lo que muestra el interfaz y desde luego, la funcionalida y SEGURIDAD.

Se VE muy bien, en algún momento espero probarlo.

Hay muchos interfaces de ese tipo en el mercado, pero ESE es el TUYO, el que tú hiciste con tus ideas y tus manos.
Te sugiero un Nombre: "META-PC-REMOTE".

Congratulaciones y éxitos Meta.

Saludos:

P.D.: Cuando lo tengas, comentale a Andres para publicarlo en el foro.


----------



## Meta (May 22, 2009)

*ACTUALIZACIÓN:*

- Puedes cambiar el título del programa y guardarlo.
- Indicación de la IP y puerto en la barra de estado.
- Botón de parada en rojo con letra blanca (en la foto de ejemplo no se muestra).
- Selección de botón sólo de parada y parada/activar todos.
- Cambio de nombre: "META PC REMOTE".
- Otras correcciones internas.

DESCARGAR

Prueben si puedes cambiar el título del programa en "Opciones-->Cambiar nombre", luego lo guardas en "Opciones-->Guardar Configuración".

Cierre la aplicación y la vuelves abrir para ver el título es el que has elegido.

*mcrven*
Buenas palabras, el código lo empezaré todo de nuevo para yo entenderlo bien en el futuro con explicación incluida y gracias por ese ánimo.

*pablovila*
Me imagino que también lo quieres por hora y fecha como se muestra en la nueva imagen. Por lo que veo, me da la impresión que quieres lo que yo quiero, algo de domótica, controlar electroválvulas en una hora determinada, motores de lo que sea, luces, sensor de movimiento PIR por si estás de vacaciones y te avise que ha entrado un intruso en el jardín y si quieres saber en que parte del jardín, ya tienes que poner varios PIR1, PIR2, etc de paso se encienda un foco de luz para llamar la atención, lo que se te ocurra con la imaginación (Para estas cosas, unos 16 RELÉ por lo menos). Más adelante fabrico una PCB para todo ello y le presentaré el trabajo.


----------



## Moyano Jonathan (May 24, 2009)

Meta tu proyecto cada véz más interesante !


----------



## Meta (May 24, 2009)

Bueno, sólo me falta pillar a alguien para probarlo en definitiva.


----------



## Moyano Jonathan (May 24, 2009)

Yo no pude como te dije el fin de semana por se me presentaron complicaciones pero ya veo si lo puedo probar con algun amigo de acá de mendoza donde yo vivo asi es más facil coordinar y luego posteo los resultados.


----------



## Meta (May 24, 2009)

Tranqui,   

Algún día me imagino que podremos. jejejeje.

Estoy en la parte de la contraseña y nombre. Para usarlo me recomienda que use el SQL Server Express 2008 o el MySQL 5.1. No sabía que esto se iba a complicar tanto. Tenía en mente hacer logger en cada acción que se haga con el programa en un archivo txt, por lo que veo, en una base de datos está mejor. Logearé hasta las contraseñas erróneas y nombre como sistema de seguridad, fecha, hora, IP, incluyendo lo que se ha ejecutado el programa PC1-Client.

¿De bases de datos, el que sepa, cual recomienda y por qué?

Por lo que veo, debo crear una conexión de base de datos para que el PC2-Server abra el puerto de escucha y/o puerto serie. Si la contraseña es correcta, tienes acceso al programa completo.

Esta idea está hecha con Access 2007.











¿Algún comentario?

Sobre los resultados de las pruebas ya me dirán, ejje.


----------



## marioxcc (May 24, 2009)

No voy a leer todo el hilo porque veo que trabajan con un sistema privativo y eso no me agrada. Pero en sistemas tipo UNIX usamos SSH, en especial yo uso OpenSSH (http://www.openssh.com/).


----------



## Meta (May 24, 2009)

Cuando se pueda y se acabe el sistema de Windows, haré lo mismo en Linux openSUSE y/o Ubuntu bajo MonoDevelop. No se preocupe que todo esto está pensado.

¿Alguien más quiere algo con Linux?

Podría hacer lo básico para empezar y ver saber si realmente puedo hacerlo.

DESCARGA

*marioxcc*, si tienes códigos, ideas, enlaces sobre linux, todo relacionado con Linux, UNIX,etc, puedes comentarlo aquí.


----------



## Meta (May 26, 2009)

Lo que encontré por Internet. Si tuviera este libro, haría maravillas.






_En inglés
Este libro está dirigido a ingenieros y científicos que quieran aprender sobre el entorno .NET y la programación en C# o para los que estén interesados en comunicar hardware con un PC.

El libro cubre el entorno de desarrollo Visual Studio 2008, el sistema .NET y en el lenguaje de programación en C# desde de los tipos de datos y los flujos de programa hasta conceptos más avanzados incluyendo la programación orientada a objetos.

Continúa con la depuración de programas, el manejo de ficheros, bases de datos, comunicación por Internet y el trazado antes de pasar a comunicarse con el hardware empleando los puertos serie, paralelo y USB. Incluye el diseño del hardware para un osciloscopio sencillo utilizando el puerto paralelo y el manejo de entradas/salidas analógicas y digitales utilizando el puerto USB.

Se completa con muchos programas de ejemplo, ejercicios de autoevaluación y referencias a videos de ayuda. Los programas de ejemplo completos están disponibles así como apoyos a profesores universitarios en forma de presentaciones PowerPoint._

Fuente:
http://www.elektor.es/products/book...nd-.net-for-electronic-engineers.951869.lynkx


----------



## fernandoae (May 26, 2009)

Acà no lo vi a ese pero algùn otro seguro te sirve...

[Link Editado por Chico3001]



> 2.9 Los usuarios no pueden publicar, solicitar ni difundir información que promueva el plagio, la piratería, la divulgación de números de serie, crack o similares, o copias no autorizadas de material protegido por derechos de autor.


----------



## Meta (May 26, 2009)

Buenas:

Estoy averiguando el tema de controlar el PIC desde vía Web. Antes que nada, me gustaría saber qué prefieren ustedes o cual método les atrae más para controlar un PIC a distancia.

¿Interfaz de escritorio o por vía Web?

Me van respondiendo aquí abajo que voy mirando el interés de la gente.

Cuando acabe esta Interfaz de escritorio, meteré mano en vía Web. 

Si hay gente ya preparada para hacer pruebas con el de escritorio me avisa, cuando me asegure de que funciona, ya empezaré a meterme en el mundo de la Web y el PIC.

Saludo.


----------



## Moyano Jonathan (May 26, 2009)

Hasta ahora la interfaz de escritorio es lo más interesante


----------



## Chico3001 (May 26, 2009)

Yo voto por la de web.... quiero explorar como controlar cosas a distancia por internet...


----------



## Meta (May 29, 2009)

DEjo información sobre IP.

http://muycomputer.com/FrontOffice/...U4X64tTwbFr6gzkkDK_e-bgo9QQ89n2ld11HCYKTfa8pm

Saludo.


----------



## Meta (Jun 2, 2009)

Hola:

Bueno, me estoy metiendo en dos cosas a la vez. Al final tanto por un lado (escritorio) como por el otro (Web), al mismo tiempo estoy haciendo las dos cosas.

Por ahora estoy un manual que aún no está acabado, sobre la instalación de Apache, PHP y MySQL bajo Windows, en el futuro ya lo haré en Linux.

Por ahora el manual sirve lo normal, pero aún no he hecho la parte de phpmyadmin como configuración normal. Cuando acabe toda esta parte, haré otro manual sobre controlar el PIC desde Internet y puerto serie. 

Usted opina, recuerda que no está acabado.

http://electronicapic.iespana.es/manual/servidor_web.pdf

Saludo.

PD: _También haré la parte del Apache 2.2.x._


----------



## Moyano Jonathan (Jun 2, 2009)

Muy bueno el manual meta


----------



## Meta (Jun 3, 2009)

Hola:

Dejé el MySQL para que puedan entrar (3306), entren a la base de datos Prueba01 y Tabla01, usuario Prueba y contraseña Prueba. Espero que el router les deje entrar y no les pare. Esto es temporal.

Una vez dentro, creen tablas, hagan algún comentario, etc, al menos para saber que me han entrado a mi PC y han escrito algo.

http://79.146.255.243/phpmyadmin

Estoy haciendo un tutorial haber si me sale bien.
http://electronicapic.iespana.es/manual/servidor_web.pdf

Saludo.


----------



## Moyano Jonathan (Jun 3, 2009)

Veo que avanzas a paso agigantado meta bien por vos !


----------



## Don Barredora (Jun 4, 2009)

Hola meta, volvi despues de varios dias y esto crecio mucho! te felicito.

He visto q quieres arrancar con lo del servidor web, yo habia estado investigando un poco esta opcion y avia encontrado algunas paginas de gente q lo vendia y mostraba un ejemplo de la pagina de control.. despues voy a ver si lo encuentro y te muestro.

Lo de las tareas programadas quedo genial, yo no le pensaba dar un uso especifico solo te tire una idea que me parecia interesante.. 

Voy a ver si encuentro algo de la pagina web y veo si se me ocurre otra idea te aviso.

Saludos!


----------



## Meta (Jun 6, 2009)

Buenas:

Acabé algo del manual sobre el Servidor Web,aún me faltan cosas este manual actual. El otro manual ya será sobre el control del puerto serie con el PIC vía Web, claro que, aún queda lejos.

http://www.slideshare.net/Metaconta/servidor-web-apache-php-mysql

Saludo.


----------



## jokelnice (Jun 8, 2009)

bueno , bueno colega

les comento lo que estoy haciendo con un compañero de la universidad es algo asi , espero me sirva de algo este foro


----------



## Meta (Jun 9, 2009)

Hola:

No lo veo bien de cerca, por lo qu eveo, ese esquema es como lo estoy haciendo por mi cuenta. 

Saludos y gracias por participar.

PD: _Aunque no he acabado del todo sobre la Interfaz de escritorio, me funciona. Ahora estoy investigando sobre elmodo por vía Web. Por lo que veo, como es más complejo, tardaré más en dar muestras hasta que la saque._


----------



## alechivo (Jun 10, 2009)

Excelente MEta! muy buen manual!


----------



## Meta (Jun 14, 2009)

Buenas a todoas/as:

Estaba indagando por ahí, ya que terminé el manual de instalar un servidor casero Web bajo Windows. _(Más adelnate lo haré con Linux)_.

Ahora me metí un poco sobre el control del puerto serie _(más adelante si puedo a USB)_ por vía página Web. La mayoría de la gente prefiere este método más que en modo de escritorio que también se hará.

He decidido hacerlo por vía página Web ya que me siento capaz de ello, aún sigo haciendo pruebas, he logrado leer datos desde MySQL aunque me falta averiguar como se escribe nuevos datos.

Crearé una página sencilla bajo PHP llamada index.php al estilo de aquí abajo. Con el tiempo se mejorará.


En el futuro necesitaré colaboradores para  que pueden ser cualquiera del foro, nos ponemos de acuerdo. Claro que ya antes deberían tener instalado el Apache, PHP, MySQL, como mínimo para después pasar una Web sencilla de control del puerto serie.

Claro que para ello se necesita un controlador intermedio bajo Visual C# _(Visual Basic .net y Visual C++ se hará más adelante)_. Este controlador es para que se comunique el puerto serie con la base de datos MySQL 5.1. Iba hacerlo con ISS asp .net y SQL Server Express 2008 que es más fácil, pero como php, mysql y apache son libre, funciona con muchos sistemas operativos y muy difundido su uso, pues me pareció buena elección al menos por ahora.

¿Alguna opinión buena y no tan buena?

Un crodial saludo.


----------



## Moyano Jonathan (Jun 14, 2009)

Está perfecto meta, lo has puesto con contraseña la página ? El tema del puerto controlado sería mucho mejor con USB pero si lo haces con el puerto serie no importa.

Una idea sería que tu programa buscara todos los puertos COM disponibles en la máquina servidor y largarnos una lista y que una vez conectado el microcontrolador nos mande una cadena de respuesta.
En ese caso si se podría utilizar USB ya que se implementaría la emulación CDC.


----------



## Meta (Jun 14, 2009)

Moyano Jonathan dijo:
			
		

> Está perfecto meta, lo has puesto con contraseña la página ? El tema del puerto controlado sería mucho mejor con USB pero si lo haces con el puerto serie no importa.
> 
> Si, si importa, me centro en el puerto serie ahora ya que lo domino y acabo antes para un manual, el otro manual ya sería sólo para USB que por supuesto lo haré.
> 
> ...




```
private System.Windows.Forms.ComboBox comboBox1;

private System.IO.Ports.SerialPort PuertoSerie;

 

public Form1()

{

InitializeComponent();

      this.comboBox1 = new System.Windows.Forms.ComboBox();

      // comboBox1

      this.comboBox1.FormattingEnabled = true;

      this.comboBox1.Name = "comboBox1";

      this.Controls.Add(this.comboBox1);

}

 

private void Form1_Load(object sender, EventArgs e)

{
      // GetPortNames, nos devuelve un array con los nombres

      // de los puertos instalados en nuestro equipo

String[] Ports = System.IO.Ports.SerialPort.GetPortNames();

      this.comboBox1.Items.AddRange(Ports);

}

 

// En el evento SelectedIndexChanged… del ComboBox1

{     

      // ... Por ejemplo
      PuertoSerie.Close();

      PuertoSerie.PortName = this.comboBox1.SelectedItem.ToString();

      PuertoSerie.Open();

}
```

Me respondieron hace un tiempo en:
http://msmvps.com/blogs/peplluis/ar...los-com-s-de-nuestro-equipo-en-vb-y-en-c.aspx


----------



## Moyano Jonathan (Jun 14, 2009)

Si ese código lo ví y lo estoy utilizando en un par de programas. El tema del puerto serie si importa yo me refería a que lo hagas por ahora con el puerto serie y despues cuando adquieras los conocimientos lo hagas con el puerto USB.

un saludo


----------



## Meta (Jun 14, 2009)

Ok.

Lo de USB lo haré y si me sale bien es gracias a ti. 
Vamos a ver como poco a poco crece tu manual.

Mientras tanto, ahora estoy a ver si hago una mini web bajo PHP con su login y password.


----------



## Moyano Jonathan (Jun 14, 2009)

Muy bueno tus avances yo estoy por las 63 páginas y avanzando pero toda la traducción al español de algunas cosa se está volviendo lento ya que el inglés no es precisamente lo mio. 
Felicitaciones por tus logros.


----------



## Meta (Jun 14, 2009)

A mi tampoco se me da el Inglés, irás lento pero no pausado con lo que sognifica que avanzas y no te detienes.

Tu manual está de lujo, cuando lo acabes haré pruebas con él y lo pasamos a otros lenguajes, claro que primero debo probarlo de arriba abajo.

Voy a diseñar ya la base en sólo html la web para que los vean a ver como queda, después lo paso a php si es posible.

Saludo.


----------



## Meta (Jun 15, 2009)

Primeras interfaz bajo PHP.


Es mejorable, poco a poco se irá mejorando...


----------



## Don Barredora (Jun 15, 2009)

Eso es lo que te vengo pidiendo que hagas desde hace rato !     

Te quedo muy bueno! Felicitaciones

Saludos!


----------



## Meta (Jun 15, 2009)

La demanda por lo que veo aquí, prefieren la mayoría por vía Web. También lo estoy haciendo de escritorio para aquellos que usen en modo local.

Vamos a ver como les interesa al final la gente sobre el control de PIC por vía Web. En este caso uso Apache, PHP, MySQL. También puedes usarlo en servidores externos como Lycos.

Se me ocurrió hacer logger de fecha y hora en cada modificación de estado y guardarlo en un abase de datos.


----------



## Moyano Jonathan (Jun 15, 2009)

Exelente meta !! Veo que le vas agarrando la mano ya la interfaz te ha quedado increible


----------



## Meta (Jun 16, 2009)

Hola:

	Chico3001:

Antes de subir el servidor la interfaz de php, me tienes que decir el puerto de la base de datos y la dirección.

Crea una base de datos e inserta estos datos en l atabla.


```
--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `dispositivos`
--

CREATE TABLE IF NOT EXISTS `dispositivos` (
  `ID` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL,
  `estado` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `descripcion` varchar(200) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Volcar la base de datos para la tabla `dispositivos`
--

INSERT INTO `dispositivos` (`ID`, `nombre`, `estado`, `descripcion`) VALUES
(1, 'RELE 1', 1, 'Motor 1'),
(2, 'RELE 2', 1, 'Motor 2'),
(3, 'RELE 3', 1, 'Alarma'),
(4, 'RELE 4', 1, 'WebCam');
```


----------



## Chico3001 (Jun 16, 2009)

Ya esta creada la base de datos, las claves para accesar te las mande por privado...


----------



## Meta (Jun 16, 2009)

Gracias por responder.

Ahora si es posible, crea esta otra base de datos y tabla que es una prueba del programa C#.


```
--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tabla01`
--

CREATE TABLE IF NOT EXISTS `tabla01` (
  `RELE_1` tinyint(1) DEFAULT NULL,
  `RELE_2` tinyint(1) DEFAULT NULL,
  `RELE_3` tinyint(1) DEFAULT NULL,
  `RELE_4` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;

--
-- Volcar la base de datos para la tabla `tabla01`
--

INSERT INTO `tabla01` (`RELE_1`, `RELE_2`, `RELE_3`, `RELE_4`) VALUES
(1, 1, 0, 0);
```

Ya me avisarás. Por ahora esto es todo.

Saludo.


----------



## Chico3001 (Jun 16, 2009)

Creada la tabla mundosel_webinte2 y añadidos los datos... 

los datos para accesar son los mismos que mundosel_webinter


----------



## Chico3001 (Jun 17, 2009)

Ando revisando tu codigo PHP para subirlo al server y no entiendo bien como estas logrando la comunicacion entre las 2 computadoras... me puedes aclarar un poco el tema para ayudarte en la parte del server?


----------



## Meta (Jun 17, 2009)

Hola:

- Falta el programa hecho con Visual C#.
- Tanto PHP y Visual C# leen los valores de la base de datos MySQL.
- PHP modifica los valores de On/Off de la base de datos.
- Visual C#, los lee y los interpreta al mismo tiempo envía órdenes al PIC por puerto serie (También recibir datos).

Un cordial saludo.


----------



## Chico3001 (Jun 17, 2009)

No podriamos modificar de algun modo el PHP del servidor y el SQL para que se comuniquen entre ellos? asi podriamos eliminar el problema de tener que permitir el acceso por IP.... 

Estoy investigando de que manera se puede abrir y cerrar un socket en PHP....


----------



## Meta (Jun 17, 2009)

PHP siempre se comunica al SQL. Lo de la IP ya que cosa del servidor Web y hay muchos, el más usado es el Apache y dirige PHP y la IP. El router de tu casa debe tener acceso libre al exterior o Internet, sobre todo los nuevos.

No se si PHP puede abrir y cerrar sockect, voy a investigar.


----------



## Chico3001 (Jun 18, 2009)

Esto puede servir de mucho... si logramos la comunicacion por medio de sockets podemos reducir muchisimo los requerimientos

http://www.php.net/sockets
http://www.php.net/manual/es/sockets.examples.php
http://www.elguruprogramador.com.ar/articulos/introduccion-a-los-sockets-en-php.htm
http://theseismo.wordpress.com/2007/05/07/trabajando-con-sockets-en-php/
http://www.arrakis.es/~dmrq/beej/theory.html

Pero segun lo que tengo entendido PHP solo se puede conectar como cliente a un servidor.... y necesitamos que sea alrevez... a menos que pongamos la computadora de la casa en modo servidor corriendo un programa en C a esperar una conexion desde internet.....


----------



## Meta (Jun 18, 2009)

No se exactamente para que quieres los sockes si solo controla puerto de entrada y salida de programas hacia internet como HTTP que es el 80 y 8080 por defecto, 21 del FTP, nada de ello controla el puerto seire, por eso lo hago con Visual C# _(puede ser otro lenguaje)_ que haga de intermediario que si lo puede controlar.


----------



## Chico3001 (Jun 19, 2009)

Segun he leido la manera mas sencilla de mandar datos de una computadora a otra es por medio de sockets.... lo unico que se hace es abrir la conexion desde el cliente, procesar los datos en el servidor (para este ejemplo manipular el puerto serie) y devolver el resultado al cliente

El lenguaje de programacion mas comun en internet es php y para una PC casera es C, en ambos lenguajes es bien facil manipular un socket, pero ademas de eso se presenta una ventaja extra.... como un socket es comunicacion de red a nivel mas basico podriamos conectar el PIC a un controlador Ethernet y recibir los datos directamente de internet sin pasar por la PC....


----------



## Meta (Jun 28, 2009)

Pueden probar el programa intermediador bajo C# que controla y lee el MySQL.

Ya funciona el PHP y Visual C# como lectura y modificación para poder controlar el puerto serie.

Debes tener el MySQL instalado y con su tabla correspondiente creado. Para saber como se configura mira este manual de la página 97.


```
--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `dispositivos`
--

CREATE TABLE IF NOT EXISTS `dispositivos` (
  `ID` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL,
  `estado` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `descripcion` varchar(200) NOT NULL,
  PRIMARY KEY (`ID`),
  FULLTEXT KEY `nombre` (`nombre`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Volcar la base de datos para la tabla `dispositivos`
--

INSERT INTO `dispositivos` (`ID`, `nombre`, `estado`, `descripcion`) VALUES
(1, 'RELE 1', 0, 'Motor 1'),
(2, 'RELE 2', 0, 'Motor 2'),
(3, 'RELE 3', 0, 'Alarma'),
(4, 'RELE 4', 0, 'WebCam');
```

Comprobarán que lo que hace en PHP lo hace C# y viceversa.


----------



## Moyano Jonathan (Jun 28, 2009)

Exelente trabajo meta


----------



## Meta (Jun 29, 2009)

El nombre de usuario es: Acaymo
La contraseña es: Metaconta2009

Ahora me falta programar el puerto serie para que me haga caso.


----------



## Meta (Jul 7, 2009)

Sigo con el proyecto:







En teoría funciona desde PHP y Visual C# _(más adelante en Visual C++ y Visual Basic .net)_. 

Me falta ya la programación del puerto serie que no lo he hecho porque estoy centrado en crear un función de auditoría o monotoreo de los relés con su hora y fecha.

Con la auditoría sabremos la fecha y hora exacta cuando se produce el cambio de estado de los relés, por ejemplo: Cuando se activa un motor, alarma, etc,






¿Alguna idea para el proyecto?


----------



## ale_nevermind (Jul 8, 2009)

ando interesado en tu proyecto, podria contribuir con la parte de sensores y manejo de pic's esclavos y maestros para monitorear muchos datos en una instalacion..
Lo q no entiendo de tu proyecto con tantos lenguajes de los q hablas, ya q no use aun muchos de ellos, es si actualmente tu version "escritorio" permite conectar dos maquinas por IP's, o con uso de sockets, pero teniendo el programa local y remoto en las maquinas respectivas? entiendo q tu base de datos es PHP, se puede leer esta base de datos desde visual C#? actualmente existe ya el enlace entre dos PC's via internet?
La version Web ser refiere a que desde navegador un web puedes acceder al pc local?

Tengo muchas dudas, y empezare a investigar, ya q estoy haciendo un proyecto q consiste en recolectar información desde una planta, por medio de PIC's para monitoreo y automatizacion, mandar la información al PC local (server) mediante serial o USB, en hacer registros de la información y graficos de rendimientos de toda la información recopilada (supongo q la interfaz grafica en tu caso es con Visual C# y lees la base de datos desde un PHP enlazado a Visual C#?), el VC# tiene comandos para hacer todos los eenvios de tramas a traves de internet? tiene comandos para manejar puertos USB o Serial?

Disculpame por tener tantas preguntas, pero estoy empezando a recopilar información para mi proyecto, pero solo habia trabajado hasta ahora con Delphi en interfaces graficas bastante simples...

De hecho q tengo  q hacerlo, asi q si me das unas pautas podria empezar y colaborar.


----------



## Meta (Jul 8, 2009)

ale_nevermind dijo:
			
		

> ando interesado en tu proyecto, podria contribuir con la parte de sensores y manejo de pic's esclavos y maestros para monitorear muchos datos en una instalacion..
> 
> ¿Qué ideas tienes en esta parte sobre esclavos y maestros? Sobre los sensores, por supuesto.
> 
> ...



En estos momentos estoy peleando con el monitoreo o auditoría de qué RELÉ ha sido desactivado o activado indicando quién lo hizo, su hora, etc. En cuanto acabe con ello, ya empezaré con la programación del puerto serie que este tema si lo tengo claro.

¿Alguna pregunta?


----------



## ale_nevermind (Jul 8, 2009)

Hola de nuevo.. te explico un poco de mi proyecto..
Consta de una planta de tratamiento de aguas residuales, donde existen muchos sensores y maquinarias, esta está a 4 o 5 Km de la planta principal. El objetivo es obtener información de los flujos de agua, dosificaciones de quimicos, niveles de oxigeno en los tanques purificadores, estados de los motores, etc.. incluso hacer una planificacion para el manejo, ya que consta de muchos motores de redundancia, q tienen usos rotativos...
Mediante sensores en cada parte critica e indicadores en el tablero de mando, se pretende conocer los proeceso exactos que estan en funcionamiento, y con esa información, generar reportes de la utilizacion, me imagino q todos estos seran registros q iran guardados en campos especificos en una base de datos.

La información en cada punto de control sera recopilada por modulos de adquisicion de datos implementados por varios PICs q seran los esclavos, y estaran ceentralizados, en un solo pic Maestro, este estara conectado directamente a la PC.

En esta PC, (local) se hara todo el monitoreo, y la idea idea es q en la planta principal se cree un programa (Cliente) q reciba toda esta información, el cual tbn puede mandar información para manejar algunos procesos.

La version via Web q manejas esta interesante, pero yo requiero q dos PC's q se conecten por internet, sin tener q chiparme con servidores  y todo eso, solamente dos programas q hagan intercambio de tramas, las cuales seran interpretadas en el respectivo PC.

Por lo tanto, de acuerdo a tu investigacion y experiencia, quiero saber cual de tus versiones me sirven, y que lenguajes, y librerias utilizaste en cada etapa... como requieero almacenar los informees, imagino q todo esto se almacena en una base de datos... entonces mas o menos q cosas debo aprender para manejar todo esto, la interfaz grafica, comunicacion Serial, comunicacion IP, y bases de datos, para q todo esto este en un solo programa.


----------



## Meta (Jul 9, 2009)

Lo de envío de tramás lo estaba haciendo y hay algo hecho aún en pruebas. Lo dejé porque la demanda quiren que sea vía Web.

DESCARGAR PC1-Cliente

DESCARGAR PC2-Server

Aquí están los clientes y servidor de envío y recepción de tramas. Quizás en el futuro continue hacerlo.


----------



## Meta (Jul 9, 2009)

¿Alguien sabe manejar bien los triggers de MySQL? Lo quiero para hacer auditoría o monitoreo.

Otra cosa.

Con la EEPROM 24LC1025 conectado al PIC mediante I2C. ¿Está bien para almacenar datos de minotoreo? Por ejemplo la capacidad que tiene. Lo haría con una tarjeta de esas de 16GB como las mmc para móviles y cámaras digitales, pero no se manejarlas.


----------



## Chico3001 (Jul 9, 2009)

Yo la veo adecuada, pero creo que seria mas simple usar la PC para guardar ese tipo de información...


----------



## Meta (Jul 9, 2009)

En el PC se hará con seguridad. en EEPROM opcional. Vamos a dejarlo por si acaso.


----------



## Chico3001 (Jul 9, 2009)

En una EEPROM serial el diseñador es el que especifica el formato de como se guardan los datos, pero en una Memoria SD estandar se tiene que usar el protocolo FAT32 para que pueda ser leida en una PC convencional

Por velocidad y simpleza es mejor hacerlo con EEPROM serial ya que los ejemplos abundan en la red y despues se puede ir haciendo un poco mas complejo para expandirlo a que ocupe una FAT32


----------



## Meta (Jul 9, 2009)

Lo de la EEPROM es opcional, aunque me gustaria hacerlo con un MMC o SD o algo que se el parezca. Hay poca información en libros sobre ella.

Por ahora me centro en el MySQL, todavía sigo peleando con los triggers para la auditoría. Puedo ya empezar a trabajar sin la auditoría pero lo veo incompleto.

Por si acaso alguien lo sabe les dejo mi duda.



Estoy aprendiendo los trigger, la verdad me cuesta manejarlo.

He creado una base de datos llamado *prueba01*. Y dos tablas llamada *dispositivos* y *datos*.

Sospecho que tengo mal diseñado la tabla datos para que el trigger se pueda cumplir y necesito ayuda.

*dispositivos*





*datos*





Los códigos de creación de la tabla dispisitivos es:

```
--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `dispositivos`
--

CREATE TABLE IF NOT EXISTS `dispositivos` (
  `ID` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL,
  `estado` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `descripcion` varchar(200) NOT NULL,
  PRIMARY KEY (`ID`),
  FULLTEXT KEY `nombre` (`nombre`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Volcar la base de datos para la tabla `dispositivos`
--

INSERT INTO `dispositivos` (`ID`, `nombre`, `estado`, `descripcion`) VALUES
(1, 'RELE 1', 0, 'Motor 1'),
(2, 'RELE 2', 0, 'Motor 2'),
(3, 'RELE 3', 0, 'Alarma'),
(4, 'RELE 4', 0, 'WebCam');
```

Tabla datos es:

```
--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `datos`
--

CREATE TABLE IF NOT EXISTS `datos` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `RELE_1` tinyint(4) NOT NULL,
  `RELE_2` tinyint(4) NOT NULL,
  `RELE_3` tinyint(4) NOT NULL,
  `RELE_4` tinyint(4) NOT NULL,
  `FECHA_HORA` datetime NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=13 ;

--
-- Volcar la base de datos para la tabla `datos`
--

INSERT INTO `datos` (`ID`, `RELE_1`, `RELE_2`, `RELE_3`, `RELE_4`, `FECHA_HORA`) VALUES
(1, 0, 0, 0, 0, '2009-07-09 11:17:34'),
(2, 1, 0, 0, 0, '2009-07-09 11:17:35'),
(3, 0, 0, 0, 0, '2009-07-09 11:17:36'),
(4, 1, 0, 0, 0, '2009-07-09 11:17:36'),
(5, 0, 0, 0, 0, '2009-07-09 11:17:37'),
(6, 1, 0, 0, 0, '2009-07-09 11:17:37'),
(7, 1, 1, 0, 0, '2009-07-09 11:17:37'),
(8, 1, 1, 1, 0, '2009-07-09 11:17:38'),
(9, 1, 1, 1, 1, '2009-07-09 11:17:38'),
(10, 1, 1, 1, 0, '2009-07-09 11:17:39'),
(11, 1, 1, 0, 0, '2009-07-09 11:17:39'),
(12, 1, 0, 0, 0, '2009-07-09 11:17:39');
```


Sigo sospechando que hay que hacer diseñar mejor la tabla datos para que el trigger funcione. ¿En qué consiste estas tablas?

Consiste en que la tabla *dispositivos* se altera cualquier dato en el campo _estado_, se la tabla *datos* como auditoría o minotore o logs.

Si modifico a uno el ID=1 del campo estado a 1 que antes estaba a 0.




Se cambia a 1 como muestra en la siguiente imagen.





Desde ahí tiene que activarse el supuesto triggers que no se como se hace. El resultado es que el campo RELE_1 se activa a 1 como ocurrió en la tabla *dispositivos*.






Siguiendo con el ejemplo. Vamos a modificar el ID=3 del campo _estado_ de la tabla *dispositivos* a 1. Quedaría como muestra abajo.






Ya que el supuesto trigger ha detectado un cambio en cualquier campo de RELE_1 al RELE_4, pues actualiza una nueva ID en la tabla datos que ahora se llama ID=2 y queda como muestra en la imagen siguiente.






Así seguirá la tabla *datos* creciendo mientras el trigger detecte cualquier modificación de la tabla *dispositivos* en el campo _estado_.

Espero haber explicado bien el tema. Que consiste en hacer un triggers ser capaz de lo que pido porque no se hacerlo. Cualquier duda que no entienda me avisa para explicarlo lo mejor posible para que lo entiendan.

Un cordial saludo.


----------



## Chico3001 (Jul 9, 2009)

La idea del trigger es muy buena... pero segun veo en wkipedia solo se acepta para SQL v5 o superior...., por otro lado donde lo estas creando?

A mi modo de ver tendria que ser algo asi:



```
CREATE TRIGGER actualizar_auditoria
     BEFORE UPDATE ON dispositivos
     FOR EACH ROW BEGIN
        INSERT INTO datos
        VALUES (valores viejos + fecha)
     END
```

tambien hay que tener cuidado con los triggers... segun veo en esta web  es muy facil olvidarse de ellos y generar programas, no seria mejor poner una funcion trigger() dentro del codigo de programa para hacerlo mas facil de editar?

Mas ejemplos:

http://dev.mysql.com/doc/refman/5.0/es/triggers.html
http://dinh.wordpress.com/2006/02/16/mysql-trigger-examples/


----------



## Meta (Jul 9, 2009)

Hola:

¿Te refiere lo del trigger() hacerlo desde C#?

Lo tengo hecho y funciona, pero bajo en PHP no funciona.

Bájate el programa de nuevo y escribes en mysql-

*use prueba01;*

Después:

*select * from datos;*

Puedes ver como se ha actualizado. ¿Puedes comprobarlo?


```
+----+--------+--------+--------+--------+---------------------+
| ID | RELE_1 | RELE_2 | RELE_3 | RELE_4 | FECHA_HORA          |
+----+--------+--------+--------+--------+---------------------+
|  1 |      0 |      0 |      0 |      0 | 2009-07-10 01:30:23 |
|  2 |      1 |      0 |      0 |      0 | 2009-07-10 01:30:24 |
|  3 |      1 |      1 |      0 |      0 | 2009-07-10 01:30:24 |
|  4 |      1 |      1 |      1 |      0 | 2009-07-10 01:30:24 |
|  5 |      1 |      1 |      1 |      1 | 2009-07-10 01:30:25 |
|  6 |      1 |      1 |      1 |      0 | 2009-07-10 01:30:25 |
|  7 |      1 |      1 |      0 |      0 | 2009-07-10 01:30:26 |
|  8 |      1 |      0 |      0 |      0 | 2009-07-10 01:30:26 |
+----+--------+--------+--------+--------+---------------------+
8 rows in set (0.02 sec)
```

Saludo y gracias por las respuestas.


----------



## ale_nevermind (Jul 9, 2009)

Meta dijo:
			
		

> Lo de envío de tramás lo estaba haciendo y hay algo hecho aún en pruebas. Lo dejé porque la demanda quiren que sea vía Web.
> 
> DESCARGAR PC1-Cliente
> 
> ...




Muchas gracias por aclararme un poco esto, te cuento q estuve siguiendo ese manual donde dice como controlar el puerto serial con Visual C# .net, y me parece fantastica la forma en q lo explica, ahora entiendo mejor este paquete.

Veo q tu programa es una adaptacion al anterior q solo permitia hacerlo por medio del puerto serial, ahora si mandas tramas, aplicando el mismo principio...

Ya los descargue, pero veo q solo esta el ejecutable, me puedes enviar el codigo, o explicarme q codigos usar para el envio de tramas en Visual C#? Mi objetivo es seguiir con tu version de escritorio.


----------



## Meta (Jul 9, 2009)

¿Has probado y te funciona el PC1 y PC2?

No envío código hasta que haga las cosas con fundamento y funcione bien. Después se entregará junto con el  manual sobre ello. 

Lo de las tramas lo he dejado de lado *(al menos por ahora)* para poder hacerlo bajo PHP que es lo que le interesa la mayoría de la gente.

Eso si, utilizaré como cliente el nuevo programa bajo C# con MySQL pero sin tramas, que es lo que estoy intentando hacer ahora y llevo tiempo con un cacao mental.

Saludo.


----------



## Meta (Jul 12, 2009)

*Avances:*

- Por fin de tanto tiempo de hacer un triggers para un monitoreo o auditoría ya funciona.

En futuras mejoras.

- Me falta crear código necesario para la lectura del monitoreo desde C#.





- Diseñar una buena interfaz algo parecido a la imagen de abajo.





- Cuando nos pongamos de acuerdo como les interesa el modelo de Interfaz tanto de Visual C# y PHP, empiezo a la programación del puerto serie _(junto con el puerto paralelo depende de lo que ustedes prefieran y más en el futuro por USB, que aprenderé con los manuales de Moyano)_. Haré varios diseños y ustedes eligen el más que les gusten.

Les dejo la base de datos creada junto con el triggers.

```
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- [url]http://www.phpmyadmin.net[/url]
--
-- Servidor: localhost
-- Tiempo de generación: 13-07-2009 a las 05:28:43
-- Versión del servidor: 5.1.36
-- Versión de PHP: 5.2.10

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: `prueba01`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `datos`
--

CREATE TABLE IF NOT EXISTS `datos` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `RELE_1` tinyint(4) NOT NULL,
  `RELE_2` tinyint(4) NOT NULL,
  `RELE_3` tinyint(4) NOT NULL,
  `RELE_4` tinyint(4) NOT NULL,
  `FECHA_HORA` datetime NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla `datos`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `dispositivos`
--

CREATE TABLE IF NOT EXISTS `dispositivos` (
  `ID` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL,
  `estado` tinyint(3) NOT NULL DEFAULT '0',
  `descripcion` varchar(200) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- (Evento) desencadenante `dispositivos`
--
DROP TRIGGER IF EXISTS `prueba01`.`logestado`;
DELIMITER //
CREATE TRIGGER `prueba01`.`logestado` AFTER UPDATE ON `prueba01`.`dispositivos`
 FOR EACH ROW BEGIN

       DECLARE Rele1 INT;
       DECLARE Rele2 INT;
       DECLARE Rele3 INT;
       DECLARE Rele4 INT;

       SET Rele1 = (SELECT estado
       FROM dispositivos
       WHERE nombre LIKE 'RELE 1');

       SET Rele2 = (SELECT estado
       FROM dispositivos
       WHERE nombre LIKE 'RELE 2');

       SET Rele3 = (SELECT estado
       FROM dispositivos
       WHERE nombre LIKE 'RELE 3');

       SET Rele4 = (SELECT estado
       FROM dispositivos
       WHERE nombre LIKE 'RELE 4');

       INSERT INTO datos (RELE_1, RELE_2, RELE_3, RELE_4, FECHA_HORA)
       VALUES (Rele1, Rele2, Rele3, Rele4, NOW());

END
//
DELIMITER ;

--
-- Volcar la base de datos para la tabla `dispositivos`
--

INSERT INTO `dispositivos` (`ID`, `nombre`, `estado`, `descripcion`) VALUES
(1, 'RELE 1', 0, 'Motor 1'),
(2, 'RELE 2', 0, 'Motor 2'),
(3, 'RELE 3', 0, 'Alarma'),
(4, 'RELE 4', 0, 'WebCam');
```

Los que quieran hacer pruebas sólo con bases de datos.
- Si quieres descargar el MySQL 5.1.36 para x86 (32 Bits):
DESCARGAR

- Connector / .net 6.0.4:
DESCARGAR

- El gestor de MySQL muy bueno, fácil y libre EMS SQL Manager for MySQL Freeware (full installation package) 4.5.0.4:
DESCARGAR

- Manual sobre instalación de MySQL en la página 312 de este manual esn PDF.
DESCARGAR

- Manual puerto serie y Visual C#.
DESCARGAR


----------



## Moyano Jonathan (Jul 13, 2009)

Bueno meta al fin después de tanto tiempo un trabajo que se merece que lo pongan en destacados te felicito.


----------



## Meta (Jul 13, 2009)

Ahora si me guarda datos tanto en Visual C# como en PHP.


```
mysql> select * from datos;
+----+--------+--------+--------+--------+---------------------+
| ID | RELE_1 | RELE_2 | RELE_3 | RELE_4 | FECHA_HORA          |
+----+--------+--------+--------+--------+---------------------+
|  1 |      0 |      1 |      0 |      0 | 2009-07-13 07:37:49 |
|  2 |      1 |      1 |      0 |      0 | 2009-07-13 07:37:50 |
|  3 |      1 |      1 |      0 |      1 | 2009-07-13 07:37:51 |
|  4 |      1 |      0 |      0 |      1 | 2009-07-13 07:37:52 |
|  5 |      1 |      1 |      0 |      1 | 2009-07-13 07:37:54 |
|  6 |      1 |      0 |      0 |      1 | 2009-07-13 07:37:54 |
|  7 |      0 |      0 |      0 |      1 | 2009-07-13 07:37:55 |
|  8 |      0 |      1 |      0 |      1 | 2009-07-13 07:37:56 |
|  9 |      1 |      1 |      0 |      1 | 2009-07-13 07:37:57 |
| 10 |      1 |      0 |      0 |      1 | 2009-07-13 07:37:57 |
| 11 |      0 |      0 |      0 |      1 | 2009-07-13 07:37:57 |
| 12 |      0 |      0 |      0 |      0 | 2009-07-13 07:37:58 |
| 13 |      0 |      0 |      0 |      1 | 2009-07-13 07:37:58 |
| 14 |      0 |      0 |      0 |      0 | 2009-07-13 07:37:59 |
| 15 |      0 |      0 |      0 |      1 | 2009-07-13 07:37:59 |
| 16 |      0 |      0 |      0 |      0 | 2009-07-13 07:38:00 |
| 17 |      0 |      0 |      0 |      1 | 2009-07-13 07:38:00 |
| 18 |      0 |      0 |      0 |      0 | 2009-07-13 07:38:00 |
| 19 |      0 |      0 |      0 |      1 | 2009-07-13 07:38:01 |
| 20 |      0 |      0 |      0 |      0 | 2009-07-13 07:38:01 |
| 21 |      0 |      1 |      0 |      0 | 2009-07-13 07:38:02 |
| 22 |      1 |      1 |      0 |      0 | 2009-07-13 07:38:02 |
| 23 |      1 |      1 |      1 |      0 | 2009-07-13 07:38:04 |
| 24 |      1 |      1 |      1 |      1 | 2009-07-13 07:38:04 |
| 25 |      1 |      0 |      1 |      1 | 2009-07-13 07:38:05 |
| 26 |      0 |      0 |      1 |      1 | 2009-07-13 07:38:05 |
| 27 |      0 |      0 |      1 |      0 | 2009-07-13 07:38:06 |
| 28 |      0 |      0 |      0 |      0 | 2009-07-13 07:38:06 |
| 29 |      0 |      1 |      0 |      0 | 2009-07-13 07:38:07 |
| 30 |      1 |      1 |      0 |      0 | 2009-07-13 07:38:07 |
| 31 |      1 |      1 |      0 |      1 | 2009-07-13 07:38:08 |
| 32 |      1 |      1 |      1 |      1 | 2009-07-13 07:38:08 |
| 33 |      1 |      0 |      1 |      1 | 2009-07-13 07:38:08 |
| 34 |      0 |      0 |      1 |      1 | 2009-07-13 07:38:09 |
| 35 |      0 |      0 |      0 |      1 | 2009-07-13 07:38:09 |
| 36 |      0 |      0 |      0 |      0 | 2009-07-13 07:38:10 |
+----+--------+--------+--------+--------+---------------------+
36 rows in set (0.00 sec)
```




ale_nevermind

En cuanto a tu argumento que me dejaste en privado.

Seguiré haciendo el modo escritorio con UDP a tramas en el futuro, ahora la mayoría prefieren PHP. Sólo lo tengo pausado. Sobre las librerías que he usado, no se usan librerías, sólo programación la que te viene en el C# y .NET.


Moyano Jonathan

El tuyo es más importante e interesante, ese si debería ir en destacado para que no se pierda en las profundidades del foro. Con el mio y el tuyo ya los uniré para hacerlo funcionar con PIC18F2550 por USB y desde Internet ya podemos controlar en plan en sistemas de domótica.

Por ahora haré pruebas con el PIC16F84A y puerto serie _(en el futuro USB 2.0 y 18F con tu ayuda, m´s en el futuro con USB 3.0 que está al lado y su nuevo PIC que ya sacarán)_. 

Me matriculé hace poco un curso de Ciclo Formativo de Grado Superior Desarrollo de Aplicaciones Informáticas [semipresencial] para aprender programación, dura tres años. Espero que ya con esos conociminetos ya me atreva a usar AVR de Atmel y los PIC32 que son una pasada.

Para acabar cuanto antes que ya llevo demasiado tiempo con este tema, necesitaré colaboradores de este proyecto. Por ejemplo:

*1- Instalar un servidor Web casero con PHP y MySQL. (Ver manual PDF).
2- Configurar el router. Los nuevos son necesaria la configuración para que los demás tengan acceso por vía Web. (Más información aquí y aquí por si no sabes configurarlo).
3- Saber su IP pública (no publicarla aquí) en http://www.adslayuda.com/ip.html o http://www.whatismyip.com
4- Estar registrado con el www.dyndns.com por si se te cambia la IP.
5- Tener instalado el programa intermediario de Visual C#. (Para que controle el puerto serie, presisamente el que estoy desarrollando).
6- Con sólo C# y MySQL instalado ya puede funcionar el proyecto sin Vía Web bajo PHP.
7- Lo más majadero de tener ganas es montar en la protoboard el PIC16F84A con el MAX232 para conectarlo al puerto serie. ¿Te atreves? Ya pondré los archivos *.HEX y *.ASM. Aún así, lo puedes conseguir aquí.
8- Como nota final, grabar con el movil un vídeo para subirlo a youtube y ver como controlar el PIC por Internet. Controlar motores de ordenador, pitos de un altavoz, luz, lo que quieran conectar al PIC por puerto serie.*

No es complicado como parece. Estamos en proceso de desarrolo que poco a poco lo vamos hacer lo más simple posible según vayamos avanzando.

Para ahorrar quebraderos de cabeza como instalando servidores Web caseros, crear una base de datos y la interfaz de php en un servidor público como Lycos, Iespana o cualquier otro para poder hacer las pruebas. Dentro de un rato hago un esquema gráfico de las diferentes formas de lograrlo y hacerlo más fácil posible.

YouTube - Motor DC controlado con  PIC16F84A base RS232

_"No puedes decir no, si no lo dejas de intentar"._

Gracias al equipo foros de elecrónica, estamos llegando a donde estamos y donde estaremos...

...gracias de nuevo.


----------



## ale_nevermind (Jul 14, 2009)

Bueno, agradezco mucho la información, en base a eso  seguire intentando hacer la programacion para envio de tramas por TCP/IP con ayuda de sockets, estare recabando información, y ansioso de aportar con esto al proyecto


----------



## Meta (Jul 14, 2009)

Envío de tramas, el código está fatal pero quizás lo entiendas.


```
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;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace PC1_Cliente
{
    public partial class Form_principal : Form
    {
        public Form_principal()
        {
            InitializeComponent();
        }

        public void serverThread()
        {
            UdpClient udpClient = new UdpClient(8888);
            while (true)
            {

                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
                string returnData = Encoding.ASCII.GetString(receiveBytes);
                string returnData2 = Encoding.ASCII.GetString(receiveBytes);
              //  lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString() + ":" + returnData.ToString());
                returnData2.ToString();
                label1.Text = returnData2.ToString();

               
            }
        }

        private void button_Conectar_Click(object sender, EventArgs e)
        {
            UdpClient udpClient = new UdpClient();
            udpClient.Connect(textBox1.Text, 8888);
            Byte[] sendBytes = Encoding.ASCII.GetBytes(textBox2.Text);
            udpClient.Send(sendBytes, sendBytes.Length);
            textBox2.Clear();
        }

        private void button_t_Click(object sender, EventArgs e)
        {
           // Byte[] sendBytes = Encoding.ASCII.GetBytes("iktvdiktnhgsjicnhsirghuirsghiscdriksdrcylkghvxifhdfg");
            UdpClient udpClient = new UdpClient();
            udpClient.Connect(textBox1.Text, 8888);
            Byte[] EnviaBytes = Encoding.ASCII.GetBytes("Motor: ON");
            udpClient.Send(EnviaBytes, EnviaBytes.Length);
            
        }

        private void button_b_Click(object sender, EventArgs e)
        {
            UdpClient udpClient = new UdpClient();
            udpClient.Connect(textBox1.Text, 8888);
            Byte[] EnviaBytes = Encoding.ASCII.GetBytes("Motor: OFF");
            udpClient.Send(EnviaBytes, EnviaBytes.Length);
        }
    }
}
```

Es por UDP. No llegué usar el TCP/IP, por ahora.


----------



## Moyano Jonathan (Jul 14, 2009)

Felicitaciones meta ! 

En cuanto termine con mi manual me pongo a ayudarte con el tema de "Control de dispositivos a distancia mediante USB" ............ un posible título a futuro.


----------



## Meta (Jul 14, 2009)

De nada...

Por cierto. ¿En Proteus se puede simular el puerto serie virtual conectandolo con Visual C#?

Saludo.


----------



## Moyano Jonathan (Jul 14, 2009)

Si con el COMPIM es un puerto virtual que se conecta a un COM de la PC pudiendo interactuar con el.


----------



## Chico3001 (Jul 27, 2009)

Algunas modificaciones:

- Permitir usar cualquier loguin para conectarse a la la base SQL
- Quitar la pestaña de configuracion y colocarla en el menu
- Añadir una advertencia en la ventana de monitoreo para indicar que es la bitacora y no se pueden modificar datos desde alli
- Poner una ventana de advertencia de que la comunicacion con la base de datos es exitosa o erronea
- A la hora de crear la tabla de monitoreo, llenar la primera linea con información todo en ceros para saber cuando fue creada la base y ademas tener una entrada que se puede ver


----------



## Meta (Jul 28, 2009)

Tomo nota a tus sugerencias de arriba y las aplicaré.

Voy a incluir la elección de idiomas para extender mejor el programa.

Les envío un ejemplo de cambio de idiomas, en este caso es el Español, Inglés y Alemán por poner ejemplos.

Hay muchas variantes del Español y elegí Español-España, los hay de Méjico, Argentina, etc. Si quieren me dicen cual idioma introduzco para el programa final de la lengua española.

Cada idioma se guarda en un archivo cerca del .exe y es una dll, en caso de que esa dll no lo encuentra, como idioma principal es el español. Aunque se recomienda ponerlo en inglés, deja ver como lo dejamos al final.

*EDITO:*
Necesito opinión de los demás sobre los bonotes verde y rojo para ponerlo en Español, de momento lo tengo en Inglés. ¿Qué pondría ustedes?







Saludo.


----------



## mcrven (Jul 28, 2009)

META, hay unos símbolos que se han universalizado, el play simbólico y pare simbólico de las grabadoras y reproductoras de medios: El Triángulo para el primero y el Cuadrado para el segundo.

Espero que entiendas de lo que hablo, que no tengo iconos a la mano para ponerlos aquí.

Saludos chaval:


----------



## Chico3001 (Jul 28, 2009)

mcrven dijo:
			
		

> META, hay unos símbolos que se han universalizado, el play simbólico y pare simbólico de las grabadoras y reproductoras de medios: El Triángulo para el primero y el Cuadrado para el segundo.
> 
> Espero que entiendas de lo que hablo, que no tengo iconos a la mano para ponerlos aquí.
> 
> Saludos chaval:



+1


----------



## Meta (Jul 28, 2009)

Esa idea me gusta más.

PLAY

STOP

Saludo.

*EDITO:*

Se me han adelantado. ejejje


----------



## mcrven (Jul 28, 2009)

Lo dije yo primero, lo dije yo primero...

Sólo que chico3001 tenía los iconos a la mano.

Buena esa Chico.

Adelante META que va muy bien tu proyecto.

A ver si lo instalo y lo pruebo un día de estos.


----------



## Meta (Jul 28, 2009)

Deja que Chico te pase lo archivos que le pase hace horas, a él le funciona por ahora. 

La comodidad que hice, es crear la base de datos, tablas, etc desde Visual C# sin tener que ir a otro smedios fuera de ella que es más complicado y tiempo.


----------



## mcrven (Jul 28, 2009)

Chico ya los puso en el post, después del mio primero.


----------



## Moyano Jonathan (Jul 28, 2009)

Veo que van rápido meta , yo estoy probando otro tipo de telecontrol y es a través del celular. Luego de que ambos terminemos nuestro proyecto sacaremos notas de comparación.


----------



## Moyano Jonathan (Jul 28, 2009)

Otra cosa meta el control del puerto serie se hace de parte del servidor.......no es cierto por lo tanto cualquier puerto usado en el servidor puede ser controlado. Entonces no sería dificil controlar el puerto USB ya que todo el control del mismo lo haría el programa servidor...nosotros lo único que tendriamos que hacer es enviarle un comando como por ejemplo poner todos los bits del puerto de un pic a 1 , el servidor tendría que interpretar el comando y realizar la acción.....

Es una idea para implementar el control por USB mediante internet como vos lo habias propuesto.


----------



## Meta (Jul 28, 2009)

Eso me llama la atención. 

Por cierto, ahora estoy en fase de diseño desde cero otra vez. La programación casi la tengo lista del todo y dentro de unas horas empiezo.

Sobre el segundo hilo, es cierto lo que dices.

Un tío me puso su vídeo en mis vídeos de youtube para que yo personalmente lo viera. Me parece que lo hizo como reto, porque sabe que el USB es mejor que el puerto COM, o eso es mi impresión.

YouTube - Comunicacion USB PIC-PC con PIC18F4550, en visual C++

Saludo.


----------



## Moyano Jonathan (Jul 28, 2009)

Es un estupides eso de mandarte un video "demostrativo" de lo que puede hacer. Con mi manual vas a poder hacer eso y bastante mas.

PD: No entiendo por que vas a tener que hacer todo el código desde 0 ?


----------



## Meta (Jul 28, 2009)

Moyano Jonathan dijo:
			
		

> Es un estupides eso de mandarte un video "demostrativo" de lo que puede hacer. Con mi manual vas a poder hacer eso y bastante mas.
> 
> Tal vez sea una estupidéz. Si alguien te manda un vídeo de él mismo y te lo muestra especilmente a ti. ¿Qué pensarías de esa persona? Siempre y cuando no sepa que sabe lo que sabes.
> 
> ...


----------



## Moyano Jonathan (Jul 28, 2009)

Entiendo ahora el porque el código desde 0


----------



## Meta (Jul 28, 2009)

Hola:

Siguiendo con el diseño de la interfaz, os dejo un ejemplo de cómo podría ser. Por ahor anoes funcional.

Saludo.


----------



## Moyano Jonathan (Jul 28, 2009)

Te ha quedado excelente la nueva interfaz meta !


----------



## Meta (Jul 29, 2009)

Colaboradores, se busca soluciones.

Bueno. Ahora toca hacer más pruebas. En este caso deben tener instalado el Connector/Net 6.1 y MySQL 5.1.36. 

Si quieres saber como se instala MySQL mira este tutorial en la página 97.

La funcionabilidad que tiene solamente es que con un botón puedan crear, actualizar y borrar los datos. De paso me comentan errores o bugs si los encuentran para corregirlo.

La opción está en *Opciones-->Configuración*.

Ya pueden dercargar el archivo y probarlo.


----------



## Meta (Ago 5, 2009)

Hola:

Pueden ya utilizar algo de mejora sobre la aplicación Visual C# en el que debes tener intsalado el MySQL 5.1.37 en este caso o superior y el connector / .Net  6.1.0

DESCARGAR Meta PIC Remote.

Encuetren cualquier bug y lo editan por aquí. Cada vez falta menos.

Saludo.

EDITO:
http://www.cual-es-mi-ip.net/


----------



## Meta (Ago 15, 2009)

En estos momentos estoy manejando el programa con el COMPIM.

Me aparece como que el puerto está cerrado. Tampoco lo hago funcionar con el programa anterior del manual que puedes descargar de esta Web.

Espero que alguien me diga como se maneja exactamente el simulador del puerto serie con Proteus. No logro ponerlo en marcha, parece que desde que activo el simulador de proteus ya como que estoy usando el puerto y aparece cerado o algo parecido.


----------



## zarco (Ago 15, 2009)

Hola meta... soy nuevo en el foro... estaba buscando información porq estoy interezado en montar tu aplicación pero manejando el puerto usb. Voy a estar al tanto para una posible ayuda. Por mi parte voy a ir mirarndo lo del manejo del puerto usb con el pic 18f4550 (q es el q yo manejo) y C#.


----------



## lubeck (Ago 16, 2009)

hola 
Lei casi todo tu proyecto y la verdad esta interesante.

lo que no me gusto fue esto:


> Un tío me puso su vídeo en mis vídeos de youtube para que yo personalmente lo viera. Me parece que lo hizo como reto, porque sabe que el USB es mejor que el puerto COM, o eso es mi impresión.



Me parece mala leche del tio, y sabemos que no ha descubierto el eslabon perdido, compre una interface de USB 8 entradas analogicas 8 salidas digitales y 8 entradas digitales de la marca phidget que tiene un OCX para VB o C y me costo alrededor de UD150.00, Me he gastado, entre pruebas y tiempo, alrededor de unos UD200.00 en hacer una que no le llega ni a los tobillos (o en este caso a las resistencias), muy simple pero con la ventaja de le puedo conectar mas salidas o entradas a placer en cascada. ademas de la satisfaccion de que yo la hice.

Me gustaria, si aceptan dar mis experiencias... e integrarme a su foro.

anexo manual de la phidget... yo tome muchas ideas de ahi..


----------



## lubeck (Ago 16, 2009)

Oigan, corriganme si me equivoco....   
¿USB? tengo mis dudas, yo por eso casi descarte la opcion de la phidget es lentisima segun el manual hace 125 muestreos de la entradas por segundo, la que hice que es por paralelo hace 8bit por milisegundo, o sea que me puedo echar un pedo y digitalizarlo con una resolucion increible, y para el envio de los datos tuve que implementar un buffer para capturar y procesar las lecturas por el retraso de dichoso internet.


----------



## kaiser1313 (Ago 16, 2009)

Hola meta, sabes que mi trabajo especial de grado se trata de un sistema de teleoperacion a traves de internet de un brazo robot de 5 grados de libertad y pues ya he logrado hacerlo pero usando java (servlets, applets, JSPs) en realidad me resulto bastante complicado, epro ahora ya puedo desde cualquier Pc en el mundo controlar la Pc que tengo de servidor y enviar datos por el puerto serial de la misma (servidor) a el robot, ademas de activar la camara web para visualizar los movimientos y todo, en si es un buen control completo...

Si quieres alguna información referente pues me dices...

Saludos...


----------



## lubeck (Ago 16, 2009)

kaiser el robot lo controlas con motores pap?, en terminos generales como hiciste para controlarlos enviaste el tren de pulsos via internet o el robot tenia una tarjeta controladora?, pregunto porque quiere hacer mas o menos lo mismo pero no se cual seria el mejor metodo...


----------



## kaiser1313 (Ago 16, 2009)

Bueno el robot posee un microcontrolador (que habia programado ya un compañero de la uni) que sirve de master, al cual le llegan los comandos por Puerto serial (que todo eso si lo hice yo) y pues este envia comandos por el puerto C a otros microcontroladores que se encuentran en cada articulacion (1 por articulacion), estos trabajan con un protocolo parecido a i2c pero se llama TR-bus, asi que si investigas que es sabras como se envian las comandos desde el master a los esclavos...

Al master desde el cliente de internet le envio son una serie de letras y numeros que junto a una rutina de decodificacion que se encuentra en el micro master (que no es mas que una estructura case) se logra seleccionar cual subrutina de movimiento ejecutar y asi consigo mover las articulaciones...


----------



## Meta (Ago 16, 2009)

kaiser1313 dijo:
			
		

> Si quieres alguna información referente pues me dices...



...pues si.   

Frente a los motores se usa mucho el Futaba S3003 bajo PWM.

Saludo.


----------



## kaiser1313 (Ago 16, 2009)

Que necesitas o te gustaria saber y con gusto te sirvo la información?


----------



## lubeck (Ago 17, 2009)

Gracias por la información me doy una idea, investigare mas al respecto, al pricipio no entendi,  upsss..., pero como mencionaste el secreto para entenderlo es el i2c...

Saludos...


----------



## lubeck (Ago 19, 2009)

> Espero que alguien me diga como se maneja exactamente el simulador del puerto serie con Proteus. No logro ponerlo en marcha,...



Hola Meta, a lo mejor sale sobrando preguntarte que version del proteus tienes, porque yo hice una prueba y  si funciona, tengo el 7.5 sp3, desgraciadamente no puedo ayudarte mucho porque no tengo mucha idea de lo que pueda estar pasando...

espero ya lo hayas solucionado...

saludos...


----------



## Meta (Ago 19, 2009)

Ya me funciona. Mira el vídeo.

http://www.mikroelectronica.es.tl/Visual--.-NET-y-COMPIM.htm

http://www.proteus.110mb.com/Simulaciones_compim_Visual_Basic_p1.html

Saludo.


----------



## lubeck (Ago 20, 2009)

Va Perfecto....  no dejes de publicar tus avances... se esta  poniendo bueno..


----------



## Moyano Jonathan (Ago 20, 2009)

Exelentes tus ejemplos de uso del compim meta


----------



## Meta (Ago 21, 2009)

Pueden probar el ejemplo para ver si eres capaz de de hacer comunicar el C# con el puerto serie Virtual y Proteus.

http://www.virtualserialport.com/download/vspdxp.exe

https://www.forosdeelectronica.com/files/ejemplo_de_proteus_y_cs_637.rar

*Mini tutorial:*

*1º)* Configuramos el puerto virtual COM1 y COM2 como muestra en la imagen de abajo.







*2º)* Iniciamos Proteus y lo ponemos enmarcha la simulación.






*3º)* Con el programa de C#, pulsa el botón del RELÉ 1 y verás que ya se puede enviar y recibir datos por puerto serie.






A partir de ahí ya puedes hacer pruebas virtuales, depués en la realidad, apagar luces, activar electroválvulas para regar el jardín, la WebCam, etc...

Saludo.


----------



## Don Barredora (Ago 21, 2009)

> A partir de ahí ya puedes hacer pruebas virtuales, depués en la realidad, apagar luces, *activar electroválvulas para regar el jardín, la WebCam*, etc...



Que buena idea! no se me habia ocurrido nunca regar la webcam       

Ahora en serio: Te felicito che! esto avanza todos los dias!


----------



## Meta (Ago 21, 2009)

Algunas hay que refrescarlas.

No avansa todos los días que digamos, llevo desde Marzo, pero sigo adelante gracias a ustedes.

*EDITO*:
Por ahora os dejo el código fuente del PIC junto con sus librerías.

Descárgalo y prueban la simulación con el esuqema de Proteus.


----------



## Meta (Ago 24, 2009)

He estado pensando en hacer algo parecido en el LCD 16x2. También si es posible cambio al 20x2 o 20x4 si hace falta.







Los asteríscos * significa R-1 en ON y nada significa OFF. Se puede hacer mejor, de momento lo he hecho así por ahora si surgen nuevas ideas entre tod@s.


----------



## Meta (Ago 27, 2009)

Hola de nuevo:



Nos ha tocado un poco de programación que nos hemos pegados horas y horas para hacerlo todo bien, en el cual presentamos el código fuente. Puedes mejorarlo y hacerlo saber.

Por ahora cada dos por tres se guarda los datos en la EEPROM interna, que con el tiempo se daña ya que su actualización de datos es muy constante. Se hará un circuito que al perder la alimentación del PIC, detecte en un pin que lo ha perdido pero un condensador con tiempo suficiente para que le de tiempo a guardar los datos en la EEPROM.

En resumen.

Se utilizará lo datos en la memoria RAM a parte que es más rápida trabajando. Sólo se guardará los datos del puerto B en la EEPROM interna del PIC cuando pierda la alimentación apoyado con un condensador. Así durará más el PIC.

Si por cualquier motivo se va la luz eléctrica, se queda con los últimos RELÉS activado que has seleccionado.

Saludo.


----------



## Meta (Nov 8, 2009)

Hola:

Acaba de instalar Visual C# 2010 Express Beta 2 y me gusta la nueva interfaz. Más me gustó la famosa gráfica igual que el Excel. Quiero hacer otra vez una remodelación pequeña sobre el manual de controlar el puerto serie y que te muestre gráficas de lo que estás haciendo o has hecho con pulsar cada botón.











Miren el Visual C# 2010 Express Beta 2.











No se si se podrá usar el PIC por puerto serie directamente controlado con Excel 2007 o el Calc del OpenOffice 3.1.1. Aún así también investigaré ese campo.

Un cordial saludo.


----------



## Meta (Nov 17, 2009)

*Hola:

DEntro de poco preparo una prueba del programa y lo prueban. ¿Te atreves?

Saludo.
*


----------



## Meta (Ene 6, 2010)

Hola Javi:

En el código fuente al pulsar la letra "i" en el Terminal del Proteus me sale doble palabra y se desplaza, no se el motivo.











El código es este:

```
Mensaje_Info
    DT "FirmWare v1.00  "
    DT ENTER, CAMBIO_LINEA
    call    LCD_Linea2
    DT " PIC16F84A       "
    DT ENTER, CAMBIO_LINEA
    call    Retardo_2s
    call    LCD_Linea1
    DT "metaconta      "
    DT ENTER, CAMBIO_LINEA
    call    LCD_Linea2
    DT "@gmail.com", 0x00
    call    Retardo_2s
    call    LCD_Linea1
```
La única manera chapuza para resolverlo en meter un espacio, aún así se dezplaza y copia el espacio pero disimula más.


```
Mensaje_Info
    DT "FirmWare v1.00  "
    DT ENTER, CAMBIO_LINEA
    call    LCD_Linea2
    DT " PIC16F84A       "
    DT ENTER, CAMBIO_LINEA
    call    Retardo_2s
    call    LCD_Linea1
    DT " metaconta      "
    DT ENTER, CAMBIO_LINEA
    call    LCD_Linea2
    DT " @gmail.com", 0x00
    call    Retardo_2s
    call    LCD_Linea1
```


Otra cosa:
En el momento que se pulse la letra 'i', se queda como esclavo, es decir, que cuando pulse un relé en ON por ejemplo, no lo hace hasta que acabe los mensajes de información.

Por lo que estoy leyendo en la página 256 del libro www.16f84a.org no habla de interrupción contra retardos al menos con el 16F84A. No se si el 16F88 tendrá o otro PIC se podrá interrumpir el proceso con interrupción. Otra solución por lo que veo es usar el Timer que si se puede hacer, por ahora no se nada programarlo.

Saludo.


----------



## jair2808 (Ene 6, 2010)

muy interesante tu proyecto, Meta

yo al lado de ustedes soy un picapiedra!!!

apenas estoy con los vúmetros , y tengo algunas dificultades.

jajajajajajajajajajaja

a mí tambien me gusta mezclar el lenguaje programativo (o como sea que se diga ) y la electronica. Es obvio que estudiaste MUCHO para hacer lo que estás haciendo, cómo se llama la carrera??

y que edad tienes??, de grande quiero saber tanto como tú y más aún.

sale.. mucho éxito, que alcances todas tus METAs

jejejeje... por cierto,voy a probar uno de tus primeros archivos (cliente y servidor). Hay te digo como me fue....

no me había dad cuenta, ya llevas dos años en este foro 


Estas sooooooon las mañaniiiiiiiiiiiiiiitas que cantaaaaaaaaaba el rey Daviiiiiid XDXD


disculpame, pero creo que ya dí mucho por hoy ^^...


----------



## Meta (Ene 6, 2010)

Hola:

Estoy aprendiendo siendo autodidacta con el libro www.16f84a.org , otro mini libro de C# y sobre todo, buscar información por internet, algún que otro foro y en especial este mismo que estás leyendo.

Para que lo sepa, no se gran cosa como crees, soy aprendiz como usted.

Esperando respuesta de tus opiniones o sugerencias de los ejemplos del programa para mejorarlo.

Saludo.


----------



## jair2808 (Ene 6, 2010)

Meta dijo:


> Hola:
> 
> Bueno, ya hemos probado el cliente servidor enviando textos, y funciona. Lo pueden probar entre ustedes. Port 8888. Ahora toca averiguar como envío datos al puerto serie desde el PC1-Cliente.
> 
> ...




Cómo le hago para probarlo??

tengo dos computadoras, y quisiera mantener una comunicación constante enviando mensajes de una a otra con tu programa

tengo me descargué el PC-Cliente 1.0 y el PC-Cliente v0.3 con sus respectivos servidores


----------



## Meta (Ene 6, 2010)

Hola:

Ese ya no se usa, funciona mediante tramas, es como enviar un e-mail a otra e-mail, no mantiene conexión.

Ahora es este:
Descargar

Fíjate bien el mini tutorial de aquí._ https://www.forosdeelectronica.com/posts/193601/ _
Si quieres que te funcione.

Saludo.


----------



## jair2808 (Ene 6, 2010)

Ahora es este:

Descargar[/QUOTE dijo:
			
		

> Cuál???
> 
> Y que se necesita para ejecutar la aplicación??


----------



## Meta (Ene 6, 2010)

aejjejeej, me olvidé de ponerlo, sorry, es aquí.

Descargar

Aún así estoy por si me da hacerlo con más pines como el 16F887, 8 entradas digitales, 8 salidas digitales, 8 entradas analógicas para sensor de temperatura, etc...

Saludo.


----------



## Meta (Ene 17, 2010)

*Descargar minitutorial en PDF.*

Descargar

Saludo.


----------



## elbrujo (Ene 17, 2010)

Tenes que hacer NAT ademas del puerto y de conocer la IP publica. Pregunto una aplicacion como VNC que te permite remotear la pc, no te sirve?


----------



## Meta (Feb 24, 2010)

No lo he probado.

Se me quemó el MAX232 y el LCD, ya llevo dos. Así que tardaré en recuperar los LCD para comprarlo de nuevo.

Tendré que hacer todo de nuevo la placa y comprar componentes. Con todo el tiempo que perdí se me baja la moral.

Ver el archivo adjunto 29408


----------



## Chico3001 (Feb 24, 2010)

jijijiji... velo por el lado bueno... echando a perder se aprende... 

y creeme.... te fuiste barato.... en la escuela un cuate quemo como 10 sistemas minimos con todo y pantalla lcd... cada uno costaba alrededor de 70 usd, y todos el mismo dia...


----------



## Meta (Feb 25, 2010)

Es cierto, pero no quiero aprender perdiendo dinero, ajjajaja.

Ahora estoy para hacer una insoladora con un escaner que también presentaré como proyecto incluido su temporizador.

Al mismo tiempo estoy haciendo el grabador bomba para el revelado de las PCB.

Saludo.


----------



## Meta (May 23, 2010)

Hola:

Siguiendo el método ahora con el PIC16F887 (sustituto del 16F877A). Hay algo que no me funciona. 


  - Poner en el HyperTerminal ya que por ahora este si funciona, la palabra IN fijamente sin alterar nunca a pesar de cambiar los estados de los relés.



Les dejo un ejemplo completo a descargar.

Saludo.

PD: _Mejor usar un PIC que detecte 8 entradas digitales, 8 salidas digitales  mediante puerto serie y por Internet, después unas 6 entradas digitales  con pulsadores._


----------



## Meta (May 25, 2010)

Hola:

Necesito colaboración en este sentido ya que no encuentro el fallo para resolver este error. Debe ser solucionado para poder hacer lo del LCD.



> Error[128]   I:\PIC16F84A\PICRS232 16F886\PICRS232V2.ASM 682 : Missing argument(s)
> Error[128]   I:\PIC16F84A\PICRS232 16F886\PICRS232V2.ASM 689 : Missing argument(s)
> Error[128]   I:\PIC16F84A\PICRS232 16F886\PICRS232V2.ASM 696 : Missing argument(s)
> Error[128]   I:\PIC16F84A\PICRS232 16F886\PICRS232V2.ASM 703 : Missing argument(s)
> ...


El circuito en Proteus está más actualizado y el .asm.


El LCD será de 4x20.


```
1 2 3 4 5 6 7 8 RL
 0 0 0 0 0 0 0 0 IN
 0 0 0 0 0 0 0 0 OUT
 *** ALARMA    ***
```
 Línea 1: Siempre es fija y indica los 8 relés. RL significa Relé.
 Línea 2: Significa las entradas digitales activadas. Cuando una entrada digital está activo, se pone en 1. IN significa entrada.
Línea 3: Salidas digitales o de los relés, 0 desacrivado y 1 activado. OUT significa salida.
Línea 4: Mensajes de aviso, alerta o alarma. Puede ser fijo, parpadeo o desplazamiento.

Mi problema son dos. No logro poner el IN fijamente en todo momento en la línea 2.

El segundo problema es que no puedo lograr primero, colocar pulsadores como entrada al PORTC y que funcione en el PIC. Más adelante memeteré en el problema de que aparezca en la línea 3 del LCD y el HyperTerminal de Windows.

Desde que logre todo el proyecto en simuladores, lo haré realidad con su manual incluido. Quiero hacerlo bien de entrada para poder comprar todos los componentes y montarlo en PCB, luego se les pasará fotos con sus avances.

Avanses por el momento.










*Edito:*



> Teniendo el *puerto C* como entrada digitales. Quiero controlar las salidas digitales que son los 8 relés del *puerto D*.
> 
> Saviendo que por el puerto serie también controla el puerto D. ¿Cómo logro para hacer funcionar el puerto D con los pulsadores o interruptores del puerto C?



Saludo.


----------



## Meta (May 26, 2010)

Para que se entienda, la idea es controlar el puerto C como entradas digitales y el HyperTerminal el mismo puerto D como salida que son los relés. Este es el objetivo que debo hacer ahora.






Por _aquí_ se intenta resolver. Se está optando por usar dos PIC para conseguir el objetivo.






Saludo.


----------



## Meta (May 30, 2010)

Hola:

Aún con problemas. Tenía esperanzas en solucionar el problema sobre el desbordamiento del PIC16F887. Como tiene 8 niveles decidí optar por el PIC18F4550 con 32 niveles de pila o stack.

Tanta adaptación de un PIC a otro que me da el mismo problema de desbordamiento, sobre pasa los 32 niveles.

Al compilar:


> ----------------------------------------------------------------------
> Debug build of project `I:\PIC16F84A\PicRS232 16F4550\18F4550.mcp' started.
> Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
> Preprocessor symbol `__DEBUG' is defined.
> ...








Parece provocado por una subrutina. Más me creo que sobrepasa el límite de la tabla.

Un cordial saludo.


----------



## jorgecd12 (Jun 4, 2010)

Hola compañeros, me gustaria plantear una duda que no tiene mucho que ver con el gran proyecto que tienen entre manos, pero estoy atascado y no puedo continuar, por lo que necesito que me ayuden.
Utilizando un Pic16f84 y me gustaria que alguien me indicara mas o menos el codigo para poder utilizar una entrada (A0) y poder poner un 1 o 0 en B0 cuando se pulsa esta entrada sin modificar el resto de datos en la salida.
GrACIAS DE ANTEMANO, un saludo,


----------



## Meta (Jun 4, 2010)

```
;************************************** Ensam_03.asm ************************************
;
; Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A al que está conectado
; un array de interruptores. Por ejemplo, si por el Puerto A se introduce "---11001", por
; el Puerto B aparecerá "xxx11001" (el valor de las tres líneas superiores no importa).
;
; ZONA DE DATOS **********************************************************************

    __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC    ; Configuración para el
                                                            ; grabador.
    LIST    P=16F84A            ; Procesador.
    INCLUDE <P16F84A.INC>        ; Definición de los operandos utilizados.

; ZONA DE CÓDIGOS ********************************************************************

    ORG     0                    ; El programa comienza en la dirección 0 de memoria de
Inicio                            ; programa.
    bsf        STATUS,RP0            ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
    clrf    TRISB                ; Las líneas del Puerto B se configuran como salidas.
    movlw    b'11111111'
    movwf    TRISA                ; Las líneas del Puerto A se configuran como entradas.
    bcf        STATUS,RP0            ; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
Principal
    movf     PORTA,W                ; Lee el Puerto A.
    movwf    PORTB                ; El contenido de W se visualiza por el Puerto B.
    goto     Principal            ; Crea un bucle cerrado.

    END                            ; Fin del programa.
```


----------



## jorgecd12 (Jun 7, 2010)

Gracias Meta, pero esto más o menos ya lo tengo, lo que necisito es poner un 1 o 0 en el bit del puerto B segun el codigo decimal de entrada, y despues validar (On) pulsar el 1 en decima o un 0 para que haga un Off.
Por ejemplo, le entra por el puerto A el codigo 0111, correspondentien al 7, pues tras este codigo mandarle un 1 (0001) para que el pic la "valide" y me ponga en B7 un 1, si ofectar al resto de bits del puerto, si mandara despues el 7 pero con el 0 que en mi caso el codigo binario sería 1010, pondria en B7 un 0, y así del 2-9 y con 1 On y 0 Off.
Meta, si me puedes hechar una mano nuevamente te lo agradeciria xq como te dije ando atascado en esto.
Gracias de antemano, y si hay algún compi que sepa como puede ser, le agradezco interes.


----------



## Meta (Jun 7, 2010)

No te entiendo mucho lo que me estás contando. Por lo poco que te entiendo, te refieres, activar y desactivar un bit del puerto. ¿Cierto?

bfs     PORTB,7 ; Activa el Bit 7, sin afectar el resto.

bfc     PORTB,7 ; Desactiva el bit 7.

Si en la salida del puerto tiene un total de b'0000000'

Quedaría así si activas el bit 7.

b'10000000'


----------



## jorgecd12 (Jun 7, 2010)

Gracias Meta nuevamente por tu interes, pero lo que me trae dolores de cabeza es como detectar ese numero en el PORTA,como el 0111, para poder saber y activar el Bsf PortB,5. Para activarlo sería necesario que el pic recibiera un On (0001) y ahora ya si pongo un 1 en B5 y así con el Off (primero eligo el Bit de salida y luego lo enciendo o apago). 
Conocco la isntrucción Btfsc f, 1; testeo el bit que se indique, en este caso el 1 de la funcion f,pero no se muy bien como sería el codigo para hacer el testeo del PortA. 

Imagino que habra que hacer una tabla o algo así pero no doy con la solución. La gran duda es esa, como testear bit a bit a la entrada para poder saber que numero es en binario y con que salida corresponde.

Gracias Meta de antemano

PortA
0001 - On
0010 - B0
0011 - B1
0100 - B2
0101 - B3
0110 - B4
0111 - B5
1000 - B6
1001 - B7
1010 - Off
Resto de combinaciones no interesa para el proyecto demomento
1011
1100
1110


----------



## jopen (Ago 13, 2010)

Hola Meta, por lo que vi al comienzo querías hacer controlar desde cualquier punto de Internet controlar tus periféricos usando el lenguaje C# y tu circuitos con PIC, me parece muy interesante, algo que me puse a pensar es esto y viendo casi todos los comentarios es lo siguiente 1. Servidor en Apache con Mysql o Asp.net(C#) con SqlServer o Mysql, Tener un sistema web donde los usuarios esten registrados y tengan un panel donde escojan todo tipo de variedad que se pueda controlar con el PIC que pueda soportar y configurando las cosas que se va a hacer(esto creo que tendrá que hacer alguien con conocimientos avanzados) esto se guardara en tu servidor(base de datos) , la otra parte del Cliente que tendrá el PIC, tener un programa C#(Escritorio) o Mono  que se conecte a la base de datos donde están todas las acciones que va a realizar en el PIC en el lado cliente.


----------



## Scooter (Ago 13, 2010)

¿Y no sería mas sencillo hacer el programa para funcionar en local y luego usar un VNC?
Así se podría controlar desde un PDA  un PC sin tener en cuenta el sistema operativo.


----------



## Meta (Ago 13, 2010)

Hola:

Hay muchas tecnologías que usar. está parado el tema y estoy con otra cosa relacionado. Por ejemplo:

Se me quemó el PC y debo comprar uno nuevo. El Hardware lo estoy haciendo, una controladora de 8 salidas a relés más 8 entradas digitales a 5VDV, 8 entradas por sensor interruptor, etc.

La programación vía Web la haré cuando tenga un PC  nuevo y dinero para comprar los componentes, relés, portarelés, PCB, etc.

Lo haré funcionar al final con un 16F887 y un 18F4550. Se hará en principio con Apache, ya tengo ideas por PHP pero prefiero por  Flash ya que se pueden ver los cambios de estados 1 y 0 en tiempo real sin otras tecnologías, bases de datos MySQL. Todo esto tanto con Windows como en Linux mediante gambas o MonoDevelop. En el futuro ya se pensará en usar otras técnicas. Tendré en cuanta lo del PDA.

Saludo.


----------



## arthas1888 (Feb 16, 2012)

hola capo meta!!! como vas con este proyecto ya lo acabaste ; oye mira necesito asesoria el proyecto es el siguiente hacer un robot con camara ip (la camara tendra su puerto ethernet y se conectara al router)todo controlado desde un portatil mediante wireless; lo q tengo es lo siguiente hacer la programacion del micro como se si utilizara un puerto com o rs 232 y conectarlo a un conversor serial - ethernet y de ahi a un router inalambrico y en el pc hacer una aplicacion puede ser en VC# q apunte a un puerto serial virtual que sera el que enviara el router; no se esa es mi idea o pues seria q tu me asesoraras si conoces alguna otra forma chevere tu opinion en el tema, ya q veo eres demasiado teso en todo lo q haces con microcontroladores
cordialmente gustavo 
exitos en tus actividades!!!


----------



## Meta (Feb 16, 2012)

Hola:

No se si te sirve, pero tengo un manual sobre el puerto serie y C#.
http://electronica-pic.blogspot.com/2008/11/electrnica-pic.html

Un saludo.


----------



## arthas1888 (Feb 17, 2012)

oks muchas gracias ahi voy q puedo hacer cuando acabe subo mi proyecto al grupo para q empezemos con tecnologia wifi


----------

