Most efficient serial communication with Arduino?

Hi all,
I’m using a Serial DAT to stream values to an Arduino at 30 frames per second. I’m using the data to drive motors using the AccelStepper library, keeping motion in sync with projected video. Everything is working nicely except that every packet I read on the Arduino side causes a brief interrupt. At 30 brief interrupts per second I get very loud, very stuttery motion. I’m sending three position values as a comma separated string then parsing that string into ints at the other end. Pretty inefficient.

I assume I’d much rather send bytes, but there’s so much information out there that I’m overwhelmed. Can someone please point me to some basics on byte arrays?

I want to send three values ranging from 0 to 10400 (number of “steps” to the far end of my motor’s motion). Let’s say 10323, 16, and 9014 in that order.

Do I pad them all out to 5 digits and send 103230001609014 plus a terminator? And is that as some crazy built command like n.sendBytes(bytes([chr(1),chr(0),chr(3)…chr(4)])?

Or if I just sendBytes(bytes[10323, 16, 9014]) what comes out at the Arduino end and how do I parse it?

Sorry for these basic questions, but general workflow information on this stuff is hard to piece together. Thanks for any help!

For what it’s worth, here’s the main loop of my Arduino code:

void loop() {
	//get input from Touch
	while (Serial.available() > 0)
	{
		 char inChar = Serial.read();
		 inString += (char)inChar; 
		 if (inChar == '\n') {
			if (inString == "HOME"){
			home();
			} else {
				targetPos1String = getValue(inString, ',', 0); 
				targetPos2String = getValue(inString, ',', 1); 
				targetPos2String = getValue(inString, ',', 2);
                                // I'll optimize this to run getValue(string parse) only once
				retargetBalls(); // my function for setting new target positions
			}
		inString = ""; 
		}
	}

	stepper1.run();
	stepper2.run();
	stepper3.run();
}