1

我有一块运行 Linux Ångström 的板子。现在我不想在我的程序中获取 GPS 数据。所以我设置了一个 gpsdeamon,他从调制解调器获取他的 gps 信息。守护进程运行良好,如果我远程登录到 localhost:2947(这是 gpsd 的标准端口),我会从守护进程中获取一堆 json 字符串,如下所示:

{"class":"TPV","tag":"GGA","device":"/dev/ttyUSB2","mode":3,"lat":51.282822633,"lon":11.404333250,"alt": 327.500}

所以 gpsd 似乎设置正确。

但是在我的 C-Programm 中,我无法连接到这个端口,我也不知道为什么。我的代码如下所示:

#include <gps.h>
struct gps_data_t *gpsdata = 0;

int main() {
if(gps_open("localhost", "2947", gpsdata)<0){
        fprintf(stderr,"Could not connect to GPSd\n");
        return(-1);
    }
/* some more stuff */
}

问题是,函数 gps_open() 总是返回 -1。所有库似乎都已正确安装。你有什么想法,我可以尝试使它工作吗?

4

1 回答 1

1

您可以使用 gps_errstr 函数查看错误,如下所示

#include <errno.h>
...

int main()
{
    if(gps_open("localhost", "2947", gpsdata)<0){
        fprintf(stderr,"Could not connect to GPSd (error %s)\n",
                gps_errstr(errno));
        return(-1);
    }
    /* some more stuff */ 
}

但是,问题是gps_open需要一个指向有效(非空gps_data_t结构的指针,您可以通过这种方式声明 gpsdata

struct gps_data_t gpsdata[1];
于 2015-06-17T10:28:28.133 回答