![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
![]() ' =========================================================================== ' Für "AZDelivery NEO-6M GPS-Modul": Einfacher NMEA-Parser ' In OCBASIC 1.11a für Open-Maxi von Dietmar Harlos am 12. Juni 2020 ' =========================================================================== ' Das "AZDelivery NEO-6M GPS-Modul" kann bei Amazon für zur Zeit 8,49 EUR und ' kostenlosem Versand bestellt werden: ' https://www.amazon.de/dp/B01N38EMBF ' Das GPS-Modul wird mit 5 Volt Betriebsspannung betrieben und TXD des Moduls ' muß mit RXD2 der Open-Maxi verbunden werden. RXD2 liegt an PORT[34]. Das ' Modul zieht circa 80 mA Strom. ' Das NMEA-Protokoll sieht folgendermaßen aus: ' $GPRMC,011142.00,A,5208.63591,N,00830.04090,E,3.392,285.71,130620,,,A*6C ' Die Uhrzeit wird in Weltzeit (UTC) angegeben. MESZ ist UTC plus 2 Stunden. ' An dieser Stelle möchte ich mich bei Norbert Klein und bei Dirk vom L-Team ' für ihre Unterstützung bedanken. ' --- Definitionen ---------------------------------------------------------- INCLUDE "omax.def" DIM a,b,c BYTE DIM w WORD DIM uhrzeitstunde BYTE DIM uhrzeitminute BYTE DIM uhrzeitsekunde BYTE DIM datumtag BYTE DIM datummonat BYTE DIM datumjahr BYTE ' --- Hauptprogramm --------------------------------------------------------- initSCI1 'Zweite Serielle Schnittstelle initialisieren b=1 WHILE TRUE PRINT "Warte auf $GPRMC" REPEAT w=-1 REPEAT c=GETsci1 IF b THEN PUT c ADD w,1 UNTIL c<>LOOKTABBYTE(str_GPRMC,w) UNTIL w=6 c=GETsci1 IF c=ASC(",") THEN 'unvollständige Daten PRINT "Abbruch 1" GOTO abbruch END IF uhrzeitstunde=(c-48)*10+(GETsci1-48) uhrzeitminute=(GETsci1-48)*10+(GETsci1-48) uhrzeitsekunde=(GETsci1-48)*10+(GETsci1-48) FOR a=1 TO 8 '8 durch Kommata terminierte Bereiche überspringen REPEAT UNTIL GETsci1=ASC(",") NEXT a c=GETsci1 IF c=ASC(",") THEN 'unvollständige Daten PRINT "Abbruch 2" GOTO abbruch END IF datumtag=(c-48)*10+(GETsci1-48) datummonat=(GETsci1-48)*10+(GETsci1-48) datumjahr=(GETsci1-48)*10+(GETsci1-48) PRINT "Das GPS-Modul lieferte:" PRINT uhrzeitstunde":"uhrzeitminute":"uhrzeitsekunde PRINT datumtag"."datummonat"."datumjahr b=0 #abbruch WEND End2Host=ON END ' --- Tabellen -------------------------------------------------------------- TABLE str_GPRMC BYTE "$GPRMC",0 END TABLE ' --- INCLUDE-Dateien ------------------------------------------------------- INCLUDE "OMAXSCI1.PRO" 'aus "Zweite Serielle Schnittstelle auf der Open-Maxi" INCLUDE "OM_FW.PRO" 'Firmware-Routinen ' --- Programmende --------------------------------------------------------- Passender Link: Infosite zu den OM-Mikrocontrollern Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |