CanSat-India-Updated / GUI / GCScode / sensor_codes / Quectel_L89.ino
Quectel_L89.ino
Raw
void Quectel_L89(){
  //while (mySerial.available()) {
  String sentence=mySerial.readStringUntil('\n');
  while (!sentence.startsWith("$GNGGA")){
   sentence="";
   sentence+=mySerial.readStringUntil('\n'); 
  }
      String parts[15];
      int i = 0;
      char * pch = strtok (sentence.c_str(),",");
      while (pch != NULL) {
        parts[i++] = pch;
        pch = strtok (NULL, ",");
      }

      String Satellites = parts[7];

      String altitude = parts[9];

      String latitude_full = parts[2];
      float latitude_float=latitude_full.toFloat();
      int latitude_degrees=int((int)(latitude_float)/100);
      float latitude_minutes=((latitude_float-(latitude_degrees*100.0))/60.0);
      float latitude_converted=latitude_degrees + latitude_minutes;
      

      String longitude_full = parts[4];
      float longitude_float=longitude_full.toFloat();
      int longitude_degrees=int((int)(longitude_float)/100);
      float longitude_minutes=((longitude_float-(longitude_degrees*100.0))/60.0);
      float longitude_converted=longitude_degrees + longitude_minutes;

      String time = parts[1];

      packet+=time.substring(0,2);
      packet+=":";
      packet+=time.substring(2,4);
      packet+=":";
      packet+=time.substring(4,6) + ",";

      packet+=String(latitude_converted,4);
      packet+=",";

      packet+=String(longitude_converted,4);
      packet+=",";

      packet+=altitude; //use until gnss hasn't fixed else, packet not generated since altitude is empty and any substring operation will cause error
//      packet+=altitude.substring(0,5); //use once gnss has fixed, adds 1 decimal point precision
      packet+=",";
      
      packet+=Satellites;
      packet+=",";
//}
}