- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: gps datensätze auswerten wie macht ihr das

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.01.2007
    Ort
    Deutschland [Bayern]
    Alter
    42
    Beiträge
    125
    Anzeige

    E-Bike
    sry. das ich das hier ausgrabe, aber mir fällt auf anhieb der Datensatz auf, der doch recht kaput zu sein scheint.

    Grundsätzlich miss der Datensatz mit "$" beginnen, und endet IMMER mit einem Zeilenumbruch (CR & LF)

    Vor dem zeilenumbruch kann (muss nicht) eine Checksumme hinzu kommen, die mit einem * gekennzeichnet 2 Bytes vor dem zeilenumbruch endet und mit 2 Hexadezimalwerte bis zum zeilenumbruch endet.

    ein Datensatz hat auserdem eine reguläre maximale Grösse von 32 Bytes.

    Die Einzelnen Parameter sind anschliessend mit Kommas (,) getrennt. Es kann ebenfalls sein, das ein Datenfeld nicht vollständig, bzw. leer sind. dieses feld wird jedoch nicht weg gelassen, sondern einfach nur leer. z.B. (,,)

    Wenn du die unterschiedlichen Datensätze auswerten willst, empfielt sich die studie dieser dokumentation: http://www.nmea.de/nmea0183datensaetze.html#osd


    JimJim
    XUN

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    ein Datensatz hat auserdem eine reguläre maximale Grösse von 32 Bytes
    Das ist aber zB. ein String mit 63 Zeichen (inklusive CrLf):
    GPGGA,235947.000,0000.0000,N,0000.0000,E,017038,M ,,,,0000*00
    Die StringVariable sollte also höher dimensioniert werden als 30.

    Gruß
    Christopher

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    10.06.2006
    Ort
    Duisburg-Rheinhausen
    Alter
    78
    Beiträge
    80

    Gps

    Hier ein Programm war ein Versuch es ist nicht Dokumentiert aber ich hoffe es hilft Dir weiter
    Gruß raggy
    Code:
    'Programm für GPS_Modul HI-204S******************
    'kann an jeden anderen GPS Empfaenger angepaßt werden.
     'Getestet auf Atmega16/32 und Atmega168
    $regfile = "m16def.dat"
    $crystal = 10000000
    $baud = 4800
    $hwstack = 32                                               'hardware stack
    $swstack = 8                                                'software stack
    $framesize = 44                                             'frame space
    
    Dim K As String * 10
    Dim S As String * 72
    
    Dim N_grad As String * 2
    Dim E_grad As String * 3
    Dim N_min As String * 2
    Dim N_ablage As String * 3
    Dim E_min As String * 2
    Dim Nord As String * 2
    Dim Ost As String * 3
    Dim Nord_rest As String * 7
    Dim Ost_rest As String * 7
    Dim E_ablage As String * 3
    Dim N As String * 1
    Dim O As String * 1
    Dim Av As String * 1
    Dim N_sec As Single
    Dim E_sec As Single
    Dim Runden As Single
    Dim Ablage As Integer
    Dim Ergebnis As Single
    
    Const T = 1000
    Const Time = 60
    
    'Fuer Atmega168
    'Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
    
    'Fuer Atmega16/32
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
    
    Config Lcd = 40 * 2
    Cls
    Cursor Off
    
    On Urxc Onrxd
    Enable Urxc
    Enable Interrupts
    
    Main:
    
    Goto Main
    
    
    Onrxd:
    'S = "$GPRMC,104549.04,A,2447.2038,N,12100.4990,E,016.0,221.0,250304,003.3;W;A"
    S = S + Chr(udr)
    If Len(s) = 72 Then
    S = Mid(s , 2 , 71)
    End If
    K = Mid(s , 1 , 6)
    '******Position In Grad und Minuten******Auslesen**
    Nord = Mid(s , 21 , 2)
    Ost = Mid(s , 33 , 3)
    Nord_rest = Mid(s , 23 , 7)
    Ost_rest = Mid(s , 36 , 7)
    '**************Ende Position Auslesen***********************
    '---------------------------------------------------------------
    '****Daten Auslesen und in Grad Minuten u.Sec. umrechnen********
    
    'Daten** Nord-Süd** Grad**Minuten**Auslesen******
    N_grad = Mid(s , 21 , 2)
    N_min = Mid(s , 23 , 2)
    N_ablage = Mid(s , 26 , 3)
    N = Mid(s , 31 , 1)
    
    '***********Status A oder V***Auslesen********
    Av = Mid(s , 19 , 1)
    '**************************************
    '******** OST**West**Auslesen***************
    E_grad = Mid(s , 33 , 3)
    E_min = Mid(s , 36 , 2 )
    E_ablage = Mid(s , 39 , 3)
    O = Mid(s , 44 , 1)
    '****************Rechnen umwandeln in Secunde***********************
    ' drei Stellen hinter dem Punkt in Sec umrechnen
    ' geteilt durch tausend Mal 60  = SEKUNDEN!
    'Fuer Top50 Karten WSG84*********************************************
    
    '********Umrechnen Nord Sued  In Sec**************************
    Ablage = Val(n_ablage)
    Ergebnis = Ablage / T
    Runden = Ergebnis * Time
    N_sec = Round(runden)
    '***************************************
    Ablage = Val(e_ablage)
    Ergebnis = Ablage / T
    Runden = Ergebnis * Time
    E_sec = Round(runden)
    '*****************Ende Rechnen**************************************
    
    
    '*******Auf Display ausgeben****************************************
    
    If K = "$GPRMC" Then
    
    Upperline
    Lcd "" ; Ost ; Chr(223) ; Ost_rest ; Chr(39) ; O ; "     " ; Nord ; Chr(223) ; Nord_rest ; Chr(39) ; N ; "  " ; "STATUS=" ; Av
    
    Lowerline
    'Lcd E_grad ; " " ; E_min ; " " ; E_sec ; " " ; O ; "   " ; N_grad ; " " ; N_min ; "  " ; N_sec ; " " ; N
    Lcd E_grad ; Chr(223) ; E_min ; Chr(39) ; " " ; E_sec ; Chr(34) ; " " ; O ; "   " ; N_grad ; Chr(223)  ; N_min ; Chr(39) ; " " ; N_sec ; Chr(34) ; " " ; N
    
    End If
    Return

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.01.2007
    Ort
    Deutschland [Bayern]
    Alter
    42
    Beiträge
    125
    Zitat Zitat von chr-mt
    ein Datensatz hat auserdem eine reguläre maximale Grösse von 32 Bytes
    Das ist aber zB. ein String mit 63 Zeichen (inklusive CrLf):
    ...
    Die StringVariable sollte also höher dimensioniert werden als 30.
    Ups .. hab mich verschrieben ... nicht 32 sondern 82 Bytes ... so ... sry.!


    JimJim
    XUN

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test