GPS是英文Global Positioning System(全球定位系统)的简称。GPS起始于1958年美国军方的一个项目,1964年投入使用。利用GPS定位卫星,在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统,简称GPS。GPS是由美国国防部研制建立的一种具有全方位、全天候、全时段、高精度的卫星导航系统,能为全球用户提供低成本、高精度的三维位置、速度和精确定时等导航信息,是卫星通信技术在导航领域的应用典范,它极大地提高了地球社会的信息化水平,有力地推动了数字经济的发展。
NMEA-0183协议
NMEA是National Marine Electronics Association(美国国家海事电子协会)的缩写。NMEA-0183协议是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
开发板平台: FL2440
Linux内核版本: linux-3.0
开发模块: FIT-GPS-SF2820
analysis.c GPS数据解析函数:
1 /*********************************************************************************
2 * Copyright: (C) 2016 huangjiaming<421380303@qq.com>
3 * All rights reserved.
4 *
5 * Filename: analyse_gps.c
6 * Description: This file
7 *
8 * Version: 1.0.0(2016年04月02日)
9 * Author: huangjiaming <421380303@qq.com>
10 * ChangeLog: 1, Release initial version on "2016年04月02日 10时43分34秒"
11 *
12 ********************************************************************************/
13
14 #include <stdio.h>
15 #include <string.h>
16 #include <stdlib.h>
17 #include <sys/types.h>
18 #include <errno.h>
19 #include <sys/stat.h>
20 #include <fcntl.h>
21
22 #include <gps.h>
23
24 //从GPS数据包中抽取出GPRMC最小定位信息
25 int gps_analysis(char *buff,GPRMC *gps_date)
26 {
27 char *ptr=NULL;
28
29 if(gps_date==NULL)
30 return -1;
31
32 if(strlen(buff)<10)
33 return -1;
34
35 if(NULL==(ptr=strstr(buff,"$GPRMC")))
36 return -1;
37
38 sscanf(ptr,"$GPRMC,%d.000,%c,%f,N,%f,E,%f,%f,%d,,,%c*",&(gps_date->time),&(gps_date->pos_state),&(gps_date->latitude),&(gps_date->longitude),
&(gps_date->speed),&(gps_date->direction),&(gps_date->date),&(gps_date->mode));
39 return 0;
40 }
41
42 //解析GPRMC最小定位信息,并打印到屏幕上
43 int print_gps(GPRMC *gps_date)
44 {
45 printf(" \n");
46 printf(" \n");
47 printf("================================================================\n");
48 printf("== Global GPS positioning and navigation module ==\n");
49 printf("== Developer:huangjiaming ==\n");
50 printf("== Email:421380303@qq.com ==\n");
51 printf("== Development platform:fl2440 ==\n");
52 printf("== GPSmodel:FIT-GPS_SF2820(replace ET-312) ==\n");
53 printf("================================================================\n");
54 printf(" \n");
55 printf