0

I'm currently using google geolocation to get location data to one nodemcu and sending it through serial to another Arduino.The serial command I'm getting right now is,

1.450187T103.824745

I'm using the following code to parse it.

 if (Serial.available())  {    char c = Serial.read();  //gets one byte from serial buffer    //if (c == '\n') {  //looks for end of data packet marker    if (c == '\n') {     // Serial.println(readString); //prints string to serial port out      //do stuff            substring = readString.substring(0,8);      lati = substring;      loc = readString.indexOf("T");      substring = readString.substring(loc+1, loc+11);     longi = substring;       readString=""; //clears variable for new input      substring="";     }      else {           readString += c; //makes the string readString    }  }

It works most of the time but sometimes I get 'T' inside the string as well.like this

lat=1.450146&longi=102464T103

What's wrong in my code?

VE7JRO's user avatar
VE7JRO
2,51419 gold badges28 silver badges31 bronze badges
askedJun 23, 2019 at 6:34
Nisal's user avatar
2
  • what is the reason for transmitting theH? ... you only need theT to separate the two valuesCommentedJun 23, 2019 at 6:54
  • Can you show us the actual serial String, that you received in that case?CommentedJun 23, 2019 at 9:17

1 Answer1

1

with readBytesUntil and C string

if (Serial.available()) {  char buff[32];  int l = Serial.readBytesUntil('\n', buff, sizeof(buff));  if (l > 0 && buff[l - 1] == '\r') {    l--; // to remove \r if it is there  }  buff[l] = 0; // terminate the string  char* p = strchr(buff,'T'); // returns pointer in string  if (p != NULL) {    *p = 0; // write 0 as char at pointer to terminate the first part    p++; // move the pointer to next char    Serial.println(buff);    Serial.println(p);  } else {    Serial.println(buff);  }}
answeredJun 23, 2019 at 11:06
Juraj's user avatar

Your Answer

Sign up orlog in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

By clicking “Post Your Answer”, you agree to ourterms of service and acknowledge you have read ourprivacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.