ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Eventos con C#

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

Moderador: Junta Directiva

Responder
Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Eventos con C#

Mensaje por Ranganok » Lun 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
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Eventos con C#

Mensaje por Ranganok » Mié 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"

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Mensaje por beamspot » Vie 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
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Eventos con C#

Mensaje por Ranganok » Vie Jul 31, 2009 3:46 pm

beamspot escribió: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"

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Mensaje por beamspot » Vie 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.

Avatar de Usuario
beamspot
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1132
Registrado: Jue Oct 11, 2007 8:56 pm
Nombre: Guillem

Re: Eventos con C#

Mensaje por beamspot » Lun Ago 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:
Adjuntos
ToolModBus.rar
El objeto de mi despiste.
(8.39 KiB) Descargado 11 veces
Beamspot.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Eventos con C#

Mensaje por Ranganok » Mar Ago 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"

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado