GPS - NMEA Daten Auswertung

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Die Geschwindigkeiten sind immer positiv. Ist wie beim Auto, wenn man nur mit Vorwärtsgängen fährt.
      Beim Kilometerzähler hätte ich schon die Teilstrecken addiert, inzwischen hab' ich auch schon einer Formel gefunden, die diese Strecke aus zwei Koordinatenpaaren liefert.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hier mal ein Mitschnitt, der gps-Empfänger liegt am Fensterbrett, die Zeit stimmt mit DCF überein.
      07:52:09 0.9km/h
      07:52:10 1.0km/h
      07:52:11 1.2km/h
      07:52:12 1.7km/h
      07:52:13 1.4km/h
      07:52:14 1.3km/h
      07:52:15 1.3km/h
      07:52:16 0.8km/h
      07:52:17 0.3km/h
      07:52:18 0.6km/h
      07:52:19 0.8km/h
      07:52:20 0.7km/h
      07:52:21 0.9km/h
      07:52:22 0.3km/h
      07:52:23 2.2km/h
      07:52:24 0.9km/h
      07:52:25 0.9km/h
      07:52:26 0.7km/h
      07:52:27 0.9km/h
      07:52:28 0.5km/h
      07:52:29 1.1km/h
      07:52:30 1.6km/h
      07:52:31 0.4km/h
      07:52:32 0.8km/h
      07:52:33 1.4km/h
      07:52:34 1.9km/h
      07:52:35 1.5km/h
      07:52:36 2.0km/h
      07:52:37 0.7km/h
      07:52:38 0.9km/h
      07:52:39 0.8km/h
      07:52:40 1.1km/h
      07:52:41 0.4km/h
      07:52:42 0.3km/h
      07:52:43 0.9km/h
      07:52:44 0.6km/h
      07:52:45 0.5km/h
      07:52:46 1.5km/h
      07:52:47 0.5km/h
      07:52:48 1.4km/h
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Michael wrote:

      Habt ihr da andere Ansätze oder geht das nicht anders?
      ich mach's grad so
      das Erzeugen des strings (der code kann hier auch die Geschwindigkeit als string liefern)

      BASCOM Source Code

      1. Serieller_irq:
      2. 'Beispiel: $GPRMC,085636.00,A,4934.94722,N,01057.70667,E,0.085,,250719,,,A*78
      3. 'Beispiel: $GPRMC,hhmmss.ss,A,llll.lllll,a,xxxxx.xxxxx,a,x.xxx,,ddmmyy,,,a*hh
      4. 'zz Zuordnung | | | | | |
      5. ' 1 2 4 6 8 1012 1315 16
      6. ' 3 5 7 9 11 14
      7. '
      8. '$GPVTG,96.01,T,,M,1.581,N,2.930,K,A*06
      9. ' | | || | | ||
      10. ' 2 3 4 6 7 8
      11. ' 5 9
      12. Zeichen = Chr(udr)
      13. If Zeichen = "$" Then 'Start einer Datenzeile erkannt
      14. Zz = 0 'Zeichenzähler setzen
      15. Einlesen = 1 'es folgt die Kennung das Datensatzes
      16. Zeilencode = ""
      17. End If
      18. 'Kennung einlesen
      19. If Einlesen = 1 Then
      20. Select Case Zz
      21. Case 0 : Incr Zz
      22. Case 1 : If Zeichen <> "," Then
      23. Zeilencode = Zeilencode + Zeichen
      24. Else
      25. If Zeilencode = "GPRMC" Then Einlesen = 2
      26. ' If Zeilencode = "GPVTG" Then Einlesen = 3
      27. Incr Zz
      28. End If
      29. End Select
      30. End If
      31. If Einlesen = 2 Then
      32. Select Case Zz
      33. Case 2 : Incr Zz
      34. Case 3 : 'Zeit wird übertragen
      35. Utc_time = Zeichen 'Stunde
      36. Incr Zz
      37. Case 4 'Zeit wird übertragen
      38. Utc_time = Utc_time + Zeichen 'Stunde
      39. Utc_time = Utc_time + ":" 'Trennzeichen einbauen
      40. Incr Zz
      41. Case 5 'Zeit wird übertragen
      42. Utc_time = Utc_time + Zeichen 'Minute
      43. Incr Zz
      44. Case 6 'Zeit wird übertragen
      45. Utc_time = Utc_time + Zeichen 'Minute
      46. Utc_time = Utc_time + ":" 'Trennzeichen einbauen
      47. Incr Zz
      48. Case 7 'Zeit wird übertragen
      49. Utc_time = Utc_time + Zeichen 'Sekunde
      50. Incr Zz
      51. Case 8 'Zeit wird übertragen
      52. Utc_time = Utc_time + Zeichen 'Sekunde
      53. Incr Zz
      54. Case 9 : If Zeichen = "," Then 'Sekundenbruchteile ignorieren
      55. Incr Zz 'nächstes Datenfeld ist Valid
      56. Valid = ""
      57. End If
      58. Case 10 : Valid = Zeichen : Incr Zz
      59. Case 11 : Incr Zz
      60. Laenge_txt = "" 'nächstes Datenfeld ist die geogr. Länge
      61. Case 12 : If Zeichen <> "," Then
      62. Laenge_txt = Laenge_txt + Zeichen
      63. Else
      64. Incr Zz
      65. N_s = "" 'nächstes Datenfeld ist Nord/Süd
      66. End If
      67. Case 13 : N_s = Zeichen : Incr Zz
      68. Case 14 : Incr Zz
      69. Breite_txt = "" 'nächstes Datenfeld ist geogr. Breite
      70. Case 15 : If Zeichen <> "," Then
      71. Breite_txt = Breite_txt + Zeichen
      72. Else
      73. Incr Zz
      74. O_w = "" 'nächstes Datenfeld ist Ost/West
      75. End If
      76. Case 16 : O_w = Zeichen 'Datum wird übertragen
      77. Zeit_da = 1 'Einlesen von Zeit und Datum komplett
      78. Einlesen = 0 'weitere Zeichen sind uninteressant
      79. End Select
      80. End If
      81. If Einlesen = 3 Then 'Geschwindigkeit einlesen
      82. Select Case Zz
      83. Case 2 : If Zeichen = "," Then Incr Zz
      84. Case 3 : If Zeichen = "," Then Incr Zz 'auf nächstes Datenfeld warten
      85. Case 4 : If Zeichen = "," Then Incr Zz 'auf nächstes Datenfeld warten
      86. Case 5 : If Zeichen = "," Then Incr Zz 'auf nächstes Datenfeld warten
      87. Case 6 : If Zeichen = "," Then Incr Zz 'auf nächstes Datenfeld warten
      88. Case 7 : If Zeichen = "," Then Incr Zz 'auf nächstes Datenfeld warten
      89. Case 8 : If Zeichen = "," Then
      90. Incr Zz
      91. Kmh_txt = "" 'nächstes Datenfeld ist km/h
      92. End If
      93. Case 9 : If Zeichen <> "," Then
      94. Kmh_txt = Kmh_txt + Zeichen
      95. Else
      96. Geschwindigkeit_da = 1
      97. Einlesen = 0
      98. End If
      99. End Select
      100. End If
      101. Return
      Display All

      und dann die Wandlung vom string in die Gradzahl mit Nachkommastellen

      BASCOM Source Code

      1. Function Grad_dez(byval Grad_string As String * 14)as Double
      2. 'erzeugt aus Nmea-strings ggggmm.mmmmmm eine double gg.gggggggg
      3. Local Grad_ As Double
      4. Local Grad_double As Double , Minuten As Double
      5. Grad_double = Val(grad_string) 'umwandeln in Dezimalzahl
      6. Grad_ = Grad_double / 100 'die Minuten hinter das Komma verschieben
      7. Minuten = Frac(grad_)
      8. Minuten = Minuten * 100 'Minuten samt Bruchteil der Minuten
      9. Minuten = Minuten / 60 'Bruchteil von einem Grad
      10. Grad_ = Int(grad_) 'Minutenanteil entfernen
      11. Grad_dez = Grad_ + Minuten 'neu zusammen setzen
      12. End Function
      Display All
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • das hab' ich mir auch gedacht, nachdem nix vom Tisch gerutscht ist, aber trotzdem, wenn man die üblichen Zuordnungen benützt, kommt man näher ans Ziel.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------