内容要求:

NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。

NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。

NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有 G P G G A 、 GPGGA、 GPGGA、GPGSA、 G P G S V 、 GPGSV、 GPGSV、GPRMC、 G P V T G 、 GPVTG、 GPVTG、GPGLL等。

其中$GPRMC语句的格式如下:

$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50

这里整条语句是一个文本行,行中以逗号“,”隔开各个字段,每个字段的大小(长度)不一,这里的示例只是一种可能,并不能认为字段的大小就如上述例句一样。

字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息

字段1:UTC时间,hhmmss.sss格式

字段2:状态,A=定位,V=未定位

字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段4:纬度N(北纬)或S(南纬)

字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段6:经度E(东经)或W(西经)

字段7:速度,节,Knots

字段8:方位角,度

字段9:UTC日期,DDMMYY格式

字段10:磁偏角,(000 - 180)度(前导位数不足则补0)

字段11:磁偏角方向,E=东W=西

字段16:校验值

这里,“”为校验和识别符,其后面的两位数为校验和,代表了“$”和“”之间所有字符(不包括这两个字符)的异或值的十六进制值。上面这条例句的校验和是十六进制的50,也就是十进制的80。

提示:运算符的作用是异或。将$和*之间所有的字符做运算(第一个字符和第二个字符异或,结果再和第三个字符异或,依此类推)之后的值对65536取余后的结果,应该和*后面的两个十六进制数字的值相等,否则的话说明这条语句在传输中发生了错误。注意这个十六进制值中是会出现A-F的大写字母的。另外,如果你需要的话,可以用Integer.parseInt(s)从String变量s中得到其所表达的整数数字;而Integer.parseInt(s, 16)从String变量s中得到其所表达的十六进制数字

现在,你的程序要读入一系列GPS输出,其中包含$GPRMC,也包含其他语句。在数据的最后,有一行单独的

END

表示数据的结束。

你的程序要从中找出 G P R M C 语 句 , 计 算 校 验 和 , 找 出 其 中 校 验 正 确 , 并 且 字 段 2 表 示 已 定 位 的 语 句 , 从 中 计 算 出 时 间 , 换 算 成 北 京 时 间 。 一 次 数 据 中 会 包 含 多 条 GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条 GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条GPRMC语句,以最后一条语句得到的北京时间作为结果输出。

你的程序一定会读到一条有效的$GPRMC语句。

输入格式:

多条GPS语句,每条均以回车换行结束。最后一行是END三个大写字母。

输出格式:

6位数时间,表达为:

hh:mm:ss

其中,hh是两位数的小时,不足两位时前面补0;mm是两位数的分钟,不足两位时前面补0;ss是两位数的秒,不足两位时前面补0。

输入样例:

$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50

END

输出样例:

10:48:13

代码如下

