Como redefinir tamaño del buffer serie???????

Estoy usando el arduino Duemilanove y quiere redefinir el tamaño del buffer serie, que viene por defecto en 128 bytes.

¿Que codigo deberia implementar en mi programa para poder aumentar el tamaño del buffer serie? Quiero hacerlo desde mi programa principal.

Espero vuestra ayuda, gracias

Hola,

La variable #define RX_BUFFER_SIZE 128 viene definida en HardwareSerial.cpp (arduino-0018\hardware\arduino\cores\arduino). Puedes cambiarlo a tu gusto.

Saludos

Igor R.

Temo que no puedas hacer eso.... Me da la sensación de que hay algún malentendido por aquí. El buffer tiene como misión almacenar desatendidamente los caracteres que llegan por el puerto serie. Una vez que lees un carácter, éste queda liberado, y puede ser utilizado de nuevo por el buffer. La idea es que no se puede dejar de atender el puerto más tiempo del que se necesita para que el buffer se llene, y esto depende de dos cosas: la cantidad de información que llega al puerto, y de la velocidad de la misma. Si se trata de que tu programa se queda ocupado en otras tareas y tarde demasiado en regresar a la función loop, tienes la opción de utilizar interrupciones: solo tienes que asociar a una interrupción al pin 2 (creo que el 2 es Rx) y la rutina de servicio de esta interrupción sólo tiene que leer el contenido del buffer y guardarlo en una variable o área de memoria.

Pofenas, si puedes cambiar el tamanyo del buffer.... por que no? El buffer precisamente es un area de memoria (RAM) que se va llenando con el byte recibido (atendido por la interrupcion). Puedes ver la implementacion (c'odigo) del buffer circular tu mismo en el archivo que he puesto arriba. { Se trata de una implementacion software }

define RX_BUFFER_SIZE 128

struct ring_buffer { unsigned char buffer[RX_BUFFER_SIZE]; int head; int tail; };

inline void store_char(unsigned char c, ring_buffer *rx_buffer) { int i = (rx_buffer->head + 1) % RX_BUFFER_SIZE;

// if we should be storing the received character into the location // just before the tail (meaning that the head would advance to the // current location of the tail), we're about to overflow the buffer // and so we don't write the character or advance the head. if (i != rx_buffer->tail) { rx_buffer->buffer[rx_buffer->head] = c; rx_buffer->head = i; } }

SIGNAL(SIG_USART0_RECV) { unsigned char c = UDR0; store_char(c, &rx_buffer); }

;)

SI modifico la libreria indicada modificaria el tamaño del buffer, el problema es que lo quiero hacer desde mi program principal ya que no se porque no encuentro el directorio en mi ordenador, donde se aloja la libreria indicada, esto trabajando en un MacBook y por mucho que intento buscarla, no encuentro donde estan la librerias.