Eventuell klappt es ja auch mit einem
if(buffer[bindex] == ',' || buffer[bindex] == '\n' || !Serial.available()) {
anstelle von
if(buffer[bindex] == ',' || buffer[bindex] == '\n') {
Wenn nichts mehr anliegt, ist ja auch das Ende erreicht und es braucht kein abschließendes Zeichen.