完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
串口连的下边PTC15,PTC15
GPS gpsAda(PTC15, PTC14, 9600); 模块靓照 2.GPGGA语句解析GPGGA,GPS固定数据输出语句($GPGGA),这是一帧GPS定位的主要数据,也是使用最广的数据。 $GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符和换行符),分别用14个逗号进行分隔。该数据帧的结构及各字段释义如下: $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx |
|
相关推荐
|
|
楼主知不知道怎么判断串口接收GPS模块的数据内容啊??我从串口调试助手接收的数据字节数总是比实际显示的多几个字节,写程序时搞得我不知道该怎么判断接收的字符串到底是什么
|
|
|
|
|
|
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss; <2> 纬度,格式为ddmm.mmmm(第一位是零也将传送); <3> 纬度半球,N或S(北纬或南纬) <4> 经度,格式为dddmm.mmmm(第一位零也将传送); <5> 经度半球,E或W(东经或西经) <6> GPS状态, 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS查分 <7> 使用卫星数量,从00到12(第一个零也将传送) <8> 水平精度因子,0.5到99.9 <9> 天线离海平面的高度,-9999.9到9999.9米 M 指单位米 <10> 大地水准面高度,-9999.9到9999.9米 M 指单位米 <11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空 <12> 差分参考基站标号,从0000到1023(首位0也将传送)。 语句结束标志符 xx 从$开始到*之间的所有ASCII码的异或校验和 回车 换行 |
|
|
|
|
|
3.GPS库
部分代码 主程序;main.cpp /* Example showing how to hook up to different GPS modules (GlobalSat neo-6m)*/ #include "mbed.h" #include "GPS.h" //create u*** serial Serial pc(USBTX, USBRX); //creat gps serial baud is 9600 GPS gpsAda(PTC15, PTC14, 9600); int main() { while (1) { if(gpsAda.sample()){ pc.printf("%ft%ct%ft%ct%ft%ft%fnr",gpsAda.longitude, gpsAda.ns,gpsAda.latitude,gpsAda.ew, gpsAda.alt, gpsAda.geoid, gpsAda.time); //print beijing time pc.printf("%d:%d:%d",gpsAda.hour,gpsAda.minute,gpsAda.seconed); } } } |
|
|
|
|
|
GPS库的sample()方法 int GPS::sample() { int lock; while(1) { //调用函数读取一行数据 getline(); //用sscanf()检查是不是GPGGA数据 // Check if it is a GPGGA msg (matches both locked and non-locked msg) if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f,%c,%f", &time, &latitude, &ns, &longitude, &ew, &lock, &sats, &hdop, &alt, &unit, &geoid) >= 1) { //看看有没有找到卫星 if(!lock) { time = 0.0; longitude = 0.0; latitude = 0.0; sats = 0; hdop = 0.0; alt = 0.0; geoid = 0.0; return 0; } else { //GPGGA format according http://aprs.gids.nl/nmea/#gga // time (float), lat (f), (N/S) (c), long (f), (E/W) (c), fix (d), sats (d), // hdop (float), altitude (float), M, geoid (float), M, , , //GPGGA,092010.000,5210.9546,N,00008.8913,E,1,07,1.3,9.7,M,47.0,M,,0000*5D //转换为北京时间,原来的是UTC时间,utc+8就是北京时间,%取余运算 //format utc time to beijing time,add 8 time zone time = time + 80000.00f; hour = int(time) / 10000; minute = (int(time) % 10000) / 100; seconed = int(time) % 100; return 1; } } } } |
|
|
|
|
|
串口输出结果
1 2 3 4 5 6 7 8 9 10 11 12 15311.202148 N 3235.849365 E 52.099998 -9.000000 162005.000000 16:20:5 15311.202148 N 3235.849121 E 51.500000 -9.000000 162006.000000 16:20:6 15311.202148 N 3235.849121 E 50.299999 -9.000000 162007.000000 16:20:7 15311.202148 N 3235.848877 E 49.200001 -9.000000 162008.000000 16:20:8 15311.202148 N 3235.848633 E 48.599998 -9.000000 162009.000000 16:20:9 15311.203125 N 3235.848633 E 47.900002 -9.000000 162010.000000 16:20:10 |
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
492 浏览 0 评论
飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点
755 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
848 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
814 浏览 0 评论
1056 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11709 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 01:09 , Processed in 0.513394 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号