Hallo
Ich hatte noch ein paar andere Sachen um die Ohren, deshalb hats etwas länger gedauert.
Aber hier mein Ergebniss.
Zum empfangen der Daten habe ich aus dem Link von noiasca das zweite Beispiel (Example 2 - Receive with an end-marker) verwendet.
Das klappt soweit auch super.
Beim Umwandeln hab ich etwas rumgespielt, und hab jetzt diese Lösung:
Die Daten werden vorher empfangen und in dem "char SerielleDaten[]" gespeichert.
Die "float Speed" wird auch global festgelegt.
void DatenUmrechnen()
{
char Wert[9]; // neuen Char[] erstellen
Wert[0] = SerielleDaten[17]; // Die benötigten Buchstaben in das neue Char[] übernehmen
Wert[1] = SerielleDaten[18];
Wert[2] = SerielleDaten[19];
Wert[3] = SerielleDaten[20];
Wert[4] = SerielleDaten[21];
Wert[5] = SerielleDaten[22];
Wert[6] = SerielleDaten[23];
Speed = atof(Wert); // Wert in float Speed umwandeln
}
Das übernehmen der Buchstaben in den "char Wert[]" könnte ich noch über eine Schleife machen.
Bei mir funktioniert das so sehr gut, aber auch nur, weil meine Zahl immer genau an der gleichen Stelle in dem "char SerielleDaten[]" steht.
Wen die Zahlen weniger Stellen haben, ersetzt mein Messgerät durch führende Leerzeichen, die atof dann sauber wegschneidet.
Ich habe etwas mit strtok rumgespielt, hat aber nicht auf anhieb geklappt.
Grüße, e0mc2