Moin, gibt es einen Standard (so wie .gpx) der aber deutlich platzsparender ist als gpx, aber nicht an der Genauigkeit (Ort, Zeit) spart? Sollte auf einen 8-Bitter mit 4k SRAM laufen. (gzip und co. brauchen zu viel SRAM) Danke, Kai
NMEA. Das liefert normalerweise eine GPS Receiver standardmässig. Du kannst die Daten natürlich nach deinen eigenen Vorstellungen eindampfen.
Leider ist selbst der kurze $GPGLL Satz mit 44 Byte noch viel zu groß. Ich dachte da mehr an 4 Byte pro Position... Das Problem ist doch schon mindestens 14 Jahre alt :-/
Kai R. schrieb: > Ich dachte da mehr an 4 Byte pro Position Kannst du dir selbst machen. Die Lat/Lon Koordinaten in verschiedene Telegramme packen und nur die Änderung übertragen.
Kai R. schrieb: > Leider ist selbst der kurze $GPGLL Satz mit 44 Byte noch viel zu groß. Was hindert dich daran die benötigten Werte aus dem 44 Byte heraus zu ziehen und von ASCII (ein Byte pro Zeichen) in eine Platzsparende Binärform zu überführen. Beim Einkaufen kaufts Du doch auch nicht den ganzen Supermarkt. ;-)
Die Latitude und Longitude könntest du einfach als vorzeichenbehaftete Festkommazahl in je 3 Byte speichern. Abhängig davon wie genau du die Position speichern willst, könntest du auch weniger Bits verwenden.
:
Bearbeitet durch User
Kai R. schrieb: > Leider ist selbst der kurze $GPGLL Satz mit 44 Byte noch viel zu groß. > Ich dachte da mehr an 4 Byte pro Position... > > Das Problem ist doch schon mindestens 14 Jahre alt :-/ Bei einem GPS-Fix einmal pro Sekunde über 14 Jahre mal 44 Bytes pro Fix sind das: 14 365 86400 * 44 Bytes = 19426176000 Bytes = ca. 19426 MB Damit bekommst Du in 14 Jahren eine 32 GB SD-Karte zu knapp zweidrittel vollgeschrieben. Warum willst Du die Daten komprimieren, wenn sie locker unkomprimiert zu verarbeiten sind? Und falls Dir 44 Bytes zu viel sind: - LAT in Millionstel Grad ==> long - LON in Millionstel Grad ==> long - Sekunden ab z.B. 1.1.2000 ==> long 3 * sizeof(long) = 12 Bytes Dann bekommst Du auf eine 32 GB SD-Karte mehr als 84 Jahre Aufzeichnung mit sekündlichem GPS-Fix drauf.
Leider hab ich nur ~20 kbit frei (es ist kein neues Design).
>Leider hab ich nur ~20 kbit frei (es ist kein neues Design).
Das sind 2,5kB. Kleb dir einen SPI Flash mit 4MB unter
die Platine. Dann hat dein leiden ein Ende. Oder
tausch den vorhandenen Speicher aus wenns geht.
Schau Dir erst mal das Signal an. Wahrscheinlich kannst Du einfach 2 Datensatzformate definieren. Eines mit der kompletten Position (das dann groß ist), und eines mit Differenzen. Das kleine mit den Differenzen kannst du dann für jede Positionsangabe verwenden. Falls die Differenz mal größer ist, kannst Du die vollständige Position abspeichern. Das ist so ein Kompromiss zwischen Aufwand und Größe. Willst Du das ideal machen, mach folgendes: Speichere nur Differenzen, wobei Du entweder die Anfangsposition direkt speicherst, oder von der Anfangsposition 0 ausgehst (und dann eine große Position hast). Messe erst mal ein paar Strecken durch, und bilde die Differenzen zwischen den Positionsdaten. Mach eine Häufigkeitsverteilung über diese Differenzen, und bestimme dann, zum Beispiel über den Huffman Algorithmus die optimale Kodierung für jede Differenz. Wahrscheinlich wirst Du dann für kleine Differenzen weniger Bits haben als für große. Richtig gemacht wird das ideal. Die Tabelle die Du zur Umsetzung brauchst kannst Du ja konstant auf beiden Seiten haben.
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.