Arduino mit Processing steuern

Deine Einlese-Funktion kann nicht funktionieren. Du machst da mehrere katastrophale Fehler

  int bufferSize;
  char incommingBuffer[bufferSize];
  char *data = &incommingBuffer[bufferSize];

1.) bufferSize ist undefiniert. Das muss zur Compile-Zeit feststehen!
2.) die dritte Zeile ist völlig unnötig. Die Variable für den Puffer ist schon ein char* !! In C sind Arrays Zeiger auf das erste Element.
3.) readSerial() wird nirgends aufgerufen was ich so sehe
4.) Dein String wird nicht mit NULL terminiert
5.) Du entfernst mit Serial.read() schon Zeichen aus dem Eingangspuffer. Diese kannst du danach nicht mit readBytesUntil() einlesen, da sie schon weg sind.
6.) Selbst wenn es gehen würde, liest readBytesUntil nur bis zum Komma. Bei strtrok() willst du aber den ganzen String auf einmal einlesen und danach splitten. Das ist eine Hybrid-Version zwischen den zwei Möglichkeiten, die beides nicht richtig macht.

Dann ein weiteres großes Problem:
die serielle Übertragung ist langsam und dauert bei 9600 Baud ca. 1ms pro Zeichen! Du kannst also nie while(Serial.available() machen). Das liest ein Zeichen ein und bricht dann ab weil der Rest noch unterwegs ist.

Mach es so:

const int SERIAL_BUFFER_SIZE = 31;
char serialBuffer[SERIAL_BUFFER_SIZE];

void loop()
{
   if(readSerial() == true)
   {
   }
}

bool readSerial()
{
	static byte index;

	if(Serial.available() > 0)
	{		
		char c = Serial.read();
		
		if(c >= 32 && index < SERIAL_BUFFER_SIZE - 1)
		{
			serialBuffer[index++] = c;
		}
		else if(c == '\r')
		{
			serialBuffer[index] = '\0';
			index = 0;
			return true;
		}
	}
	return false;
}

Und Teste erst mal ob die Zeile ganz ankommt, bevor du sie mit strtok() bearbeitest.

Das ruft die Funktion ständig auf und schaut ob was da ist. Es ist also völlig egal wie lange die Übertragung dauert. Wenn die Funktion dann true zurück gibt ist sie fertig und man kann den String verarbeiten

Und strtok() will einen String an Delimitern. Also:

pch = strtok(serialBuffer, ",");

Hier wieder: Strings sind Zeiger auf das erste Element und damit schon ein char*

Und "incoming" schreibt man mit einem "m" :wink: