mikrocontroller.net

Forum: Projekte & Code [C++] Parsen von serielen float(Komma) Daten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Yellow D. (yellowdev)


Bewertung
0 lesenswert
nicht lesenswert
Es ist jetz das zweite mal das ich mich mit dem parsing, von seriel (vom 
Receiver)"empfangenen", gps NMEA bzw. RAWX Strings auseinandersetzte.
Beim ersten mal hab ich nur NMEA Strings geparsed und dabei für lat und 
lon immer längere doubles erhalten aber immer ohne Kommastellen, das war 
aber nicht wirklich ein Problem weil ich ja ungefähr wusste an welcher 
Stelle bei uns in De. das Komma stehen sollte.

Jetzt arbeite ich aber mit dem Raw output von nem Receiver(neo m8t) der 
mehr oder weniger reine GPS alanac/ ephemeris/ observation (ubx-rawx, 
ubx-rawsfrbx)Daten ausspuckt. Aber die auch ohne Kommastelle, nur leider 
kann ich die bei solchen Werten nicht erraten :/.

Zum auslesen der rohen Seriellen Daten benutzte ich die 
wiringpi(wiringPiSerial) lib., den gelesenen byte passe ich dann in RTK 
lib (ne C lib zum dekodieren von solchen Daten), aber die spuckt dann 
auch wieder nur Zahlen ohne komma aus...

Hat jemand ne Idee? Scheint ja nicht wirklich vom code abhängig zu sein 
sondern irgendwie nen Denkfehler von meiner Seite.

Grüße luick

von MaWin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Yellow D. schrieb:
> Hat jemand ne Idee?

Niemand braucht float für Zahlen mit Komma, man liest Integer z.B. bei 
Geldbeträgen nicht EUR sondern cent, bei lat/lang nicht Grad sondern 
Bogensekunden.
Das Komma beachtet man bloss wenn unterschiedlich viele Nachkommaziffern 
folgen könnten - um mit 0 aufzufüllen oder bei nicht mehr interessanten 
Ziffern aufhören zu können.

von Yellow D. (yellowdev)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Yellow D. schrieb:
>> Hat jemand ne Idee?
>
> Niemand braucht float für Zahlen mit Komma, man liest Integer z.B. bei
> Geldbeträgen nicht EUR sondern cent, bei lat/lang nicht Grad sondern
> Bogensekunden.
> Das Komma beachtet man bloss wenn unterschiedlich viele Nachkommaziffern
> folgen könnten - um mit 0 aufzufüllen oder bei nicht mehr interessanten
> Ziffern aufhören zu können.

Aha danke, das erklärt schonmal ne Menge, aber was ist z.B. mit Metern 
wenn, ich eine Pseudo Range(Abstand Erdoberfläche zu Sat) von 26023200 
habe, dann könnten das wirklich 26023200 m sein(was unrealistisch 
ist)oder, was wahrscheinlicher ist 26023.20, was wahrscheinlicher 
ist....

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht lesenswert
Die GPS Satelliten fliegen in 20200 km Höhe

von Nick M. (muellernick)


Bewertung
-1 lesenswert
nicht lesenswert
Soso ... beim ubx-rawx kommen also Daten raus, bei denen man die 
Kommastelle erraten muss. Geht ja echt niemanden etwas an. Die sollen 
das IC kaufen, ansonsten die Klappe halten.
Ich denk, da solltest du nochmal bei der Doku anfangen, bevor du dir 
irgendwelche Konvertierungen zusammenbastelst.

von Yellow D. (yellowdev)


Bewertung
0 lesenswert
nicht lesenswert
Nick M. schrieb:
> Soso ... beim ubx-rawx kommen also Daten raus, bei denen man die
> Kommastelle erraten muss. Geht ja echt niemanden etwas an. Die sollen
> das IC kaufen, ansonsten die Klappe halten.
> Ich denk, da solltest du nochmal bei der Doku anfangen, bevor du dir
> irgendwelche Konvertierungen zusammenbastelst.

mirt ist schon klar das dass nen Denkfehler von meiner Seite ist, aber 
ich hab die 400 Seiten Interface Doku jezt schon durch aber künnte nix 
wirklich hilfreiches finden lol.

von Uhu U. (uhu)


Bewertung
-2 lesenswert
nicht lesenswert
Yellow D. schrieb:
> Beim ersten mal hab ich nur NMEA Strings geparsed und dabei für lat und
> lon immer längere doubles erhalten aber immer ohne Kommastellen, das war
> aber nicht wirklich ein Problem weil ich ja ungefähr wusste an welcher
> Stelle bei uns in De. das Komma stehen sollte.

Das ist doch alles bestens dokumentiert, da muss man nix erraten…

von Nick M. (muellernick)


Bewertung
-1 lesenswert
nicht lesenswert
Yellow D. schrieb:
> aber ich hab die 400 Seiten Interface Doku jezt schon durch

OK, das kann ublox: Zu viel Doku die nur noch verwirrt.
Lass dich nicht verleiten von der 100sten zur 1000sten 
Detailbeschreibung zu springen. Lies nur den Teil mit ubx-rawBlaBla. Das 
muss doch zu verstehen sein (hab das nie verwendet).

EInfacher ist halt NMEA, da gibt es tausende Beispiele. Ich hab zwei 
verschiedene ublox GPS-Module verwendet und beide Male hat es prima 
geklappt. SO ein NMEA-String ist ja nicht unendlich schwer zu parsen.

von adib (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Also ich verwende ausschließlich ubx.
Für mich hat und den Vorteil einfacher zu dekodieren als nmea.
Ich definiere eine struct mit der entsprechenden Struktur und Weise den 
Puffer zu. Fertig.
Durch die gleiche endianess brauchst du auch nix drehen.
Wenn du willst, kann ich auch etwas Code liefern .....

Grüße, Adib.

von Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kann gpsd mit deinem Receiver umgehen? Damit wären viele Probleme 
bereits gelöst, wenn du keine Spezialitäten brauchst.

von Yellow D. (yellowdev)


Bewertung
0 lesenswert
nicht lesenswert
adib schrieb:
> Hallo,
> Also ich verwende ausschließlich ubx.
> Für mich hat und den Vorteil einfacher zu dekodieren als nmea.
> Ich definiere eine struct mit der entsprechenden Struktur und Weise den
> Puffer zu. Fertig.
> Durch die gleiche endianess brauchst du auch nix drehen.
> Wenn du willst, kann ich auch etwas Code liefern .....
>
> Grüße, Adib.

ja, das wäre großartig, nur als Inspiration. Übernehme nix direkt, mich 
interessiert nur schwehr wie ich aus meiner Pseuod Range was Sinnvolles 
machen kann. Denn rtklib gibt mir für die Pseudo Range nur einen double 
zurück aber ohne Information wo ich das "Komma" setzten muss, weil der 
double hat ja noch ne genauigkeit und der Abstand zum Satelliten wird ja 
nicht ne Zahl mit 16 Stellen sein, das wäre eher der Abstand zum 
Mond....
Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.