PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FMS-Telegramm unausgewertet betrachten



placebo85
20.06.2008, 07:42
Hallo zusammen,
ich habe folgendes "Problem" und bis jetzt nichts hierzu im Forum gefunden.
Bei uns im Kreis wird per FMS seit neustem die Position des Fahrzeugs mit übertragen. D.h. jedes neue Fahrzeug meldet sich ca. 1 x pro Minute mit einem GPS-Code bei der Leitstelle. Mir ist klar, dass dieser hexadezimal übertragen wird, aber beim FMS32-Pro zeigt es immer nur eine Koordinate im Meldungsfenster an. Diese entspricht dem Längengrad.
Jetzt weiß ich nicht, ob der Breitengrad schlicht nicht mit übertragen wird oder ob die Software hier in der Bewertung des Telegramms einen Fehler macht weil es z.B. anders formatiert ist.

Gibt es einen Weg das FMS Telegramm einfach so anzugucken wie es reinkommt ohne dass eine Software eine Bewertung (Dekodierung) vornimmt?

Vielen Dank

MeisterM
20.06.2008, 13:22
Hallo zusammen,
ich habe folgendes "Problem" und bis jetzt nichts hierzu im Forum gefunden.
Bei uns im Kreis wird per FMS seit neustem die Position des Fahrzeugs mit übertragen. D.h. jedes neue Fahrzeug meldet sich ca. 1 x pro Minute mit einem GPS-Code bei der Leitstelle. Mir ist klar, dass dieser hexadezimal übertragen wird, aber beim FMS32-Pro zeigt es immer nur eine Koordinate im Meldungsfenster an. Diese entspricht dem Längengrad.
Jetzt weiß ich nicht, ob der Breitengrad schlicht nicht mit übertragen wird oder ob die Software hier in der Bewertung des Telegramms einen Fehler macht weil es z.B. anders formatiert ist.

Gibt es einen Weg das FMS Telegramm einfach so anzugucken wie es reinkommt ohne dass eine Software eine Bewertung (Dekodierung) vornimmt?

Vielen Dank

FMS 32 Pro dekodiert da nichts, es wird also alles so angezeigt wie es auch ausgewertet wird. Es wird wirklich eine Dezeimalzahl mit Komma angezeigt?

Sehr komisch...

placebo85
20.06.2008, 15:07
nein, es steht keine Dezimalzahl da.
Die Fahrzeugkennung ist ganz normal und im Melde-Fenster steht ein Teil der GPS Koordinaten als Hex (Längengrad), der zweite Teil der GPS Koordinaten (Breitengrad) fehlt. Ich denke halt dass diese GPS Nachricht anders formatiert ist als die normalen Textnachrichten und die Software denkt, dass nach der ersten Koordinate der Text-Teil zu Ende ist und deshalb abbricht. Ich würde nun gerne einfach die reine Nachricht angucken, so wie sie reinkommt. Also nicht schon interpretiert, einfach die Zahlen- und Buchstabenfolge :)

Shinzon
20.06.2008, 20:18
Moin ..

Meinst du eine &TR Nachricht ?

Neulich war ich auf der Suche nach dem Format und fand &TR N xxxx E yyyy
wobei dann xxxx und yyyy im Hexadezimalformat Länge und Breite angeben,
also ein umrechnen und durch ne Million oder so zu teilen direkt die Koordinaten
ergeben.

Gruss,
Tim

PS: Hier "spamt" auch das ein oder andere Auto den Kanal mit seiner Position zu,
allerdings per "Status 10" mit Folgetelegramm, nicht per "FMS-Text" .. ist daher
ein wenig schlechter mit dem Auswerten für Software, das eigene FMS-Modem
kann das "natürlich" ;)

placebo85
20.06.2008, 21:11
Also ich habs euch jetzt mal als Screenshot angehängt und die Koordinaten bissl unkenntlich gemacht :D

