Analiza danych szeregowych Arduino

Piszę aplikację do sterowania moim robotem za pomocą telefonu z Androidem przez Bluetooth, wszystko idzie dobrze, dane są powtarzane i weryfikowane, ale mam problemy z protokołem, szczególnie chcę, aby koła mojego robota obracały się, gdy wysyłam polecenie takie jaks,10,100 lubs,-30,-10... (wartości w procentach).

Moim problemem jest to, że gdy chcę przeanalizować moje polecenie prędkości koła na moim Arduino, muszę je przeanalizowaćod do 4 oddzielnybytes doint, na przykłads,-100,-100 sprawia, że ​​mój robot cofa się z pełną prędkością, ale jak mam to przeanalizować, abym mógł zadzwonićsetSpeed(left, right); zleftiright równy -100?

Wiem, że mogę oddzielnie analizować każdy bajt i zestawiać je razem, aby uzyskać liczbę całkowitą, ale nie jest to zbyt eleganckie i prawdopodobnie jest już lepsze rozwiązanie tego wszystkiego, niestety jeszcze go nie znalazłem.

EDYTOWAĆ

Oto moja funkcja Arduino do parsowania moich poleceń:

void parseCommand(char* command, int* returnValues)
{
  // parsing state machine
  byte i = 2, j = 0, sign = 0;
  int temp = 0;
  while(*(command + i) != '\0')
  {
    switch(*(command + i))
    {
      case ',':
        returnValues[j++] = sign?-temp:temp;
        sign = 0;
        temp = 0;
        break;
      case '-':
        sign = 1;
        break;
      default:
        temp = temp * 10 + *(command + i) - 48;
    }
    i++;
  }
  // set last return value
  returnValues[j] = sign?-temp:temp;
}

Nazywasz to w ten sposób podczas analizowania czegoś takiegos,100,-100 (musi być\0 zakończony):

char serialData[16];
void loop()
{
  if(Serial.available() > 0)
  {
    Serial.readBytesUntil('\0', serialData, 15);
    switch(serialData[0])
    {
      case 's':
        int speed[2];
        parseCommand(serialData, speed);
        setSpeed(speed[0], speed[1]);
        break;
    }
    // always echo
    Serial.write(serialData);
    // end of message is maked with a \0
    Serial.print('\0');

    // clear serialData array
    memset(serialData, 0, sizeof(serialData));
  }
}

questionAnswers(2)

yourAnswerToTheQuestion