Andree-HB
16.02.2006, 23:52
So, meine GPS-Maus funktioniert hervorragend. Und mein erstes Mini-Programm, um die Datenströme auszulesen/auszuwerten funktioniert auch Bestens ->
Uhrzeit und Datum wird aus dem GPMRC-Block eines NMEA Datensatzes gefiltert...jetzt geht`s an das Wandeln von String nach Variable um damit auch zu rechnen :
http://www.piratenabenteuer.de/pictures/gps.jpg
'************************************************* *********
'Compiler : BASCOM-AVR
'Hardware : GPS-Maus an RS232
' LC-Display 16*4
'Chip type : ATMEGA8/MyAVR
'************************************************* *********
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
Config Lcd = 16 * 4
Initlcd
Cursor Off
Cls
'************************************************* *********************
'so sieht ein empfangener Datenblock aus :
'
'$GPRMC,142654.895,A,5305.9338,N,00849.2502,E,0.00 ,260.88,160206,,,A*6F
'$GPRMC,191410,A,4735.5634,N,00739.3538,E,0.0,0.0, 181102,0.4,E,A*19
' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
' | | | | | | | | | |
' | | | | | | | | | Prüfsumme
' | | | | | | | | |
' | | | | | | | | Modus (A,D,E,N,S)
' | | | | | | | |
' | | | | | | | magnetische
' | | | | | | | Deklination 0.4° E
' | | | | | | |
' | | | | | | Datum: 18.11.02
' | | | | | |
' | | | | | wahrer Kurs (ohne Bewegung 0)
' | | | | |
' | | | | Geschwindigkeit über Grund (Knoten)
' | | | |
' | | | 007° 39.3538' östliche Länge
' | | |
' | | 47° 35.5634' nördliche Breite
' | |
' | Empfängerwarnung, A = Daten OK, V = Warnung
' |
' Uhrzeit der Positionsbestimmung: 19:14:10 UTC-Zeit
'************************************************* *********************
Dim A As Byte
Dim Datenstrom As String * 71
Dim Block As String * 6
Dim Stunde As String * 2
Dim Minute As String * 2
Dim Sekunde As String * 2
Dim Tag As String * 2
Dim Monat As String * 2
Dim Jahr As String * 2
Start:
Do
Do
A = Inkey() 'warte auf Zeichen "$"
If A = 36 Then Input Datenstrom 'lese kompletten datenstrom
Block = Mid(datenstrom , 1 , 5) '5 Zeichen nach "$"einlesen
Loop Until Block = "GPRMC" 'frage immer wieder bis Zeichenfolge "GPMRC" kommt, gehe dann weiter
Stunde = Mid(datenstrom , 7 , 2) 'nach 7 Zeichen die folgenden zwei Zeichen
Minute = Mid(datenstrom , 9 , 2)
Sekunde = Mid(datenstrom , 11 , 2)
Tag = Mid(datenstrom , 57 , 2)
Monat = Mid(datenstrom , 59 , 2)
Jahr = Mid(datenstrom , 61 , 2)
Locate 1 , 1
Lcd "Uhrzeit " ; Stunde ; ":" ; Minute ; ":" ; Sekunde
Locate 2 , 1
Lcd "Datum " ; Tag ; "." ; Monat ; "." ; Jahr
Loop
End
Andree-HB
18.02.2006, 17:04
Die Anzeige ist ziemlich konstant...auch bei freier Sicht ändert sich so gut wie gar nix (auf dem Bild liegt die Maus 30cm vom Fenster, das reicht ihr für 4 Satelliten mit sehr gutem Empfang). Aber auch mitten im Zimmer habe ich sehr guten Empfang und die Anzeigewerte ändern sich korrekterweise auch ein bisschen.
Der Datenstrom kommt etwa einmal pro Sekunde, sieht so aus :
$GPGGA,142654.895,5305.9338,N,00849.2502,E,1,04,03 .7,13.1,M,40.8,M,,*55
$GPGSA,A,3,01,14,19,22,,,,,,,,,6.3,3.7,5.1*3B
$GPGSV,2,1,06,1,37,134,44,3,13,161,,14,42,078,38,1 9,48,174,40*7D
$GPGSV,2,2,06,20,30,229,,22,20,057,37,,,,,,,,*73
$GPRMC,142654.895,A,5305.9338,N,00849.2502,E,0.00, 260.88,160206,,,A*6F
$GPVTG,260.88,T,,,0.00,N,0.00,K,A*74
$GPGGA,142655.895,5305.9338,N,00849.2504,E,1,04,03 .7,12.8,M,40.8,M,,*5A
$GPRMC,142655.895,A,5305.9338,N,00849.2504,E,0.00, 260.88,160206,,,A*68
$GPVTG,260.88,T,,,0.00,N,0.00,K,A*74
$GPGGA,142656.895,5305.9338,N,00849.2505,E,1,04,03 .7,12.5,M,40.8,M,,*55
$GPRMC,142656.895,A,5305.9338,N,00849.2505,E,0.00, 260.88,160206,,,A*6A
$GPVTG,260.88,T,,,0.00,N,0.00,K,A*74
$GPGGA,142657.895,5305.9338,N,00849.2507,E,1,04,03 .7,12.3,M,40.8,M,,*50
$GPGSA,A,3,01,14,19,22,,,,,,,,,6.3,3.7,5.1*3B
$GPGSV,2,1,06,1,37,134,44,3,13,161,,14,42,078,38,1 9,48,174,40*7D
$GPGSV,2,2,06,20,30,229,,22,20,057,36,,,,,,,,*72
$GPRMC,142657.895,A,5305.9338,N,00849.2507,E,0.00, 260.88,160206,,,A*69
$GPVTG,260.88,T,,,0.00,N,0.00,K,A*74
$GPGGA,142658.895,5305.9338,N,00849.2506,E,1,04,03 .7,12.1,M,40.8,M,,*5C
$GPRMC,142658.895,A,5305.9338,N,00849.2506,E,0.00, 260.88,160206,,,A*67
$GPVTG,260.88,T,,,0.00,N,0.00,K,A*74
$GPGGA,142659.894,5305.9339,N,00849.2506,E,1,04,03 .7,12.1,M,40.8,M,,*5D
$GPRMC,142659.894,A,5305.9339,N,00849.2506,E,0.00, 260.88,160206,,,A*66
...der für mich erstmal relevante Block ist der "$GPRMC"
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.