[Dúvida] *Protocolo* de comunicação

Testei este código, mas não funcionou corretamente:

void setup() {
  Serial.begin(9600);
}

void loop() {
  readSerialPort();
  delay(10);
}

void readSerialPort() {
  unsigned int bytesAmount = Serial.available();  
  if (bytesAmount > 0) {
    Serial.print("Starting ReadPortSerial with: ");   
    Serial.println(bytesAmount);    
    char buffer[bytesAmount];
    for(int i = 0; i < bytesAmount; i++) {
        buffer[i] = Serial.read();
    }
    for(int i = 0; i < bytesAmount; i++){
       Serial.println("buffer[" + (String)i + "] = " + (String)buffer[i]);
    }
  }
}

Em teoria este código deveria pegar a quantidade de caracteres enviadas por serial, mostrar e depois listar o array que contém estes mesmos caracteres, o problema é que ele quebra na maioria das vezes a palavra e eu não faço ideia por que.

Eu enviei a palavra teste e ele quebrou e me retornou isto:

Starting ReadPortSerial with: 3
buffer[0] = t
buffer[1] = e
buffer[2] = s
Starting ReadPortSerial with: 3
buffer[0] = t
buffer[1] = e
buffer[2] =

O pior de tudo é que ele não quebra a palavra sempre no mesmo lugar, ele quebra aleatoriamente, tem vezes que ele mostra certo a palavra, e tem vezes que não.

Alguém sabe o motivo?