Serial.Read() gibt falschen wert zurück

Hallo erstmal.

Ich bin neu bei Arduino und habe ein Problem betreffend der Serial.Read() funktion.
Ich benutze das Arudino MEGA 2560.

Ich versuche aktuell ein MonkeyBoard DAB per UART zu steuern. Dafür erstelle ich gerade eine eigene Library. Jedoch klappt irgendwas mit der Umwandlung nicht. In einer Funktion möchte ich die Lautstärke auslesen die ich vorneweg auf den wert 10 gesetzt habe. Die sieht so aus:

int MonkeyBoard::GetVolume() {
	byte input[8] = { 0 };
	byte output[] = { 0xfe,0x01,0x0d,0x01,0x00,0x00,0xfd };
	Serial1.write(output, sizeof(output));
	int i = 0;
	while (Serial1.available()>0) {
		input[i] = Serial1.read();
		i++;
	}
	return input[6];
}

Der Befehl wird richtig gesendet und die antwort auch korrekt empfangen, das habe ich mittels Oszilloskop überprüft. an 7er stelle beim Input steht 0x0A. Wenn ich jetzt aber mittels Serial.write() dies an den Serial Monitor senden will kommt der wert 253 raus. Was dem Schlussbyte 0xFD entschpricht. Wenn ich den return auf Input[5] setzte schreibt er den wert 0 raus, obwohl das Byte dort dem wert 0x01 entspricht.

Der code zum senden an den Serial Monitor sieht so aus:

int vol = mkbrd.GetVolume();
           Serial.println(vol);

Ich hoffe das einer von euch meinen Fehler sieht, weil ich versuche das seit 3 Tagen und weiss nicht mehr weiter.
Angehängt habe ich auch einen Screenshot vom Oszilloskop. Da sieht man die Antwort bytes.

while (Serial1.available()>0) {
	input[i] = Serial1.read();
	i++;
}

Sicher, dass du da genug Bytes empfängst?
Ich glaube das nicht.

Das inputarray hat ja eine grösse von 8 byte was ja auch vom Board zurückgesendet wird.

0xfe, 0x01, 0x0D, 0x01, 0x00, 0x01, 0x0A, 0x0FD.

Bei einigen anderen anfragen wo ich z.b. 11 bytes empfange aber nur eines überprüfe und dann ein Bool zurück geben funktioniert das eigentlich immer.

Falls es wirklich daran liegt wie könnte ich das denn genau machen?

Es kann doch für dich nicht soooo schwer sein, zu prüfen, ob i am Ende der Schleife auf 8 angewachsen ist.
Ist das nicht der Fall, darfst du das Ergebnis nicht verarbeiten.
Ist doch logisch, oder?

Ansontern:
Baue einen vernünftigen Parser.