Wenn ich NMEA-Strings, die aus einem gps-Empfänger kommen, in eine single umwandle, dann sollte das Erscheinungsbild doch erstmal gleich sein, wenn ich beide Variablen drucke. Ist es aber nicht, zumindest bei mir nicht und das schon ab der 3. Nachkommastelle
Folgender Ausdruck als Beispiel
4934.94379N 4934.941894531 49.582363126
01057.70983E 1057.709472656 10.961824415
4934.94360N 4934.941894531 49.582363126
01057.70991E 1057.709472656 10.961824415
4934.94356N 4934.941894531 49.582363126
01057.71004E 1057.709960937 10.961832044
die erste Ziffernfolge ist der string (ggmm.mmmmm), N oder E ist die geographische Richtung, die 2. Ziffernfolge ist jetzt Val(string) (ggmm.mmmmm) und die 3. Ziffernfolge soll die Grad-Dezimalzahl des strings sein (gg,ggggggggg)
Wo ist jetzt ein Fehler, oder was muss ich andes Machen, dass ich eine bessere Genauigkeit bekomme?
Das Programm schaut im interessanten Bereich so aus:
Alles anzeigen
Folgender Ausdruck als Beispiel
4934.94379N 4934.941894531 49.582363126
01057.70983E 1057.709472656 10.961824415
4934.94360N 4934.941894531 49.582363126
01057.70991E 1057.709472656 10.961824415
4934.94356N 4934.941894531 49.582363126
01057.71004E 1057.709960937 10.961832044
die erste Ziffernfolge ist der string (ggmm.mmmmm), N oder E ist die geographische Richtung, die 2. Ziffernfolge ist jetzt Val(string) (ggmm.mmmmm) und die 3. Ziffernfolge soll die Grad-Dezimalzahl des strings sein (gg,ggggggggg)
Wo ist jetzt ein Fehler, oder was muss ich andes Machen, dass ich eine bessere Genauigkeit bekomme?
Das Programm schaut im interessanten Bereich so aus:
BASCOM-Quellcode
- ...
- Print Laenge_txt ; N_s ; " ";
- Temp = Val(laenge_txt)
- Print Temp ; " ";
- Temp = Grad_dez(laenge_txt)
- Print Temp ; " "
- Print Breite_txt ; O_w ; " ";
- Temp = Val(breite_txt)
- Print Temp ; " ";
- Temp = Grad_dez(breite_txt)
- Print Temp ; " "
- End If
- Loop
- End
- Function Grad_dez(byval Grad_string As String * 14)as Single
- 'erzeugt aus Nmea-strings ggggmm.mmmmmm eine single gg.gggggggg
- Local Grad_word As Word , Grad_ As Word , Grad_single As Single , Minuten As Single , Grad_bruch As Single
- Grad_single = Val(grad_string) 'umwandeln in Dezimalzahl
- Grad_word = Grad_single 'Nachkommas entfernen, letzten beidenn Stellen sind Minuten
- Grad_ = Grad_word / 100 'Minutenanteil entfernen
- Grad_word = Grad_ * 100 'Gradzahl*100
- Minuten = Grad_single - Grad_word 'Minuten samt Bruchteil der Minuten
- Grad_bruch = Minuten / 60 'Bruchteil von einem Grad
- Grad_dez = Grad_ + Grad_bruch
- End Function
- ...
Raum für Notizen
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------