I'll have a look, meanwhile can you try this
// ********************** Consants ********************************
#define EOP ';'
#define SERSIZ 25
// ********************** Variables *******************************
int Percent[4];
int iData[SERSIZ];
int iTemp = 0;
boolean printData = false;
byte index = 0;
// ********************** SET UP **********************************
void setup()
{
Serial.begin(9600);
while(Serial.read() != EOP) {}; // sync with frames
}
void loop()
{
///////////////////////// TO READ SERIAL ////////////////////////
ReadData();
if (printData) {
for(int i=0; i < SERSIZ; i++) {
Serial.println(iData[i]);
}
printData = false;
}
}
// *********************** FUNCTIONS *******************************
// Read Incoming Data from Tank monitor
void ReadData() {
if(Serial.available() > 0) {
int c = Serial.read();
switch (c) {
case ',':
iData[index++] = iTemp;
iData[index] = 0;
iTemp = 0;
break;
case EOP:
iData[index++] = iTemp;
iData[index] = 0;
printData = true;
iTemp = 0;
index = 0;
break;
default:
if(c >= '0' && c <= '9') {
iTemp = (iTemp * 10) + (c - '0'); // use () for each part, don't trust operator precedance
}
}
}
}
// End ReadData()
Rob