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?