// A message without CR or LF at the end
char message[] = "Apple,Oak,Silk,1kg,1,0,0,0,0.000000,0.000000,0.00,-252,14.41,1100.00";


void setup() 
{
  Serial.begin(115200);

  char fruit[40] = "";   // initialize as empty string
  char tree[40] = "";
  char fabric[40] = "";
  char weight[40] = "";
  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;

  if( sscanf( message, "%[^,],%[^,],%[^,],%[^,],%d,%d,%d,%d,%f,%f,%f,%d,%f,%f", fruit, tree, fabric, weight, &id, &hourRead, &minRead, &secRead, &latRead, &lonRead, &altRead, &sensorRead, &voltRead, &percRead) == 14)
  {
    Serial.print("  fruit: ");
    Serial.println( fruit);

    Serial.print("  tree: ");
    Serial.println( tree);

    Serial.print("  fabric: ");
    Serial.println( fabric);

    Serial.print("  weight: ");
    Serial.println( weight);

    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("%");
  }
  else
  {
    Serial.println( "Can not parse");
  }
}

void loop() 
{
}