GPS nmealib学习笔记 .
from:http://blog.csdn.net/xukai871105/article/details/12834421
0.nmealib简介
1.目录介绍
2.示例代码
- #include <nmea/nmea.h>
- #include <string.h>
- #include <stdio.h>
- int main()
- {
- // 被测试的GPS模块输出数据,仅有GPRMC格式
- char gps_str[] = "$GPRMC,013257.00,A,3129.51829,N,12022.10562,E,0.093,,270813,,,A*7A\r\n";
- nmeaINFO info; // nmea协议解析结果结构体
- nmeaPARSER parser; // nmea协议解析载体
- nmea_zero_INFO(&info); // 填入默认的解析结果
- nmea_parser_init(&parser); // 为解析载体分配内存空间
- // 调用函数完成GPS信息解析,最终结果保留于info数组中
- if( (nmea_parse(&parser, gps_str, (int)strlen(gps_str), &info)) > 0 )
- {
- printf("longitude %.5f\r\n",info.lon);
- printf("latitude %.5f\r\n",info.lat);
- printf("speed %.2f\r\n",info.speed);
- }
- nmea_parser_destroy(&parser); // 释放解析载体的内存空间
- return 0;
- }
#include <nmea/nmea.h>
#include <string.h>
#include <stdio.h>
int main()
{
// 被测试的GPS模块输出数据,仅有GPRMC格式
char gps_str[] = "$GPRMC,013257.00,A,3129.51829,N,12022.10562,E,0.093,,270813,,,A*7A\r\n";
nmeaINFO info; // nmea协议解析结果结构体
nmeaPARSER parser; // nmea协议解析载体
nmea_zero_INFO(&info); // 填入默认的解析结果
nmea_parser_init(&parser); // 为解析载体分配内存空间
// 调用函数完成GPS信息解析,最终结果保留于info数组中
if( (nmea_parse(&parser, gps_str, (int)strlen(gps_str), &info)) > 0 )
{
printf("longitude %.5f\r\n",info.lon);
printf("latitude %.5f\r\n",info.lat);
printf("speed %.2f\r\n",info.speed);
}
nmea_parser_destroy(&parser); // 释放解析载体的内存空间
return 0;
}
- typedef struct _nmeaINFO
- {
- int smask; /**< Mask specifying types of packages from which data have been obtained */
- nmeaTIME utc; /**< UTC of position */
- int sig; /**< GPS quality indicator (0 = Invalid; 1 = Fix; 2 = Differential, 3 = Sensitive) */
- int fix; /**< Operating mode, used for navigation (1 = Fix not available; 2 = 2D; 3 = 3D) */
- double PDOP; /**< Position Dilution Of Precision */
- double HDOP; /**< Horizontal Dilution Of Precision */
- double VDOP; /**< Vertical Dilution Of Precision */
- double lat; /**< Latitude in NDEG - +/-[degree][min].[sec/60] */
- double lon; /**< Longitude in NDEG - +/-[degree][min].[sec/60] */
- double elv; /**< Antenna altitude above/below mean sea level (geoid) in meters */
- double speed; /**< Speed over the ground in kilometers/hour */
- double direction; /**< Track angle in degrees True */
- double declination; /**< Magnetic variation degrees (Easterly var. subtracts from true course) */
- nmeaSATINFO satinfo; /**< Satellites information */
- } nmeaINFO;
typedef struct _nmeaINFO
{
int smask; /**< Mask specifying types of packages from which data have been obtained */
nmeaTIME utc; /**< UTC of position */
int sig; /**< GPS quality indicator (0 = Invalid; 1 = Fix; 2 = Differential, 3 = Sensitive) */
int fix; /**< Operating mode, used for navigation (1 = Fix not available; 2 = 2D; 3 = 3D) */
double PDOP; /**< Position Dilution Of Precision */
double HDOP; /**< Horizontal Dilution Of Precision */
double VDOP; /**< Vertical Dilution Of Precision */
double lat; /**< Latitude in NDEG - +/-[degree][min].[sec/60] */
double lon; /**< Longitude in NDEG - +/-[degree][min].[sec/60] */
double elv; /**< Antenna altitude above/below mean sea level (geoid) in meters */
double speed; /**< Speed over the ground in kilometers/hour */
double direction; /**< Track angle in degrees True */
double declination; /**< Magnetic variation degrees (Easterly var. subtracts from true course) */
nmeaSATINFO satinfo; /**< Satellites information */
} nmeaINFO;
3.若干注意点
3.1 重置解析载体缓冲区
- if(0 == (parser->buffer = malloc(buff_size)))
- nmea_error("Insufficient memory!"); // 此时会发生内存分配错误
- else
- {
- parser->buff_size = buff_size;
- resv = 1;
- }
if(0 == (parser->buffer = malloc(buff_size)))
nmea_error("Insufficient memory!"); // 此时会发生内存分配错误
else
{
parser->buff_size = buff_size;
resv = 1;
}
3.2 注意nmeaINFO结构体大小
4.总结
GPS nmealib学习笔记 .相关推荐
- GPS nmealib学习笔记
GPS nmealib学习笔记 标签: GPSnmealibCSTACKHEAP 2013-10-17 11:12 4274人阅读 评论(7) 收藏 举报 分类: 嵌入式ARM(24) 版权声明: ...
- nmealib linux编译,GPS nmealib学习笔记
0.nmealib简介nmealib是一个基于C语言的用于nmea协议的开源库.虽然nmea体积小巧,但是却具备了不少功能.分析NMEA语句并把结果保存在合适的C语言结构体中.除了解析NMEA语句之外 ...
- c语言 GPS nmealib学习笔记
0.nmealib简介nmealib是一个基于C语言的用于nmea协议的开源库.虽然nmea体积小巧,但是却具备了不少功能.分析NMEA语句并把结果保存在合适的C语言结构体中.除了解析NMEA语句之外 ...
- Arduino模块学习笔记(一)—GPS模块的使用
Arduino模块学习笔记(一)--GSP模块的使用 文章目录 Arduino模块学习笔记(一)--GSP模块的使用 所需组件 一.模块使用介绍 1.GPS模块(在室内时,一般获取不到位置信息) 2. ...
- GTSAM Tutorial学习笔记
GTSAM Tutorial学习笔记 GTSAM Tutorial学习笔记 1. 基本原理 2. Demo代码 3. LIO-SAM中部分代码分析 3.1 预积分因子图 3.2 关键帧因子图 GTSA ...
- Android学习笔记:短信控制手机之“短信开启定位”
2019独角兽企业重金招聘Python工程师标准>>> 首先,我必须说,我是菜鸟.接触Android不就久,在这里记下,第一想让自己有更加深刻的印象,第二也想和大家一起分享.如果出现 ...
- 视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示
经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正. 前三讲学习笔记如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉S ...
- 视觉SLAM十四讲学习笔记-第二讲-初识SLAM
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...
- 英语学习笔记2019-12-06
英语学习笔记2019-12-06 At the beginning of this term, we talked about the talent show which would be carri ...
最新文章
- mlcc激光雷达与相机外参标定初体验
- 深度残差收缩网络:借助注意力机制实现特征的软阈值化
- 彻底理解乐观锁和悲观锁的区别
- 运行 命令 linux,Linux基本命令运行
- html文件设置成mac屏保,Mac怎么设置屏幕保护?如何设置Mac屏幕保护程序?
- java jdk 序列化_JDK 11:Java序列化的终结开始了吗?
- FPGA学无止境(目录篇)
- 会议通知|第3届全国高校大数据教学研讨会
- 软件dfmea_最全最专业解析!详解DFMEA新版六步法~fmea软件
- 知网查重原理以及降重举例
- mysql 索引失效的7种情况
- SpringBoot基础-refresh方法解析
- 搜索引擎和知识图谱那些事
- android 手表解决方案,智能手表解决方案
- 通过Mixamo生成人物动画并导入Unity实现资源可用的方法
- 基于51单片机智能手机锂电池充电器设计
- 教育:构造主义和机能主义
- Apollo 3.5硬件和系统安装指南
- pdf怎么加水印,pdf加水印简单方法
- 网页3D编辑器Stone教程:如何实现路径动画
热门文章
- 电脑麦克风没声音怎么办?3个方法快速解决
- Python — 词汇表(一)
- android开发股票数据接口,股票数据接口-股票数据接口api
- unity技美27——优化项目内美术3D,2D等资源,详解unity打包体的潜规则与案例
- Houdini 导出.ass文件
- Parameter index out of range (1 > number of parameters, which is 0)
- php投影,ppt投影怎么显示备注
- noip模拟赛 斐波那契
- 语音控制小车运动APP(基于百度语音识别)
- 在受控主机上创建文件或目录