C GPS代码未读取纬度数据
我正试图写一段代码,返回带有GPS天线的盒子上的纬度,但是我似乎不知道如何取回这些数据。遥控箱正在运行gpsd,我可以看到正在使用gpspipe从GPS天线检索数据 以下是我为将GPS数据发送到本地机器所做的工作:C GPS代码未读取纬度数据,c,gps,gpsd,C,Gps,Gpsd,我正试图写一段代码,返回带有GPS天线的盒子上的纬度,但是我似乎不知道如何取回这些数据。遥控箱正在运行gpsd,我可以看到正在使用gpspipe从GPS天线检索数据 以下是我为将GPS数据发送到本地机器所做的工作: ssh-l用户x.x.x.x-l 2948:127.0.0.1:2947 gpsd-N-N”gpsd://localhost:2948“ 接下来,为了验证我是否将NMEA数据取回,我运行了gpspipe,并且可以看到数据流 我编写了以下C代码: #include <unistd
ssh-l用户x.x.x.x-l 2948:127.0.0.1:2947
gpsd-N-N”gpsd://localhost:2948“
#include <unistd.h>
#include <math.h>
#include <gps.h>
#define DEFAULT_HOST "localhost"
#define DEFAULT_PORT "2947"
typedef int GpsErrorCode_t;
static struct gps_data_t gpsdata;
static void process(struct gps_data_t *gps_data) {
printf("%d %d %f %f\n", gps_data->status, gps_data->fix.mode, gps_data->fix.latitude, gps_data->fix.longitude);
}
GpsErrorCode_t getLatitude(double* lat) {
GpsErrorCode_t err = gps_open(DEFAULT_HOST, DEFAULT_PORT, &gpsdata);
if (err != 0) {
return err;
}
gps_stream(&gpsdata, WATCH_ENABLE | WATCH_RAW, NULL);
//gps_mainloop(&gpsdata, 5000000, process);
int retries = 10;
int rc;
while (1) {
//retries--;
usleep(50000);
if (gps_waiting(&gpsdata, 500)) {
if ((err = gps_read(&gpsdata)) == -1) {
printf("ERROR: occured reading gps data. code: %d, reason: %s\n", err, gps_errstr(err));
break;
} else {
if (gpsdata.set & PACKET_SET) {
printf("gps_read return code: %d\n", err);
printf("%d %d %f %f\n", gpsdata.status, gpsdata.fix.mode, gpsdata.fix.latitude, gpsdata.fix.longitude);
}
}
} else {
printf("ERROR: no data waiting\n");
break;
}
}
gps_stream(&gpsdata, WATCH_DISABLE, NULL);
gps_close(&gpsdata);
return err;
}
int main() {
double lat = 0;
int err = 0;
err = getLatitude(&lat);
printf("Error code: %d\n", err);
return 0;
}
等等
我的问题是:我的代码正确吗?为什么我不能检索任何修复数据?我的设置正确吗
如果您需要更多信息,请随时询问。谢谢。我查看了第70ff行,发现模式0基本上告诉您还没有更新
along告诉您状态0表示您没有修复程序
我还没有仔细检查您的代码,但再等几分钟似乎是值得的。我看了一下,在第70ff行中发现,模式0基本上告诉您还没有更新
along告诉您状态0表示您没有修复程序
我还没有仔细检查您的代码,但再等几分钟似乎是值得的。将其中一个标志从
WATCH_RAW
更改为WATCH_JSON
,似乎没有任何其他更改。我不知道为什么尝试读取原始数据(或者我用WATCH\u NMEA
尝试的NMEA)一开始就不起作用。。。如果您知道的话,请随时发表评论。将其中一个标志从WATCH\u RAW
更改为WATCH\u JSON
,这样做似乎没有任何其他更改。我不知道为什么尝试读取原始数据(或者我用WATCH\u NMEA
尝试的NMEA)一开始就不起作用。。。如果您知道的话,请随时发表评论。与问题无关,但不要调用您自己的类型something\u t
——后缀是为POSIX中的实现保留的。\u t
后缀不会编译发布的代码!在许多其他事情中,它缺少以下语句:\include
forprintf()
,等等您可以发布gps.h
的内容吗?当显示错误消息时,它应该输出到stderr
,而不是stdout
,因此这一行:printf(“错误:读取gps数据时发生。代码:%d,原因:%s\n”,呃,gps_errstr(err))代码>应为:fprintf(标准错误,“错误:读取gps数据时发生。代码:%d,原因:%s\n”,错误,gps_errstr(错误));。类似的注意事项也适用于printf(“错误:无数据等待\n”)`与问题无关,但不要调用您自己的类型something\u t
——后缀是为POSIX中的实现保留的。发布的代码不会编译!在许多其他事情中,它缺少以下语句:\include
forprintf()
,等等您可以发布gps.h
的内容吗?当显示错误消息时,它应该输出到stderr
,而不是stdout
,因此这一行:printf(“错误:读取gps数据时发生。代码:%d,原因:%s\n”,呃,gps_errstr(err))代码>应为:fprintf(标准错误,“错误:读取gps数据时发生。代码:%d,原因:%s\n”,错误,gps_errstr(错误));。类似的注意事项也适用于printf(“错误:无数据等待\n”)`
gps_read return code: 92
0 0 nan nan
gps_read return code: 152
0 0 nan nan
gps_read return code: 125
0 0 nan nan
gps_read return code: 67
0 0 nan nan
gps_read return code: 34
0 0 nan nan
gps_read return code: 79
0 0 nan nan
gps_read return code: 65
0 0 nan nan
gps_read return code: 55
0 0 nan nan
gps_read return code: 51
0 0 nan nan
gps_read return code: 41
0 0 nan nan
gps_read return code: 37
0 0 nan nan
gps_read return code: 67
0 0 nan nan
gps_read return code: 34
0 0 nan nan
gps_read return code: 79
0 0 nan nan
gps_read return code: 65
0 0 nan nan