Neu bei Arduino Ich habe Probleme mit dem, was sich nach einem ziemlich n00b-Problem anhört ... Ich habe ein Adafruit-GPS-Board an mein Arduino angeschlossen und es funktioniert, da es GPS-Daten an die serielle Schnittstelle mit ausspuckt Serial.print(GPS.latitude, DEC)
Ich möchte jetzt eine Zeichenfolge zusammenfassen, die ich verarbeiten kann (lesen Sie: Ich möchte sie über einen Ethernet-Client senden.) Folgendes habe ich bereits erhalten:
......
String vnnt = "$VNNT,";
if (GPS.fix) {
vnnt += "GPS,";
//this works:
vnnt.concat(GPS.fix);
//but this not:
vnnt.concat(GPS.latitude);
}else{
vnnt += "INFO,Acquiring Sats";
}
Serial.println(vnnt);
Die Fehlermeldung lautet: Call of overloaded 'concat(float&)' is ambiguous
Wenn ich Serial.print(GPS.latitude, DEC)
daraus resultiere:4418.5937996050
Also ist es wahrscheinlich zu groß oder so ...
Wie kann ich die Vars zusammenfassen und die lange Zeichenfolge erstellen?
arduino-uno
programming
software
stUrb
quelle
quelle
vnnt
während ein anderer sagtvannut
GPS.latitude
? Zum Beispiel ist es einfloat
,int
usw.?Antworten:
Die concat-Funktion implementiert keine float-Version, aber einige von char, int, unsigneds ...
Daher weiß der Compiler nicht, wie er den Float in eine Ganzzahl umwandeln soll (wahrscheinlich wird er abgeschnitten), da es mehrere Optionen gibt.
Sie müssen zuerst Ihren Float in einen String konvertieren, dtostrf () oder sprintf () verwenden und sich dann auf Ihren String konzentrieren.
oder
Und dann:
Beachten Sie auch, dass sprintf sehr praktisch ist, um eine (char) Zeichenfolge kompakt zu erstellen:
quelle
sprintf
es raus :)sprintf()
ist eine komplexe Funktion, daher ist sie ziemlich langsam und benötigt ziemlich viel Speicher. Im Allgemeinen würde ich es für "Produktions" -Code vermeiden (nur für Debug-Zwecke aufbewahren).sscanf
IIRC gibt es einige Einschränkungen (mit Gleitkommazahlen, denke ich).