5 Mayıs 2017 Cuma

gpsmm Kütüphanesi

Giriş
C++ için gpsd client kütüphanesidir. Şu satırı dahil ederiz.
#include <libgpsmm.h>
Açıklaması şöyle
The gpsd distribution includes a linkable C service library, a C++ wrapper class, and a Python module that developers of gpsd-aware applications can use to encapsulate all communication with gpsd.
C kullanımı için libgps Kütüphanesi yazısına bakınız.

Constructor
Şöyle yaparız. C kütüphanesindeki gps_open() metodu gibidir.
gpsmm client ("localhost", DEFAULT_GPSD_PORT);
stream metodu
Hangi formatta okuma yapmak istediğimizi belirtiriz. C kütüphanesindeki gps_stream() metodu gibidir.
JSON için şöyle yaparız.
if (client.stream(WATCH_ENABLE|WATCH_JSON) == NULL) {
...error...
}
NMEA formatında okumak için şöyle yaparız.
if (gps_rec.stream(WATCH_ENABLE|WATCH_NMEA) == NULL) {
...error...
}
İlk okunan cümlede format belirtilir.
{"class":"VERSION","release":"3.7","rev":"3.7","proto_major":3,"proto_minor":7}
{"class":"WATCH","enable":true,"json":false,"nmea":true,...}
clear_fix metodu
Şöyle yaparız
client.clear_fix ();
waiting metodu
Döngü içinde beklemek için kullanılır. C kütüphanesindeki gps_waiting() metodu gibidir.

Microsaniye cinsinden belirtilir. 5 saniye beklemek için şöyle yaparız.
for (;;) {

  if (!client.waiting(5000000))    continue;
    ...
}       
read metodu
Okumak için kullanılır. C kütüphanesindeki gps_read() metodu gibidir.

Şöyle yaparız. GPS alıcısı 1Hz'de çalışıyorsa saniyede 8 tane kadar cümle vermesi beklenir. Daha fazla cümle veriyorsa alıcının ayarını kullanarak hızı düşürmek gerekebilir.
struct gps_data_t* pData;

if ((pData = client.read()) == NULL) {
...eerror...
} 
data metodu
read() metodu ile beraber kullanılır. Şöyle yaparız.
const char* buffer = NULL;

struct gps_data_t* pData;

if ((pData = client.read()) == NULL) {
...error...
} 
else {
  const char* buffer = gps_rec.data ();
}
1. JSON formatını istemiş isek
(pData->set & TIME_SET) ise pData->fix.time alanı doludur.
(pData->set & LATLONG_SET) ise pData->fix.latitude ve  pData->fix.longitude  alanları doludur.
(pData->set & ALTITUDE_SET) ise pData->fix.altitude alanı doludur.
(pData->set & SPEED_SET) ise pData->fix.speed alanı doludur. (MPS)
(pData->set & TRACK_SET) ise pData->fix.track alanı doludur. (Course)

2. NMEA formatını istemiş isek
Okunan veri şöyledir.


$GPGGA,...,...,S,...,W,...,...,...,...,M,...,M,...,...<CR><LF>




Hiç yorum yok:

Yorum Gönder