Forum: PC-Programmierung GPS Prüfsumme berechnen ?!


von hhbk (Gast)


Lesenswert?

Servus,

ich habe mal eine Frage kann es leider nirgends finden.

Wie genau berechnet man die GPS Prüfsumme ?
Ich weiss das sie als XOR vom $ bis zum * berechnet wird, aber nicht
genau wie...

ich muss in ANSI C ne funktion schreiben die die Prüsummer berechnet,
sprich mir fehlt nur das was hinterm * steht das muss ich berechnen
weiss nur nicht wie :-(

kann mir das einer mal mit beispiel erklären, oder gibts das irgendwo
schon beschrieben ? wäre super danke

von T.Stütz (Gast)


Lesenswert?

Also eine kurze Suche im Inet per Google
ergibt also folgende genauere definition der Checksumme:

<The optional checksum field consists of a "*" and two hex digits
 representing the exclusive OR of all characters between, but not
 including, the "$" and "*".>

kurz danach hab ich den folgenden Sourcecode gefunden

' Calculates the checksum for a sentence
Public Function GetChecksum(ByVal sentence As String) As String

  ' Loop through all chars to get a checksum
  Dim Character As Char
  Dim Checksum As Integer

  For Each Character In sentence
   Select Case Character
    Case "$"c
     ' Ignore the dollar sign
    Case "*"c
     ' Stop processing before the asterisk
     Exit For
    Case Else
     ' Is this the first value for the checksum?
     If Checksum = 0 Then
      ' Yes. Set the checksum to the value
      Checksum = Convert.ToByte(Character)
     Else
      ' No. XOR the checksum with this character's value
      Checksum = Checksum Xor Convert.ToByte(Character)
     End If
   End Select
  Next
  ' Return the checksum formatted as a two-character hexadecimal
  Return Checksum.ToString("X2")
 End Function

siehe auch:

http://www.codeguru.com/vb/gen/vb_system/win32/article.php/c8079__3/

Hilft dir das ?

Gruss

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
Noch kein Account? Hier anmelden.