Cola de Mensajes/Procesos

26/09/2008 - 12:07 por jesusR | Informe spam
Hola, les presento la siguiente situación:
Tengo desarrollada una clase (DrvMgr) que se encarga de codificar
cierta información(a traves de un método llamado CodificaComando) y
enviarla a un dispositivo conectado en el puerto serie (a traves de su
método llamado EnviarDato). el dispositivo retorna un comando por el
mismo puerto Serie.

Luego tengo una aplicacion windows que utiliza esta clase para el
envio de estos mensajes.

El problema esta en que requiero hacer una "cola" de mensajes, es
decir, tengo que evitar que sean enviados N mensajes "en el mismo
momento" al dispositivo.
Por ejemplo, la aplicacion de windows realiza lo siguiente:
DrvMgr dm = new DrvMgr();
for (int i = 0; i < 300; i += 1)
{
string comando=dm.CodificaComando(i);
dm.EnviarDato(comando);
System.Threading.Thread.Sleep(2000);
}
en donde dm es la instancia a mi clase que codificará la info y la
envia al puerto COM. BuscaComando codifica y devuelve una cadena de
alrededor de 10 Kb, y por ultimo EnviarDato es el método que enviará
la cadena al dispositivo a través del puerto Serie (COM).

Actualmente incluyo en el código de envío la siguiente instrucción:
System.Threading.Thread.Sleep(2000); esto para evitar que tanto el
puerto del PC como del dispositivo se saturen.

La idea es realmente ir metiendo los mensajes en una cola e irlos
sacando después que el dispositivo emita una respuesta.
Me imagino que sera haciendo algo tipo cola o algo así.

Algún comentario?
 

Leer las respuestas

#1 Item
26/09/2008 - 12:27 | Informe spam
TAD: "Cola de Prioridad"

Si lo pones en Google aparecerá el algoritmo. A cada proceso le asignas una
prioridad y al encolar lo hace ordenando por la prioridad.

Luego desencolas normálmente.

"jesusR" escribió en el mensaje
news:
Hola, les presento la siguiente situación:
Tengo desarrollada una clase (DrvMgr) que se encarga de codificar
cierta información(a traves de un método llamado CodificaComando) y
enviarla a un dispositivo conectado en el puerto serie (a traves de su
método llamado EnviarDato). el dispositivo retorna un comando por el
mismo puerto Serie.

Luego tengo una aplicacion windows que utiliza esta clase para el
envio de estos mensajes.

El problema esta en que requiero hacer una "cola" de mensajes, es
decir, tengo que evitar que sean enviados N mensajes "en el mismo
momento" al dispositivo.
Por ejemplo, la aplicacion de windows realiza lo siguiente:
DrvMgr dm = new DrvMgr();
for (int i = 0; i < 300; i += 1)
{
string comando=dm.CodificaComando(i);
dm.EnviarDato(comando);
System.Threading.Thread.Sleep(2000);
}
en donde dm es la instancia a mi clase que codificará la info y la
envia al puerto COM. BuscaComando codifica y devuelve una cadena de
alrededor de 10 Kb, y por ultimo EnviarDato es el método que enviará
la cadena al dispositivo a través del puerto Serie (COM).

Actualmente incluyo en el código de envío la siguiente instrucción:
System.Threading.Thread.Sleep(2000); esto para evitar que tanto el
puerto del PC como del dispositivo se saturen.

La idea es realmente ir metiendo los mensajes en una cola e irlos
sacando después que el dispositivo emita una respuesta.
Me imagino que sera haciendo algo tipo cola o algo así.

Algún comentario?

Preguntas similares