2009. április 1., szerda

A GPS Nyelv: NMEA Interface Formátum

Nemrég már írtam pár bevezető gondolatot a NMEA formátumról. Persze azt csak gondolatébresztőnek szántam. Most újra előveszem a témát, mindezt két okból teszem. Tulajdonképpen a GPS adatokat feldolgozó programocska nem tesz mást, mint ilyen NMEA formátumú szövegecskéket dolgoz fel. Pont. Nem egy nagy valami az egész, ezt kell megértenünk. Persze az adat még semmi, azokkal dolgoznunk kell, na ott már kell tüdő. A másik ok az, hogy egy olyan jó összefoglalót találtam a neten erről a témáról, amit muszáj megosztanom veletek. Ferencz Viktória 2006-ban publikált TDK dolgozatában korrektül összefoglalta a legfontosabb ismereteket ezzel kapcsolatosan. Ezer hála neki érte. Ezért én most ide bevágom a lényeget és eméssze meg mindenki maga.
Természetesen nemsokára C#-kódot is fogunk írni. Talán majd ez a kód fog segíteni egy jövőbeli TDK-s hallgatónak. Tudáscsere!
A NMEA egy mozaikszó, amely a National Marine Electronics Association nevéhez fűződik. Ez a szervezet fejlesztette ugyanis azt az interface-t, amely segítségével a használt eszközök egymással, illetve különböző számítógépekkel egységes formátumú üzenetek alapján képesek kommunikálni.
A GPS vevők esetében beállítható paraméterként szerepel, hogy az eszköz az észlelések eredményeit milyen formátumban továbbítsa a számítógép, vagy bármely más adóvevő készülék felé. Az NMEA formátumban továbbított üzenetek teljes egészében tartalmazzák az észlelési adatokat (PVT - Position, Velocity, Time).
Az NMEA üzenetek alapja az, hogy a vevő olyan mondatokban kommunikál, amelyek teljesen sajátságosak és függetlenek egymástól. A mondatok egy része szabványos formátum, minden egyes vevő által ismert, lehetőség van azonban egyedi konfigurációval rendelkező üzenetek definiálására is. Minden mondat elején szerepel 2 karakter, amely az üzenetet továbbító berendezés jellemzője, ez a GPS vevők esetén a "GP" karakter-kombináció.
Az egyedileg meghatározott sorok az eszköz gyártójára vonatkozó információt tartalmaznak, ezek első karaktere "P" és a következő 3 karakter utal az eszközt gyártó cégre (pl. PMGN - Magellan).
Minden egyes mondat kezdő karaktere a '$' és utolsó karaktere az un. CR/LF (Carriage Return/ Line Feed), és a sorok maximális hossza nem haladhatja meg a 80 karaktert a befejező karakter (line terminator) nélkül. Az egy sorban levő különböző üzenetek elválasztására a ’,’ karakter szolgál. Minden mondat végét egy un. ’checksum’ karakter zárja le, amelyet a fogadó egység nem feltétlenül vizsgál, viszont megléte fontos információ az adatok jóságára vonatkozóan.
Az NMEA üzenetek minden serial port esetében az RS232 protokollt használva elérhetőek bármely számítógép számára. Az adattovábbítás sebessége általában 4800 b/s (bit per second rate), de egyes vevők esetében beállítható a 9600 b/s érték is. Az alapérték azt jelenti, hogy a vevő 480 karaktert képes elküldeni egy másodperc alatt, ami tulajdonképpen 6 mondatnak felel meg. A mondatokat felépítő adatok 8 Bitesek, egyezés (parity) nem értelmezett és egyetlen un. ’StopBit’ karakter található bennük.
Az NMEA mondatok felépítése szabványos, minden egyes mondat egy sort jelent és egyedi azonosítóval rendelkezik. A küldött üzenetek függenek a vevő gyártójától, azonban ezek a szabványos üzenetek kiegészítéseként jelentkeznek az egyes típusoknál.
De hogy is néznek ki ezek a mondatok? Ez fog következni. Hamarosan.

0 megjegyzés :

Megjegyzés küldése