怎么用c语言获取gps数据
用c语言编写串口通讯程序,然后一直用串口读取gps模块的数据就可以了,GPS模块会一直把信息打印到串口上,接收后在程序里进行处理,过滤出你想要的信息。
求:C语言写的串口读取的程序,最好是读取GPS数据用的
看看这个项目:
其实GPS的串口程序很简单,一个是打开串口设备,从串口设备读取数据,再一个就是进行字符串处理。
C语言编程:GPS数据处理
这是通过online judge测试的
#includestdio.h
#include stdlib.h
#includestring.h
int check(char *);
void utc(char *);
char bjtime[7];
int main()
{
char a[200];
int f=0;
char *ptr;
do
{
scanf(“%s”,a);
if(strncmp(“$GPRMC”,a,6)==0)
{
ptr=a;
for(int i=0;i2;i++){
ptr=strchr(ptr,’,’);
ptr++;
}
if (ptr[0]==’A’ check(a))
{
utc(a);
f=1;
}
}
}while(strcmp(“END”,a)!=0);
if (f) printf(“%c%c:%c%c:%c%c”,bjtime[0],bjtime[1],bjtime[2],bjtime[3],bjtime[4],bjtime[5]);
return 0;
}
int check(char *s)
{
char *ck,*str;
int i;
char m=s[1];
for(i=2;istrlen(s)-3;i++)
m^=s[i];
int z=(int)m%65536;
printf(“%0x”,z);
ck=s[strlen(s)-2];
int x=strtol(ck,str,16);
if(x==z) return 1;
else return 0;
}
void utc(char * s)
{
char *str1;
char str[7];
str1=s[7];
strncpy(bjtime,str1,6);
int x=strtol(bjtime,str1,10);
x+=80000;
x%=240000;
for(int i=5;i=0;i–){
bjtime[i]=(char)((int)’0’+x%10);
x/=10;
}
}
C语言题看不懂,关于GPS数据处理
你好!GPS的格式,需要分析后,得到数据
你这是要做实物,还是用仿真实现
GPS模块获取的数据转换成经纬度(度分秒的格式),C语言
3559.10468,N,12009.46619,E
N/S(北纬或南纬):北纬35 度59.10468 分;
E/W(东经或西经):东经120 度9.46619 分;
纬度(格式ddmm.mmmm:即dd 度,mm.mmmm 分);
经度(格式dddmm.mmmm:即ddd 度,mm.mmmm 分);
list和字符串操作就不写了吧。
c语言中计算gps坐标转经纬度
就是纯计算公式,一个公式就可以解决。具体逻辑如下。
一般从GPS得到的数据是经纬度。经纬度有多种表示方法。
1.) ddd.ddddd, 度 . 度的十进制小数部分(5位)例如:31.12035º
2.) ddd.mm.mmm,度 . 分 . 分的十进制小数部分(3位)例如 31º10.335′
3.) ddd.mm.ss, 度 . 分 . 秒 例如 31º12’42″
地球上任何一个固定的点都可以用确定的经纬度表示出来。
关于经纬度坐标转换的方法
一、十进制转换成经纬度
把经纬度转换成十进制的方法很简单
如下就可以了
Decimal Degrees = Degrees + minutes/60 + seconds/3600
例:57°55’56.6″ =57+55/60+56.6/3600=57.9323888888888
114°65’24.6″=114+65/60+24.6/3600=结果自己算!
如把经纬度 (longitude,latitude) (205.395583333332,57.9323888888888)
转换据成坐标(Degrees,minutes,seconds)(205°23’44.1″,57°55’56.6″)。
步骤如下:
1, 直接读取”度”:205
2,(205.395583333332-205)*60=23.734999999920 得到”分”:23
3,(23.734999999920-23)*60=44.099999995200 得到”秒”:44.1
采用同样的方法可以得到纬度坐标:57°55’56.6″