Cannot convert Serial String into char I am trying to write a program to control 4 motors through the Serial port. I planned on achieving this by sending the motors' speed and direction instructions as a string, which is then converted into numerical values that represent speed and direction. Unfortunately, the conversion process is not working and my motors will not spin.

int motorGroup1_Direction = 13;
int motorGroup1_Speed = 12;

int motorGroup2_Direction = 11;
int motorGroup2_Speed = 10;

int motorGroup3_Direction = 9;
int motorGroup3_Speed = 8;

int motorGroup4_Direction = 7;
int motorGroup4_Speed = 6;

String command; //First digit is for direction, the next 3 digits are for speed. A space acts a delimiter, repeat for the
//For the next three motors
char hold;
char letter;
char send[8];

void setup() {
  Serial.begin(9600);
  pinMode(motorGroup1_Direction, OUTPUT);

  pinMode(motorGroup1_Speed, OUTPUT);

  pinMode(motorGroup2_Direction, OUTPUT);
  pinMode(motorGroup2_Speed, OUTPUT);

  pinMode(motorGroup3_Direction, OUTPUT);
  pinMode(motorGroup3_Speed, OUTPUT);

  pinMode(motorGroup4_Direction, OUTPUT);
  pinMode(motorGroup4_Speed, OUTPUT);
}

void loop() {
  int trackParse = 0;
  int trackString = 0;

  while (Serial.available() &gt; 0) {
    hold = Serial.read();

    if (hold == ' ') {

      send[trackParse] = (char)command.toInt();
      Serial.write(send[trackParse]);
      trackParse++;
      delay(2);
    }
    else {
      command[trackString] = hold;
      trackString++;
      delay(2);
    }
  }

  digitalWrite(motorGroup1_Direction, send[0]);
  Serial.println(send[0]);

  analogWrite(motorGroup1_Speed, send[1]);
  Serial.println(send[1]);


  digitalWrite(motorGroup2_Direction, send[2]);
  Serial.println(send[2]);

  analogWrite(motorGroup2_Speed, send[3]);
  Serial.println(send[3]);


  digitalWrite(motorGroup3_Direction, send[4]);
  Serial.println(send[4]);

  analogWrite(motorGroup3_Speed, send[5]);
  Serial.println(send[5]);


  digitalWrite(motorGroup4_Direction, send[6]);
  Serial.println(send[6]);

  analogWrite(motorGroup4_Speed, send[7]);
  Serial.println(send[7]);

}
You try to convert the whole command string everytime a space character appears. This works good for the first occurence, but then the string will become longer and longer and the converted integer will be garbage. You should reset the string with command = "" everytime you have processed a number, or just using the current part of it with the substring member function.
Currently you echo the converted integer with Serial.write(). With this, the pure byte code is send over the serial. Your terminal program will interpret the bytes as characters, so you may get human readable numbers. Try the function Serial.println(), which converts the number to a human readable form and prints a newline after it as a delimiter.
You don't need to write to your outputs on every loop cycle. Especially the Serial prints will make the debugging more difficult. I think you should only write a new value to your outputs, when you received new values over Serial.
Am I right, that your protocol looks something like this: "0 255 1 100 1 150 0 80" ?
In your current code, if not the whole string is received in one loop cycle (maybe if there was some delay when sending from the computer) the rest of the string is than written to the first motor values. You can use a packet delimiter character like "\n" after a full packet. Then you can collect all received characters in your command string until you receive the "\n", which marks the end of the current package. Then you would process the packet as a whole.