some small sketch that parses a <1023,0,511,1023,0,1032> alike packet into an array of ints as bytes are received over serial.
//
// FILE: parsePacket.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.00
// PURPOSE: demo
// DATE: 2014-dec-29
// URL:
//
// Released to the public domain
//
int field[30];
uint8_t idx = 0;
bool done = false;
void setup()
{
Serial.begin(115200);
Serial.println("Start ");
}
void loop()
{
if (Serial.available() > 0)
{
done = parsePacket(Serial.read());
}
if (done) // ready to process a package
{
Serial.print("fields:\t");
Serial.println(idx);
for (int i = 0; i < idx; i++)
{
Serial.print(i);
Serial.print("\t");
Serial.println(field[i]);
}
Serial.println("done");
}
// do other things here
}
bool parsePacket(int c)
{
bool ready = false;
switch (c)
{
case '0'...'9':
field[idx] = field[idx] * 10 + c - '0';
break;
case ',':
idx++;
field[idx] = 0;
break;
case '<':
idx = 0;
field[idx] = 0;
break;
case '>':
idx++;
ready = true;
break;
default:
; // skip
}
return ready;
}