Serial.available()

Salve.

il comando in oggetto indica i byte disponili nel buffer della porta seriale.

Ma qual è il dato di ritorno? un intero? una stringa?

Grazie.

Francamente non lo so, ma non è rilevante. A parte che il buffer, essendo formato da 128 byte, il valore di ritorno sarà al massimo appunto 128, quindi lo puoi mettere su un unsigned char (va bene anche byte), comunque se utilizzi un qualunque altro tipo di dato più grande poi il compilatore esegue una conversione di tipo implicita.

Va precisato che spesso non è importante quanti byte sono presenti ma se ce ne sono, quindi si può usare in questa forma:

while (Serial.available()) {
  byte x = Serial.read();
  ..
  ..
  ..
}

Da ricordarsi che per il c++ solo lo 0 è considerato FALSE, qualunque numero diverso da 0 è TRUE.

P.S. Se ti interessa proprio sapere che tipo di dato hai come ritorno, questo codice è estratto dalla HardwareSerial.cpp

int HardwareSerial::available(void)
{
  return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE;
}

Appunto...ritorna un numero intero che rappresenta il numero di byte presenti nel buffer

leggii il reference e troverai tutte le risposte ch cerchi:http://arduino.cc/en/Reference/HomePage