Hallo
wollte über TCP einen Temperaturwert senden. Diesen müsste ich in einen String umwandeln.
Wie kann ich eine INT oder eine float in einen String umwandeln ?
Hallo
wollte über TCP einen Temperaturwert senden. Diesen müsste ich in einen String umwandeln.
Wie kann ich eine INT oder eine float in einen String umwandeln ?
emilio20:
wollte über TCP einen Temperaturwert senden. Diesen müsste ich in einen String umwandeln.Wie kann ich eine INT oder eine float in einen String umwandeln ?
http://www.nongnu.org/avr-libc/user-manual/modules.html
In Frage kommen zur Umwandlung von int und float/double in Char-Arrays:
itoa - avr-libc: <stdlib.h>: General utilities
dtostrf - avr-libc: <stdlib.h>: General utilities
Und andere - schaue Dir die Library an!
Und wie kann ich den Char Array zu einem String hinzufügen ?
In C sind Strings nichts anderes als Null-terminierte char Arrays! Du hast also schon einen String. Siehe hier für die Grundlagen:
Falls du fragst wie man Strings aneinanderhängen kann. Dafür gibt es strcat():
http://www.cplusplus.com/reference/cstring/strcat/
sprintf() oder snprintf() ist bei sowas auch manchmal eine gute Option:
http://www.cplusplus.com/reference/cstdio/sprintf/
http://www.cplusplus.com/reference/cstdio/printf/
Damit kannst du sehr leicht mehrere Zahlen auf einmal in einen einzigen String formatieren. Das funktioniert auf dem Arduino aber nicht mit Float!! Das ist der Grund weshalb es die AVR-spezifische Funktion dtostrf() gibt, welche es in ISO C nicht gibt.
emilio20:
Und wie kann ich den Char Array zu einem String hinzufügen ?
Du meinst eventuell String Objekte...
Da wirst du kaum vernünftige Hilfe kriegen. String Objekte sind noch böser als die delay() Funktion, und wenn du überhaupt Antworten kriegst, dann nur solche die dir sagen dass du sie nicht brauchst.
Wenn du 2k Flash und etwas RAM übrig hast, kannst du heutzutage tatsächlich String Objekte verwenden,
aber brauchen tust du's tatsächlich nicht.
Ausserdem gibt es
float f = 123.456;
server.print(f); // wandelt die float Zahl in einen Text und sendet diesen.
Hallo Emileo20'
Warum konvertierst Du nicht in ein bytearry und versendest dies. Das spart das hin und her wandeln. Ist glaube ich auch schneller.
Gruss
Kucky
Hallo mein SPS Programm ist schon auf Char ausgelegt.
ich versuche jetzt mal
float f = 123.456;
client.print(f); // wandelt die float Zahl in einen Text und sendet diesen.
HalloSuper hat geklappt .
allerdings habe ich es mit int gemacht
int f = 1232;
client.print(f);
Was ist der unterschied zwischen client.write und client.print ?
print() schickt ASCII. write() schickt rohe Binärdaten.
Es gehen beide bei mir. Ist write schneller ?
Ist write schneller ?
unwesentlich.
Beim Datentyp char* ruft print ohne große Umwandlerei write auf.
Das macht weniger als 1 µs aus, schätze ich.
Ist nicht so leicht messbar, weil,wenn du es zum Messen 10000 mal machst, die serielle Übertragung abgewartet werden muss, was eine ganz andere Größenordnung ist.