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.
Şö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.
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.
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.
Şö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)
$GPGGA,...,...,S,...,W,...,...,...,...,M,...,M,...,...<CR><LF>
Hiç yorum yok:
Yorum Gönder