2015-06-11 113 views
0

我有一塊運行LinuxÅngström的主板。 現在我不想在我的程序中獲取GPS數據。所以我建立了一個從調制解調器獲取gps信息的gpsdeamon。 該守護進程工作得很好,如果我telnet到本地主機:2947(這是標準端口GPSD)1 reveive一堆JSON串從守護進程,像這樣:連接到gpsd時出現故障

{「類」:「TPV」 「標籤」: 「GGA」, 「設備」: 「的/ dev/ttyUSB2」, 「模式」:3 「LAT」:51.282822633, 「LON 」:11.404333250,「 ALT」:327.500}

所以gpsd似乎設置正確。

但在我的C程序中,我無法連接到此端口,我不知道爲什麼。我的代碼如下所示:

#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。所有庫似乎都已正確安裝。 你有什麼想法,我可以嘗試使它工作?

+0

WATCH = { 「使能」:真正的 「JSON」:真正}? – Nodak

+0

這就是我輸入爲telnet命令,獲取啓用JSON。 但它並沒有幫助讓我的程序運行 – Trikolix

+0

它必須被髮送到gpsd,否則gpsd不會通過套接字返回任何東西 – Nodak

回答

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];