In an Arduino program I\'m working on the GPS sends the coordinates to the arduino through USB. Because of this, the incoming coordinates are stored as Strings. Is there any way
String stringOne, stringTwo, stringThree;
int a;
void setup() {
// initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
stringOne = 12; //String("You added ");
stringTwo = String("this string");
stringThree = String();
// send an intro:
Serial.println("\n\nAdding Strings together (concatenation):");
Serial.println();enter code here
}
void loop() {
// adding a constant integer to a String:
stringThree = stringOne + 123;
int gpslong =(stringThree.toInt());
a=gpslong+8;
//Serial.println(stringThree); // prints "You added 123"
Serial.println(a); // prints "You added 123"
}
You can get an int
from a String
by just calling toInt on the String
object (e.g. curLongitude.toInt()
).
If you want a float
, you can use atof
in conjunction with the toCharArray method:
char floatbuf[32]; // make this at least big enough for the whole string
curLongitude.toCharArray(floatbuf, sizeof(floatbuf));
float f = atof(floatbuf);
How about sscanf(curLongitude, "%i", &gpslong)
or sscanf(curLongitude, "%f", &gpslong)
? Depending on how the strings look, you might have to modify the format string, of course.
c_str()
will give you the string buffer const char* pointer.
.
So you can use your convertion functions:. int gpslong = atoi(curLongitude.c_str())
float gpslong = atof(curLongitude.c_str())
Convert String to Long in Arduino IDE:
//stringToLong.h
long stringToLong(String value) {
long outLong=0;
long inLong=1;
int c = 0;
int idx=value.length()-1;
for(int i=0;i<=idx;i++){
c=(int)value[idx-i];
outLong+=inLong*(c-48);
inLong*=10;
}
return outLong;
}