Bluetooth: quale grandezza massima dato da inviare?

micpic:
Avendo impostato il baud rate a 9600 bps in teoria il bluetooth dovrebbe inviare 1200 byte in un secondo

Tu NON devi pensare al Bluetooth ... devi pensare ad una semplice connessione seriale il cui il Bluetooth è solo un mezzo di trasmissione che NON interferisce (... e di suo a te NON trasmette nulla).

Se usi la seriale a 9600 baud arrivi si e no a trasmettere (tra startbit, stopbit, e ritardi vari) circa 900 caratteri al secondo.
Quando scrivi sulla seriale i dati vengono trasmessi a quella velocità quindi a te NON mandare caratteri in trasmissione più velocemente di quanto possano essere trasmessi, pena il rimanere bloccati fino a che non c'è di nuovo spazio nel buffer di trasmisisone (quindi i caratteri NON vengon persi, praticamnete viene fermato il tuo programma in attesa di svuotare il buffer).

La cosa è visibile esaminando il codice del "core" nel punto in cui effettua la trasmissione ...

  ...
  ...
  // If the output buffer is full, there's nothing for it other than to 
  // wait for the interrupt handler to empty it a bit
  while (i == _tx_buffer_tail) {
    if (bit_is_clear(SREG, SREG_I)) {
      // Interrupts are disabled, so we'll have to poll the data
      // register empty flag ourselves. If it is set, pretend an
      // interrupt has happened and call the handler to free up
      // space for us.
      if(bit_is_set(*_ucsra, UDRE0))
	_tx_udr_empty_irq();
    } else {
      // nop, the interrupt handler will free up space for us
    }
  }
  ...
  ...

Puoi sempre interrogare lo spazio disponibile nel buffer, così da non rimanere bloccato, tramite la Serial.AvailableForWrite() che appunto indica i bytes che rimangono liberi nel buffer prima che l'operazione venga bloccata.

Guglielmo