serial read multiple integers?

Hi all,
I have an arduino Uno with some servos hooked up to form a robotic arm. The arm moves in x,y,z axises.

I have a python script that sends the coordinates to the arduino, as indexed values of an array, via serial.write.

the array values are always from 0 - 180, integers, and in a fixed quantity. As in, a swivel X command might look like:
180 0 0. for whatever the number of servos there is, there will be the same number of integers passed to the arduino, but that will be known before hand.

Ho can I read the incoming serial array data? Or Rather, what is a good way to do that?

currently, I read 1 coordinate at a time, with serial.read(); this is a huge waste of time, and I cant really expand the number of axises easily.

I was looking at using serial.readbytesuntil(); but my datatype is an array of ints, and i go an exception regarding the mismatch.

can someone offer some guidance? Pseudo code is cool with me, Im just not sure how to read in an array of integers, or what the best way to go about this is.

This demo shows how to send and receive data with Python. You can easily modify it to suit your collection of data.

...R

Servo test code for multiple servos that might be of use.

//zoomkat 11-22-12 simple delimited ',' string parse 
//from serial port input (via serial monitor)
//and print result out serial port
//multi servos added 
// Powering a servo from the arduino usually *DOES NOT WORK*.

String readString;
#include <Servo.h> 
Servo myservoa, myservob, myservoc, myservod;  // create servo object to control a servo 

void setup() {
  Serial.begin(9600);

  //myservoa.writeMicroseconds(1500); //set initial servo position if desired

  myservoa.attach(6);  //the pin for the servoa control
  myservob.attach(7);  //the pin for the servob control
  myservoc.attach(8);  //the pin for the servoc control
  myservod.attach(9);  //the pin for the servod control 
  Serial.println("multi-servo-delimit-test-dual-input-11-22-12"); // so I can keep track of what is loaded
}

void loop() {

  //expect single strings like 700a, or 1500c, or 2000d,
  //or like 30c, or 90a, or 180d,
  //or combined like 30c,180b,70a,120d,

  if (Serial.available())  {
    char c = Serial.read();  //gets one byte from serial buffer
    if (c == ',') {
      if (readString.length() >1) {
        Serial.println(readString); //prints string to serial port out

        int n = readString.toInt();  //convert readString into a number

        // auto select appropriate value, copied from someone elses code.
        if(n >= 500)
        {
          Serial.print("writing Microseconds: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
          if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
          if(readString.indexOf('c') >0) myservoc.writeMicroseconds(n);
          if(readString.indexOf('d') >0) myservod.writeMicroseconds(n);
        }
        else
        {   
          Serial.print("writing Angle: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.write(n);
          if(readString.indexOf('b') >0) myservob.write(n);
          if(readString.indexOf('c') >0) myservoc.write(n);
          if(readString.indexOf('d') >0) myservod.write(n);
        }
         readString=""; //clears variable for new input
      }
    }  
    else {     
      readString += c; //makes the string readString
    }
  }
}