无法连接到gpsd

时间:2015-06-11 06:20:44

标签: c linux gps gpsd

我有一块运行LinuxÅngström的电路板。 现在我不想在我的程序中获取GPS数据。所以我建立了一个gpsdeamon,他从调制解调器获取他的gps信息。 deamon效果很好,如果我telnet到localhost:2947(这是gpsd的标准端口),我会从deamon中找到一堆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。所有库似乎都安装正确。 你有什么想法,我可以尝试让它发挥作用吗?

1 个答案:

答案 0 :(得分: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];