1

我想用 libgps 读取我的 GPS 坐标。

这是我的代码:

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

 int main(void){

    struct gps_data_t gps_data;
    int ret = 0;

    ret = gps_open("localhost", "2947", &gps_data);

    gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

    if (gps_waiting (&gps_data, 500)) {


        if (gps_read (&gps_data) == -1) {

            fprintf(stdout, "Error #3: No GPS data available! Retrying ...\n");

        } 
        else {

            fprintf(stdout, "GPS-Data: Latitude: %f, Longitude: %f, Altitude: %.1f, Timestamp: %ld\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.altitude);

        }
    }

    /* When you are done... */
    gps_stream(&gps_data, WATCH_DISABLE, NULL);
    gps_close (&gps_data);

    return 0;
 }

不幸的是,我总是得到这个结果:

GPS-Data:纬度:nan,经度:nan,海拔:nan,时间戳:301989888

所以 gpsd 没有返回任何 GPS 坐标...

但是如果我执行sudo gpscat -s 4800 /dev/ttyACM0

$GPGGA,190238.00,4819.14754,N,01512.57069,E,2,11,0.83,469.6,M,43.1,M,,0000*53

有谁知道可能出了什么问题?

4

1 回答 1

0

使用“CGPS -s”检查您的 GPSD 是否正常运行。如果它是固定的(也就是工作并锁定在你的位置),它应该会给你所有的 gps 数据。

如果它正在运行,请尝试在“if (gps_waiting (&gps_data, 500)) {”上使用更大的延迟。我使用了相同的代码并获得了相同的“nan”结果,直到我增加了 gps_waiting 函数的等待时间。

我通过 UART 使用带有 ublox gps 的 BBB 进行了测试。

于 2018-08-31T14:37:01.530 回答