Re: Rohdaten aus einem LEA-4T rauskitzeln
Verfasst: 25.04.2013 - 20:22
Sooooo.... ein bisschen Zeit ist vergangen und ich war fleißig bei meinem Projekt.
Auch wenn ich nicht ganz so weit gekommen bin wie ich es mir erwünscht habe, aber das Problem kennt ihr ja auch...
Es stellt sich aber ein neues Problem!
Doch zuvor hier mal ein Raw-Daten-Schnipsel... (Beobachtungsdaten, keine Ephemeriden)
Ein Paar Feststellungen habe ich mittlerweile gemacht.
Die überraschenste ist wohl, das es -aus meiner Froschperspektive- nicht möglich ist einen Arduino Uno zum Berechnen einer Position aus Rohdaten zu nutzen.
Hintergrund:
Der Uno schafft es von der Rechenleistung her nicht die Hex-Werte in eine Nummer zu verwandeln.
Ein Beispiel:
Die erste Daten-Zeile enthält die ublox-ID der Nachricht ("B5,62,2,10") sowie die Byte-Länge der Nachricht ("C8,0") und dahinter folgend der Empfangszeitpunkt ("42,C0,64,18") sowie die GPS-Woche ("C9,6"), Anzahl empfangener Satelliten ("8") und ein Spare-Byte ("0").
Versucht man jetzt auf dem Arduino den Empfangszeitpunkt von Hex in einen Integer zu konvertieren klappt das mit den drei kleinsten Byte korrekt, jedoch wird bei Addition des größten Byte immer der Wert verfälscht... ich tippe auf einen Buffer-Overflow im Arduino aufgrund zu geringem Arbeitsspeicher... Andere Meinungen sind natürlich gern willkommen!
Glücklicherweise hatte ich nicht vor auf dem Arduino die Daten auszuwerten, weshalb mich dieses Problem nicht sonderlich einschränkt.
Im Gegensatz zum nun folgenden Sachverhalt...
Im "Header" der Raw-Daten (erste Zeile) steht das momentan 8 Satelliten empfangen werden...
Zwecks Veranschaulichung habe ich mal die zu den Satelliten gehörenden Beobachtungen im Beispiel in einzelne Zeilen kopiert... jede Zeile entspricht dem Beobachtungs-Satz für einen Satelliten... kurz durchgezählt stehen in jeder Nachricht nur 5 1/2 Satelliten, anstatt der angegebenen 8.
Leider hab ich keine Idee woran das liegt. Mir ist es noch nicht einmal möglich einzugrenzen ob der Fehler beim Empfänger, beim Microcontroller oder in meinem Code liegt...
Hat einer von euch eine Idee ???
Ich wünsche schonmal viel Spaß beim Rätseln...
Taurus
Auch wenn ich nicht ganz so weit gekommen bin wie ich es mir erwünscht habe, aber das Problem kennt ihr ja auch...
Es stellt sich aber ein neues Problem!
Doch zuvor hier mal ein Raw-Daten-Schnipsel... (Beobachtungsdaten, keine Ephemeriden)
Die Daten sind natürlich Hex-codiert, aber das habt ihr ja längst erkannt...B5,62,2,10,C8,0,42,C0,64,18,C9,6,8,0,
0,0,0,0,0,0,0,0,95,DE,C7,4E,C,F0,76,41,66,33,36,C4,18,4,1B,3,
0,0,0,0,0,0,0,0,6D,35,AF,C9,90,AE,77,41,66,BA,B9,45,1F,4,14,3,
0,0,0,0,0,0,0,0,17,68,5B,4,9,9F,74,41,17,5F,A6,44,C,4,1A,3,
0,0,0,0,0,0,0,0,39,64,12,48,24,41,B1,1B,C,D9,5B,9A,27,5A,EA,74,
68,19,2,0,0,2,6,76,C,1D,3,0,0,0,F7,76,4F,88,2,1E,0,0,0,0,
7C,F8,41,D9,44,1C,A6
Ein Paar Feststellungen habe ich mittlerweile gemacht.
Die überraschenste ist wohl, das es -aus meiner Froschperspektive- nicht möglich ist einen Arduino Uno zum Berechnen einer Position aus Rohdaten zu nutzen.
Hintergrund:
Der Uno schafft es von der Rechenleistung her nicht die Hex-Werte in eine Nummer zu verwandeln.
Ein Beispiel:
Die erste Daten-Zeile enthält die ublox-ID der Nachricht ("B5,62,2,10") sowie die Byte-Länge der Nachricht ("C8,0") und dahinter folgend der Empfangszeitpunkt ("42,C0,64,18") sowie die GPS-Woche ("C9,6"), Anzahl empfangener Satelliten ("8") und ein Spare-Byte ("0").
Versucht man jetzt auf dem Arduino den Empfangszeitpunkt von Hex in einen Integer zu konvertieren klappt das mit den drei kleinsten Byte korrekt, jedoch wird bei Addition des größten Byte immer der Wert verfälscht... ich tippe auf einen Buffer-Overflow im Arduino aufgrund zu geringem Arbeitsspeicher... Andere Meinungen sind natürlich gern willkommen!
Glücklicherweise hatte ich nicht vor auf dem Arduino die Daten auszuwerten, weshalb mich dieses Problem nicht sonderlich einschränkt.
Im Gegensatz zum nun folgenden Sachverhalt...
Im "Header" der Raw-Daten (erste Zeile) steht das momentan 8 Satelliten empfangen werden...
Zwecks Veranschaulichung habe ich mal die zu den Satelliten gehörenden Beobachtungen im Beispiel in einzelne Zeilen kopiert... jede Zeile entspricht dem Beobachtungs-Satz für einen Satelliten... kurz durchgezählt stehen in jeder Nachricht nur 5 1/2 Satelliten, anstatt der angegebenen 8.
Leider hab ich keine Idee woran das liegt. Mir ist es noch nicht einmal möglich einzugrenzen ob der Fehler beim Empfänger, beim Microcontroller oder in meinem Code liegt...
Hat einer von euch eine Idee ???
Ich wünsche schonmal viel Spaß beim Rätseln...
Taurus