Die &TR.... Nachricht ist kein Problem, die wird immer als Zielkoordinate fürs Navi mit gesendet. Das "Problem" sind die Koordinaten, die vom Fahrzeug regelmäßig zurück gesendet werden. Ist wie gesagt nur eine Koordinate, wie ich an die andere komme weiß ich nicht :(

MeisterM
21.06.2008, 01:27
Ja genau, das stimmt so, das ist nicht nur ein Teil, sondern die kompletten Daten. Allerdings sendet das DAT855 (danach sieht es aus) das ganze mit einem Offset, also nicht die genauen Koordinaten, sondern glaube nur ein Vielfaches einer bestimmten Koordinate und noch weitere Informationen ob es sich z.B. um eine alte oder aktuelle Koordinate handelt.
Kann morgen mal meinen Algorithmus raussuchen, der die übertragenen Bits in die Dezimal Koordinaten umrechnet.

Shinzon
21.06.2008, 01:52
Das Format wäre in der Tat interessant, bisher habe ich mir nur die Daten aus
dem Folgetelegramm "gezogen" und als "binär" abgetan, bis sich wer findet, der
die DAT855 Doku hat ^^

Gruss,
Tim

MeisterM
20.12.2010, 15:41
Hallo, da ich heute eine E-Mail bekommen habe stelle ich mal hier meine uralt Funktion für die Berechnung ein. Man kann dort noch einige Dinge optimieren:

Function DAT855_CalcPos(Telegramm As String, GPSLat As Single, GPSLng As Single) As Boolean
Dim Zeichen As String
Dim i As Integer
Dim Dezimal As Long

1 If bolFehlerbehandlung Then
2 On Error GoTo DAT855_CalcPos_Error
3 End If

'Überprüfen ob das Telegramm 8 Zeichen lang ist
4 If Len(Trim(Telegramm)) <> 8 Then Exit Function

'Auf Hex-String überprüfen
5 For i = 1 To Len(Telegramm)
6 Zeichen = UCase(Mid(Telegramm, i, 1))

7 If Zeichen <> "0" And Zeichen <> "1" And Zeichen <> "2" And Zeichen <> "3" And Zeichen <> "4" And Zeichen <> "5" And Zeichen <> "6" And Zeichen <> "7" And Zeichen <> "8" And Zeichen <> "9" And Zeichen <> "A" And Zeichen <> "B" And Zeichen <> "C" And Zeichen <> "D" And Zeichen <> "E" And Zeichen <> "F" Then
8 Exit Function
9 End If
10 Next i

Dim BinTmp, BinGes, BinLänge, BinBreite, BinID
Dim DecLänge As Double, DecBreite As Double
Dim OffsetLänge As Double, OffsetBreite As Double
Dim OffsetLänge1 As Double, OffsetBreite1 As Double, OffsetLänge2 As Double, OffsetBreite2 As Double

11 OffsetLänge1 = MySQL_Setting("dat855_offset_lng1", "0")
12 OffsetLänge2 = MySQL_Setting("dat855_offset_lng2", "0")
13 OffsetBreite1 = MySQL_Setting("dat855_offset_lat1", "0")
14 OffsetBreite2 = MySQL_Setting("dat855_offset_lat2", "0")


15 For i = 1 To Len(Telegramm)
16 Zeichen = Mid(Telegramm, i, 1)
17 Dezimal = CLng("&H" & Zeichen)
18 BinTmp = "0000" & Dec2Bin(Dezimal)
19 BinTmp = Right(BinTmp, 4)
20 BinGes = BinGes & BinTmp
21 Next i

22 BinLänge = Left(BinGes, 15)
23 BinBreite = Mid(BinGes, 16, 15)
24 BinID = Right(BinGes, 2)

25 If BinID = "11" Then
'Längengrad berechnen
26 DecLänge = Bin2Dec(BinLänge) * 128

27 If DecLänge < 16384 Then
28 OffsetLänge = OffsetLänge1 * 4194304
29 Else
30 OffsetLänge = OffsetLänge2 * 4194304
31 End If

32 GPSLng = (OffsetLänge + DecLänge) / 1000000

'Breitengrad berechnen
33 DecBreite = Bin2Dec(BinBreite) * 64

34 If DecBreite < 16384 Then
35 OffsetBreite = OffsetBreite1 * 2097152
36 Else
37 OffsetBreite = OffsetBreite2 * 2097152
38 End If
39 GPSLat = (OffsetBreite + DecBreite) / 1000000

40 DAT855_CalcPos = True
41 Else
42 DAT855_CalcPos = False
43 End If

44 On Error GoTo 0
45 Exit Function
DAT855_CalcPos_Error:
46 AddDebug "Fehler beim Berechnen der DAT855 GPS Position!" & Err.Description
End Function

Dtrieb7482
20.12.2010, 22:15
Vielen Danke dafür!!!