Hallo, ich sitze gerade vor folgendem Problem: Ich möchte die Breite und Länge auf einem LCD Display anzeigen. Soweit funktioniert das auch super. Nur die Werte für die Bogensekunde stimmen überhaupt nicht. (empfange 12Satteliten davon 10 fix) Wo mache ich da etwas falsch? Gruß Dirk Auszug Header typedef struct{ uint8_t Grad; uint8_t Bogenminuten; uint16_t Bogensekunden; uint8_t NS; }TBreite; Auszug Main Font_SetPos(2,40); // Anzeige Position festlegen printf("Breite %02d.%02d.%02d.%c", GPS_Daten0.Breite.Grad, GPS_Daten0.Breite.Bogenminuten, GPS_Daten0.Breite.Bogensekunden, GPS_Daten0.Breite.NS); Font_SetPos(2,50); // Anzeige Position festlegen printf("Laenge %02d.%02d.%02d.%c", GPS_Daten0.Laenge.Grad, GPS_Daten0.Laenge.Bogenminuten, GPS_Daten0.Laenge.Bogensekunden, GPS_Daten0.Laenge.WE);
>Soweit funktioniert das auch super. Nur die Werte für die Bogensekunde >stimmen überhaupt nicht. Woher weisst du das? Was erwartest du und was wird angezeigt? >Wo mache ich da etwas falsch? Beim einlesen der Bogensekunden? Sorry, zu wenig Infos.
Dirk schrieb: > Hallo, > > der Code ist von Marc Seiffert. > nähere Infos hier > > Beitrag "GPS-Parser für XMEGA" > > Gruß Dirk Da kommen aber deine Variablen und Strukturen gar nicht vor! So wirst du dir nicht viele Helfer finden, wenn sich die Helfer erst mal alles aus 25 Quellen zusammensuchen müssen, um dann die noch fehlenden Details zu erraten um daraus dann eine Hypothese abzuleiten, was du wohl alles falsch gemacht haben könntest.
Angezeigt wird Breite xx.xx.6837.N richtig wäre aber Breite xx.xx.4926.N (laut Google Earth) Gruß Dirk
> Ziel->Breite.Bogensekunden = (Quelle[18]-48)*1000; > Ziel->Breite.Bogensekunden += (Quelle[19]-48)*100; > Ziel->Breite.Bogensekunden += (Quelle[20]-48)*10; > Ziel->Breite.Bogensekunden += (Quelle[21]-48); Liefert dein GPS vier Stellen für die Bogensekunden? Hast du mal einen Terminal Mitschnitt vom GPS?
Hi >der Code ist von Marc Seiffert. >nähere Infos hier >Beitrag "GPS-Parser für XMEGA" >Gruß Dirk Das ist Müll. Die Stellen nach dem Komma müssen mit 60 Multipliziert werden. Der Intergerteil davon sind die Minuten. Der Nachkommateil davon x 60 ergibt die Sekunden. MfG Spess
Denke mal ja holger schrieb: >> Ziel->Breite.Bogensekunden = (Quelle[18]-48)*1000; > >> Ziel->Breite.Bogensekunden += (Quelle[19]-48)*100; > >> Ziel->Breite.Bogensekunden += (Quelle[20]-48)*10; > >> Ziel->Breite.Bogensekunden += (Quelle[21]-48); > > > > Liefert dein GPS vier Stellen für die Bogensekunden? $GPRMC,215359.000,V,0000.0000,N,00000.0000,E,000.0,000.0,170111,,,N*78 $GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02 $GPGGA,215400.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*6F $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPGSV,1,1,02,15,00,000,31,24,00,000,33*7B soeben Mitgeschnitten. Ist zwar null Empfang (Fenster zu Rollo runter) aber das tut ja nichts zur Sache. Dirk
>Angezeigt wird > >Breite xx.xx.6837.N > >richtig wäre aber > >Breite xx.xx.4926.N (laut Google Earth) Ach Mann, das ist doch wieder das Ding mit den Nachkommastellen. Das sind keine Sekunden sondern Bruchteile von Minuten. Umrechnung: bemühe die Forensuche.
>soeben Mitgeschnitten. Ist zwar null Empfang (Fenster zu Rollo runter) >aber das tut ja nichts zur Sache. Klaro, wenn mein Fernseher nicht an ist kann ich dir sagen welches Programm eingeschaltet ist. Pappnase;)
Hi >Ach Mann, das ist doch wieder das Ding mit den >Nachkommastellen. Das sind keine Sekunden sondern >Bruchteile von Minuten. Umrechnung: bemühe die Forensuche. Richtig. MfG Spess
@Holger der Mitschnitt war nur auf die Anzahl der Stellen für die Bogenkunde gedacht. Wie gesagt wenn der Empfänger draußen liegt empfange ich 12Satteliten davon 10 fix. Dirk
Hi Das ändert nichts daran, das die Berechnung in deiner Vorlage falsch ist. MfG Spess
Dirk schrieb: > @Holger > > der Mitschnitt war nur auf die Anzahl der Stellen für die Bogenkunde > gedacht. > Wie gesagt wenn der Empfänger draußen liegt empfange ich 12Satteliten > davon 10 fix. Dann mach draussen einen Mitschnitt und sieh dir an, was denn nun richtig ist. Je nach verwendetem Erd und Kartenmodell können GPS Koordinaten nämlich durchaus von anderen veröffentlichten Daten abweichen. D.h. wenn du vergleichen willst, dann Vergleich deinen Mitschnitt mit deiner Anzeige. Die müssen übreinstimmen. Aber Vergleich nicht mit einer Quelle, bei der du nicht weißt, wie die Daten aufbereitet wurden.
Hallo ist ca. 30km daneben. Die Berechnung ist also nicht ganz richtig (falsch) Danke für Eure Hilfe. Dirk
Hi >0.6837 * 60 = 41 Sekunden >Gib das mal als Sekunden ein. 0.6837 x 60 = 41.022 Minuten 0.022 x 60 = 1,32 Sekunden MfG Spess
holger schrieb: >> Ziel->Breite.Bogensekunden = (Quelle[18]-48)*1000; > >> Ziel->Breite.Bogensekunden += (Quelle[19]-48)*100; > >> Ziel->Breite.Bogensekunden += (Quelle[20]-48)*10; > >> Ziel->Breite.Bogensekunden += (Quelle[21]-48)*60; Dann wäre es ja so oder stehe ich jetzt ganz auf dem Schlauch. Dirk
>Breite xx.xx.6837.N >richtig wäre aber >Breite xx.xx.4926.N (laut Google Earth) Mal so als Hinweis: Breitengrade: 1° = 111,1 Kilometer 1' = 1852 Meter 1" = ~ 31 Meter Und jetzt kannst du mal die angebliche Differenz ausrechnen.
Dirk schrieb: > holger schrieb: >>> Ziel->Breite.Bogensekunden = (Quelle[18]-48)*1000; >> >>> Ziel->Breite.Bogensekunden += (Quelle[19]-48)*100; >> >>> Ziel->Breite.Bogensekunden += (Quelle[20]-48)*10; >> >>> Ziel->Breite.Bogensekunden += (Quelle[21]-48)*60; > > Dann wäre es ja so oder stehe ich jetzt ganz auf dem Schlauch. > > Dirk Vorher wars richtig, entferne deine Verschlimmbesserung besser wieder. Die Abweichung von der Googleposition hat nichts mit einem Umrechnungsfehler von Dezimalsekunden in Sekunden zu tun. Google benutzt wohl einfach ein anderes oder abgewandeltes geodätisches Referenzsystem und verursacht dadurch in deinem Fall eben eine Abweichung von 350 Metern. Habe grade mal nachgeschaut, Google werwendet eine einfache Zylinderprojektion mit dem WGS84 Referenzelipsoid, was die Unterschiede schon erklären könnte. Das kannst du dir vereinfacht in etwa so vorstellen als das die Erde als Kugel (Elipsoid) angenommen wird und darauf eine Kartenhaut gespannt wird. Was dabei vernachlässigt wird ist die Tatsache das die Erde an manchen Stellen etwas höher, an anderen etwas tiefer ist. Durch diese Verzerrungen stimmt die Kartenhaut zwar an den meisten Stellen so ungefähr, sitzt aber manchmal doch etwas daneben. Der Fehler kommt also nur daher das Google Earth die Luftbilder nicht exakt auf die Erde abbildet. Als Beispiel hierfür kann man sich z.B. mal den 50. Breitengrad in der Mainzer Innenstadt in Google Earth anschauen ( 49°59'56.00"N, 8°16'16.10"E ), der liegt auf den Bildern auch 4 Sekunden bzw. 120m daneben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.