Kommazahl in string

hallo

ich bekomme einen Messwert z.b. 19.50 und möchte den in einen String umwandeln

 itoa(event.temperature, buffer_temperature, 10);
  strcat(buffer_temperature, "°C");
  tTemp.setText(buffer_temperature);

liefert 19Ä °C

ich müsse also den dezimalpunkt als Trenner nehmen und dann 2 Zahlen umwandeln ??

wie geht das nochmal genau ?

hm habe folgendes gefunden

dtostrf(event.temperature, 6, 2, buffer_temperature)

zeigt mir 19.50İC

lasse ich strcat weg wird die Zahl richtig angezeigt

Hartig_jue:
hallo

ich bekomme einen Messwert z.b. 19.50 und möchte den in einen String umwandeln

 itoa(event.temperature, buffer_temperature, 10);

strcat(buffer_temperature, "°C");
 tTemp.setText(buffer_temperature);




liefert 19Ä °C 

ich müsse also den dezimalpunkt als Trenner nehmen und dann 2 Zahlen umwandeln ??

wie geht das nochmal genau ?

Welchen Zeichensatz beherrscht Dein Ausgabegerät nochmal, auf dem der Text ausgegeben werden soll?

Also Du mixt in Deinem Code ein Grad-Symbol '°', das aus dem IDE Code -Editor kommt und daher im Zeichensatz "UTF-8" codiert ist, mit einem Großbuchstaben 'C' , der ein Standard-ASCII-Codesymbol ist, mit anderen Standard-ASCII-Symbolen wie Ziffern und einen Dezimalpunkt, und wo soll das ganze dann ausgegeben werden? Auf einem Gerät mit ASCII-Zeichensatz? Auf einem Gerät mit einem Windows-Zeichensatz? Oder auf einem Gerät, das den UTF-8 Zeichensatz darstellen kann?`

Wo hast Du das geschrieben?
DAS MUSS ICH WOHL IN DEINEM BEITRAG ÜBERLESEN HABEN!
Oder Du bist Dir eventuell nicht darüber im klaren, dass verschiedene Geräte und verschiedene Hard- und Software mit verschiedenen Codetabellen laufen und der kleinste gemeinsame Austauschstandard dabei "Standard-ASCII ohne zusätzliche Sonderzeichen" ist. Die im Standard-ASCII enthaltenen Sonderzeichen wie Punkt, Komma, Ausrufungszeichen, Fragezeichen wären kein Problem, aber ein Gradzeichen oder ein µ muß ggf. von einem in einen anderen Zeichensatz umgewandelt werden, wenn Du es auf einem Gerät mit abweichender Zeichensatztabelle ausgeben möchtest.

jurs:
Welchen Zeichensatz beherrscht Dein Ausgabegerät nochmal, auf dem der Text ausgegeben werden soll?

Also Du mixt in Deinem Code ein Grad-Symbol '°', das aus dem IDE Code -Editor kommt und daher im Zeichensatz "UTF-8" codiert ist, mit einem Großbuchstaben 'C' , der ein Standard-ASCII-Codesymbol ist, mit anderen Standard-ASCII-Symbolen wie Ziffern und einen Dezimalpunkt, und wo soll das ganze dann ausgegeben werden? Auf einem Gerät mit ASCII-Zeichensatz? Auf einem Gerät mit einem Windows-Zeichensatz? Oder auf einem Gerät, das den UTF-8 Zeichensatz darstellen kann?`

das Display ist ein Nextion, der Zeichensatz wird mittels eines Editors übertragen ( std. Windows font )

wenn ich das im Editor in das Textfeld schreibe wird es richtig angezeigt

Dann musst du rauskriegen, wo in deinem "std. Windows font" (was immer das ist) das ° Zeichen liegt.

Wenn es ANSI (Windows-1252) ist, müsste es 17610 = 2608 ( 0xB0 ) sein.

Probier mal    strcat(buffer_temperature, "\260C"); Evtl. lässt sich so der IDE Editor austricksen.

Ich habe einfach ein weiteres "Text-Fenster" im editor dran gehängt und da fest °C rein geschrieben - so gehts auch :slight_smile:

im editor

Du meinst sicher den nextion - Editor.
D.h. der Arduino sendet nur die nackte Zahl ...

Das ist generell die bessere Lösung, stimmt. Was ist nun mit der Kommazahl ?

dtostrf(event.temperature, 6, 2, buffer_temperature)

wandelt die Zahl um 6stellen 2 nachkommastellen

Ups, Tschuldigung, hatte deinen 2. Beitrag übersehen.
Und danach war das ( zu Recht ) kein Thema mehr ...