// A message without CR or LF at the end
char message[] = "1,0,0,0,0.000000,0.000000,0.00,-252,14.41,1100.00";
int id = 0;
int hourRead = 0;
int minRead = 0;
int secRead = 0;
float latRead = 0;
float lonRead = 0;
float altRead = 0;
int sensorRead = 0;
float voltRead = 0.0;
float percRead = 0.0;
void setup()
{
Serial.begin(115200);
Serial.println( "The sketch has started");
// ----------------------------------------------------------
// Test sscanf with integer
// ----------------------------------------------------------
Serial.print("Can I parse a integer ? ");
int i;
if( sscanf( "91", "%d", &i) == 1)
{
Serial.print( "Yes, it is: ");
Serial.print( i);
}
else
{
Serial.print( "No");
}
Serial.println();
// ----------------------------------------------------------
// Test sscanf with float
// ----------------------------------------------------------
Serial.print("Can I parse a float ? ");
float f;
if( sscanf( "123.456", "%f", &f) == 1)
{
Serial.print( "I don't know, the value is: ");
Serial.print( f);
}
else
{
Serial.print( "No");
}
Serial.println();
// ----------------------------------------------------------
// Try to parse the message
// ----------------------------------------------------------
if( sscanf( message, "%d,%d,%d,%d,%f,%f,%f,%d,%f,%f", &id, &hourRead, &minRead, &secRead, &latRead, &lonRead, &altRead, &sensorRead, &voltRead, &percRead) == 10)
{
Serial.println( "Parse was a success");
showData();
}
else
{
Serial.println( "Can not parse");
}
}
void loop()
{
}
void showData() {
Serial.print(" ID: ");
Serial.println(id);
Serial.print(" Time: ");
Serial.print(hourRead);
Serial.print(":");
Serial.print(minRead);
Serial.print(":");
Serial.println(secRead);
Serial.print(" Location: ");
Serial.print(latRead);
Serial.print(", ");
Serial.println(lonRead);
Serial.print(" Altitude: ");
Serial.println(altRead);
Serial.print(" Sensor Reading: ");
Serial.println(sensorRead);
Serial.print(" Voltage: ");
Serial.println(voltRead);
Serial.print(" Battery: ");
Serial.print(percRead);
Serial.println("%");
}