gpsd-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gpsd-dev] Example code for libgps using shared memory


From: David Huichen Dai
Subject: [gpsd-dev] Example code for libgps using shared memory
Date: Wed, 8 Nov 2017 21:12:46 +0800

Hi all,

I have gpsd and libgps installed on Ubuntu 14.04.
I am trying to get the coordinates via the shared memory method, because local loop-back traffic is prohibited on my computer, and the socket-based method cannot work.
Below is my code. However, I am unable to obtain the coordinates. How do I achieve this?

Thank you!

#include <gps.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>

int main() {
int rc;
struct timeval tv;

struct gps_data_t gps_data;
if ((rc = gps_open(
​​GPSD_SHARED_MEMORY
,
​0
, &gps_data)) == -1) { printf("code: %d, reason: %s\n", rc, gps_errstr(rc)); return EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL); while (1) { /* wait for 2 seconds to receive data */ if (gps_waiting (&gps_data, 2000000)) { /* read data */ if ((rc = gps_read(&gps_data)) == -1) { printf("error occured reading gps data. code: %d, reason: %s\n", rc, gps_errstr(rc)); } else { /* Display data from the GPS receiver. */ if ((gps_data.status == STATUS_FIX) && (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) && !isnan(gps_data.fix.latitude) && !isnan(gps_data.fix.longitude)) { //gettimeofday(&tv, NULL); EDIT: tv.tv_sec isn't actually the timestamp! printf("latitude: %f, longitude: %f, speed: %f, timestamp: %ld\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time); //EDIT: Replaced tv.tv_sec with gps_data.fix.time } else { printf("no GPS data available\n"); } } } else printf("waiting failed.\n"); } /* When you are done... */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close (&gps_data); return EXIT_SUCCESS; 
​}​
} 


Best regards,
David

--
==================================================
David Huichen Dai, PhD
Research assistant
Lab of Broadband Network Switching Technology and Communication
Dept. of Computer Science and Technology
Tsinghua University, Beijing, P.R. China, 100084
Tel: 86-010-6277-3441
Email: address@hidden; address@hidden
==================================================


reply via email to

[Prev in Thread] Current Thread [Next in Thread]