Currently, your code is reading only one character, then doing strtok, then reading another character, etc, hence why n is always 0 and the string is only one character.
You must store characters until the end of the string, which is probably delimited by a \n character, before using strtok
buf [] is a char array used to captured the received input chars into . toks [] is an array of char pointers.
readBytesUntil() captures input chars up to the '\n' and returns the # of the received chars. buf [n] = '\0' replaces the last char, the '\n' with a NULL making is a properly terminated c-string
strtok() is given an c-string and a delimiter string, ",", and returns char pointers into that c-string for sub-strings delimited by the delimiter string. it replaces the delimiter string with NULL(s)
strtok() is unusual in that it remembers the c-string it was initially called with and continues to operate on when subsequently called with a NULL. it returns a char pointer the next sub-string following the last delimiter string until it gets to the end of the original c-string and returns NULL
tok [] contains the char pointers to each of the sub-strings in the original c-string/char array which now has several NULLs.