package gps;import java.util.*;public class GPS {public static void main(String[] args) {int hour = 0, minute=0, second=0;char time[] = new char[25];//储存时间Scanner reader = new Scanner(System.in);while (true) {String s = reader.nextLine();if (s.equals("END"))break;int comma = 0;  // 逗号if (s.indexOf("$GPRMC") == 0 && s.charAt(18) == 'A') {int i = 3;int buf = s.charAt(1) ^ s.charAt(2);//异或while (s.charAt(i) != '*') {buf = buf ^ s.charAt(i);i++;}buf%=65536;i++;//十六进制转换↓int n1, n2, n;if (s.charAt(i) >= 'A' && s.charAt(i) <= 'F') {n1 = 10 + (s.charAt(i) - 'A');} elsen1 = s.charAt(i) - '0';if (s.charAt(i + 1) >= 'A' && s.charAt(i + 1) <= 'F') {n2 = 10 + (s.charAt(i + 1) - 'A');} elsen2 = s.charAt(i + 1) - '0';n = n1 * 16 + n2;//十六进制转换↑if (buf != n) //验证continue;for (int j = 0; j < s.length(); j++) {if (s.charAt(j) == ',')++comma;if (comma == 0) {int t = j + 1;for (int j2 = 0; j2 < 6; j2++) {time[j2] = s.charAt(t + 1);t++;}} // 拿到时间}hour = ((time[0] - '0') * 10 + time[1] - '0' + 8) % 24;minute = 10 * (time[2] - '0') + time[3] - '0';second = 10 * (time[4] - '0') + time[5] - '0';//改变时间}}reader.close();System.out.printf("%02d:%02d:%02d", hour, minute, second);}
}

GPS数据处理 JAVA实现相关推荐

  1. 第6周 使用对象 1 单词长度(5分) 2 GPS数据处理(5分)

    第6周 使用对象 By yangbo 2021/04/18 6.1 字符类型 字符也是Java中基础的数据类型之一,Java采用Unicode16表达字符,在所有的机器上,不管CPU.操作系统和本地语 ...

  2. 滴滴驾驶行为开放数据集:GPS数据处理

    滴滴驾驶行为开放数据集 重要提示 1.数据集介绍 1.1 驾驶行为基础信息:driver_accident_base_data 1.2 GPS&IMU数据 1.3 数据申请 2. GPS数据处 ...

  3. python gps数据处理_GPS数据处理简述(上)

    前前言最近在上海出差,有对数据挖掘和机器学习的实践感兴趣,想要面基的小伙伴可以联系我. 联系方式在 Resume 里面,也可以看一下我的介绍,到时候咱们可以面基面的更有针对性. 困死了,实在写不下去了 ...

  4. c语言程序设计 cap 翁恺,GPS数据处理 翁恺老师C语言程序设计CAP第10章编程题

    NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Elect ...

  5. 单词长度和GPS数据处理——程序设计入门C语言

    1.单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...

  6. 中海达数据怎么转rinex_中海达GPS数据处理软件包使用手册-(36页)-原创力文档...

    Word Word 资料 HDS2003 GPS数据处理软件包使用手册 HDS2003 GPS数据处理软件包使用手册 9- 9- PAGE # 第九章项目管理 HDS2003数据处理软件是面向项目进行 ...

  7. GPS数据处理_C语言

    题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...

  8. MOOC 浙江大学 翁恺 程序设计入门C GPS数据处理

    GPS数据处理 题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The Nationa ...

  9. 编程题 gps数据处理c语言,第八周指针与字符串编程练习/课堂作业 单词长度+GPS数据处理《程序设计入门——C语言》第七期 浙江大学 翁恺...

    1.单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...

最新文章

  1. 最大连续子序列和-动态规划
  2. VTK:网格之DeformPointSet
  3. 设计模式五: 原型模式(Prototype)
  4. linux curl 多线程,CURL多线程不执行一直在请求
  5. 数据结构--队列Queue--打印杨辉三角
  6. python3安装json库-python库json快速入门
  7. echarts 折线图数据太多会导致卡顿_重新定义数据图表,还有比这个更厉害的吗?...
  8. document.body.scrollTop值为0的解决方法[转]
  9. php生成gif动态图片_PHP绘制GIF动态图片
  10. 简单的多线程操作示例
  11. leetcode刷题日记-两数之和系列
  12. nodejs实战mysql_node.js实战:手把手教你使用mysql
  13. 关于期权的若干硬知识,知道这些就不那么担心了
  14. 桌面超简单小代码 bat形式
  15. 智慧电力信息化系统建设整体方案
  16. 中标麒麟操作系统离线安装nginx
  17. ActivityManager 管理Activity
  18. 小程序轮播图swiper,自定义的指示点
  19. Java jdk的下载与安装
  20. php网站挂马,网页挂马详细教程

热门文章

  1. 沉浸式互动投影的原理是什么?
  2. 双11数据曝光,哪个省的情侣最爱买情趣内衣?
  3. 怎么在打开查看的CAD图纸上插入OLE对象?
  4. Unauthorized
  5. 《蜗居》里唯一的真男人只有宋思明
  6. 运行Scrapy crawl出错
  7. 推荐一款超实用的免费照片编辑软件给大家!
  8. java invoke 返回类型_解析Java反射 - invoke方法
  9. 最新版iOS及APP Store上架
  10. 原道N70双擎EZ系列刷机包