This is the sketch without the "device" string added in:
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.0;
float lonRead = 0.0;
float altRead = 0.0;
int sensorRead = 0;
float voltRead = 0.0;
float percRead = 0.0;
float percReadTru = 0.0;
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(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)
{
showData();
}
// ----------------------------------------------------------
// 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();
Serial.print("Can I parse a string ? ");
char str1[5];
if ( sscanf( "Sketch", "%s", str1) == 1)
{
Serial.print( "yes you can parse a string: ");
Serial.print( str1);
}
else
{
Serial.print( "No");
}
Serial.println();
}
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, 6);
Serial.print(", ");
Serial.println(lonRead, 6);
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("%");
}
and this is the output from the serial monitor:
1,0,0,0,0.000000,0.000000,0.00,-252,14.41,1100.00
ID: 1
Time: 0:0:0
Location: 0.000000, 0.000000
Altitude: 0.00
Sensor Reading: -252
Voltage: 14.41
Battery: 1100.00%
Can I parse a integer ? Yes, it is: 91
Can I parse a float ? I don't know, the value is: 123.46
Can I parse a string ? yes you can parse a string: Sketch