listas, pilas, colas...

10/09/2007 - 10:06 por Aitziber | Informe spam
BUenas.

En mi programa necesito envias datos via puerto serie. El problema es que
tengo que ir guardando los datos modificados en una lista, cola,... o algo
para luego enviarlas todas a la vez, o por lo menos hasta 256 byte-s y no se
como puedo hacerlo.

Alguien puede decirme lo que me recomienda usar?? cola, lista,... Y como se
usan??

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
10/09/2007 - 10:18 | Informe spam
"Aitziber" wrote in message
news:%
En mi programa necesito envias datos via puerto serie. El problema es que
tengo que ir guardando los datos modificados en una lista, cola,... o algo
para luego enviarlas todas a la vez, o por lo menos hasta 256 byte-s y no
se como puedo hacerlo.

Alguien puede decirme lo que me recomienda usar?? cola, lista,... Y como
se usan??



Si los datos tienen que salir en el mismo orden en que entraron, la
estructura adecuada es una cola. Pero solo se necesita si los procesos que
"meten" datos en la cola y los que "sacan" datos de la cola funcionan cada
uno a su ritmo.
En cambio, si el proceso que "mete" los datos sabe siempre cuándo se
tienen que sacar (por ejemplo, siempre que haya 256 bytes pendientes),
entonces es más eficiente usar una estructura fija. Por ejemplo, si los
datos que tienes que sacar son bytes, y siempre tienes que sacar 256,
entonces puedes declarar un byte[] buffer = new byte[256]; y una variable
int numeroDeBytesEnElBuffer = 0;. Cuando tienes que enviar un byte lo añades
al buffer e incrementas el contador, y si llega a 256 los transmites por el
puerto y pones a cero el contador.
Respuesta Responder a este mensaje
#2 Alfredo Novoa
10/09/2007 - 10:31 | Informe spam
Hola,

On Mon, 10 Sep 2007 10:06:11 +0200, "Aitziber"
wrote:

En mi programa necesito envias datos via puerto serie. El problema es que
tengo que ir guardando los datos modificados en una lista, cola,... o algo
para luego enviarlas todas a la vez, o por lo menos hasta 256 byte-s y no se
como puedo hacerlo.

Alguien puede decirme lo que me recomienda usar?? cola, lista,... Y como se
usan??



Para esto se suelen usar colas circulares.

http://people.cs.uct.ac.za/~bmerry/manual/structures/circular.html
http://en.wikipedia.org/wiki/Circular_buffer


Saludos
Respuesta Responder a este mensaje
#3 Aitziber
10/09/2007 - 10:34 | Informe spam
Gracias en primer lugar.

Yo creo que lo que necesito es una cola, pero no se como se usan. Soy
bastante principiante en esto.
Me podriais ayudar??



"Alberto Poblacion"
escribió en el mensaje news:
"Aitziber" wrote in message
news:%
En mi programa necesito envias datos via puerto serie. El problema es
que tengo que ir guardando los datos modificados en una lista, cola,... o
algo para luego enviarlas todas a la vez, o por lo menos hasta 256 byte-s
y no se como puedo hacerlo.

Alguien puede decirme lo que me recomienda usar?? cola, lista,... Y como
se usan??



Si los datos tienen que salir en el mismo orden en que entraron, la
estructura adecuada es una cola. Pero solo se necesita si los procesos que
"meten" datos en la cola y los que "sacan" datos de la cola funcionan cada
uno a su ritmo.
En cambio, si el proceso que "mete" los datos sabe siempre cuándo se
tienen que sacar (por ejemplo, siempre que haya 256 bytes pendientes),
entonces es más eficiente usar una estructura fija. Por ejemplo, si los
datos que tienes que sacar son bytes, y siempre tienes que sacar 256,
entonces puedes declarar un byte[] buffer = new byte[256]; y una variable
int numeroDeBytesEnElBuffer = 0;. Cuando tienes que enviar un byte lo
añades al buffer e incrementas el contador, y si llega a 256 los
transmites por el puerto y pones a cero el contador.


Respuesta Responder a este mensaje
#4 Alberto Poblacion
10/09/2007 - 10:43 | Informe spam
"Aitziber" wrote in message
news:
Yo creo que lo que necesito es una cola, pero no se como se usan. Soy
bastante principiante en esto.
Me podriais ayudar??



Si estás usando el Framework 2.0 (Visual Studio 2005) dispones de una
cola en System.Collections Generic. La cola tiene los métodos Enqueue y
Dequeue para meter y sacar datos.
Por ejemplo, supongamos que los datos que quieres meter en la cola son
de tipo byte:

using System.Collections.Generic;
...

Queue<byte> cola = new Queue<byte>();
...
//Para meter datos:
cola.Enqueue((byte)0x01);
cola.Enqueue((byte)0xff);
...
//Para vaciar la cola:
while (cola.Count>0)
{
byte b = cola.Dequeue();
//procesar b
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida