Eventos con C#

Si tu lenguaje no se engloba en los anteriores, postea aquí tus temas

Moderator: Junta Directiva

Post Reply
Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Eventos con C#

Post by Ranganok » Mon Jul 27, 2009 6:40 pm

Hola,

A ver si algún entendido de C# (o lenguaje similar) me puede hechar una mano.

Lo que intento hacer es tener una clase que me genere un evento cuando recibo un paquete debidamente formateado por un socket específico o por el puerto serie.

Para ello abro un thread con una máquina de estados que me va mirando el puerto serie y el socket cada x tiempo y si ha llegado algo lo mete en un buffer de datos. Una vez que pasa un cierto tiempo (timeout) leo ese buffer y si el formato es correcto debería enviar un evento.

El problema es que no se cómo generar un evento en C#.

¿Alguna idea?

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Eventos con C#

Post by Ranganok » Wed Jul 29, 2009 5:36 pm

Si nadie sabe ¿algún tutorial en castellano sobre C# o Mono que lo explicen en condiciones?

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

User avatar
beamspot
Usuario Desarrollador
Usuario Desarrollador
Posts: 1132
Joined: Thu Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Post by beamspot » Fri Jul 31, 2009 2:55 pm

Buff, estando de vacaciones no puedo atender a todo a su debido tiempo.

Tengo hecho algo parecido en C#, que cuando recibe paquetes formateados correctamente en ModBus sobre puerto serie, me genera eventos, pero no me acuerdo de cómo se hacen, ni de donde tengo el objeto (además, apenas paso por mi ordenador de casa, que estoy de vacaciones).

Si me das unos pocos días, miraré de conseguirte esa información. Así, a bote pronto, lo que tienes que hacer es poner un delegado (que es el 'apodo' que le vas a dar a la rutina de atención al evento) como público para invocarlo desde el thread en el que haces las comprobaciones... y algo más que no recuerdo. Por tanto, desde la magnífica ayuda del C# express puedes empezar a buscar el tema de delegados.

Si mal no me acuerdo, además te convendrá generar un par de objetos de comunicación (más bien, una estructura), más comunmente llamados EventArgs, para poder pasar los datos a la rutina que se asignará al delegado.
Beamspot.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Eventos con C#

Post by Ranganok » Fri Jul 31, 2009 3:46 pm

beamspot wrote:Si me das unos pocos días, miraré de conseguirte esa información.
Te doy 3 semanas :P yo también acabo de activar el modo vacaciones....

Lo del delegado si que lo sabía, pero no he encontrado ningún ejemplo que te explique como hacerlo (al menos ninguno en castellano). La verdad es que si me puedes pasar el ejemplo me haces un gran favor.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

User avatar
beamspot
Usuario Desarrollador
Usuario Desarrollador
Posts: 1132
Joined: Thu Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Post by beamspot » Fri Jul 31, 2009 4:47 pm

Hola:

He encontrado esto, pero aviso de dos cosas:

1º Los comentarios, escasos, no son ni de fiar, ni de fácil lectura debido al uso de un idioma no muy reconocido (alemán mediterráneo)
2º Está por acabar, pero tengo otras cosas prioritarias antes.
3º Si algún día funciona, esto se podría poner como tutorial o como información general, e incluso servir de base para algún proyecto que tengo por ahí parado (localización por multilateración de ultrasonidos) que está abierto a gente que se quiera apuntar.
4º Espero que te sirva de algo. Al fin y al cabo, parece sencillo de hacer, el tema de los eventos (definir un public event TipoDeEvento NombreEvento, y luego 'invokarlo' con NombreEvento(this,ArgumentosEvento);).

Have fun, y felices vacaciones.
Beamspot.

User avatar
beamspot
Usuario Desarrollador
Usuario Desarrollador
Posts: 1132
Joined: Thu Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Post by beamspot » Mon Aug 03, 2009 8:59 am

Hola:

Vaya, el 'modo vacaciones' me jugó una mala pasada el viernes pasado. Preparé este zip para subirlo, escribo el post anterior, y me olvido de adjuntar el archivo. A ver si ahora vale. :oops: 8O :roll:

¿Alguien tiene una neurona multitarea para ampliar mi cerebro monotarea mononeurona? :wink:
Attachments
ToolModBus.rar
El objeto de mi despiste.
(8.39 KiB) Downloaded 25 times
Beamspot.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Eventos con C#

Post by Ranganok » Tue Aug 11, 2009 1:57 pm

Acabo de volver... Gracias por el código, le hecharé un vistazo a ver si se me aclaran las dudas.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest