我制作了一个Android应用程序,它从GPS获取数据并发送它。它由aPC接收,并通过USB发送到AVR套件,后者需要将经度,纬度格式转换为NMEA格式并将其返回USB。消息格式为:
纬度= '23 .353434333'和经度= '45 .34333345'
我需要使用ATmega32转换为NMEA GPS格式的上述消息,但由于我不知道AVR编程,有人可以建议我怎么做或上面的代码?
答案 0 :(得分:1)
您没有使用AVR编程的经验与实现NMEA无关。然而,知道C会有所帮助;)
您的给定表示纬度= '23 .353434333'和经度= '45 .34333345'被称为十进制度(您的示例缺少N / S和E / W指示)
我假设您知道NMEA是协议规范,而不仅仅是坐标格式。 NMEA标准在数据集中使用以下坐标表示法:
XXYY.ZZZZ
这可以直接用度分秒秒格式表示,如下所示:
XX°YY'(0.ZZZZ * 60)“
因此,两者之间的转换是微不足道的,以及从度分秒到十进制度的转换:
十进制度=度+分/ 60 +秒/ 3600
因此,从本质上讲,您只需反向执行给定的转换,即可获得NMEA坐标格式。
NMEA数据集如下所示:
$ GPRMC,162614,A,的 5230.5900,N,01322.3900,E 下,10.0,90.0,131006,1.2,E,A * 13
我用粗体突出显示了坐标信息。实现转换并不是特别的,而实现NMEA协议需要对实现细节进行一些额外的阅读。
答案 1 :(得分:-1)
将NMEA十进制小数转换为度/分钟/秒 第一。将十进制小数转换为十进制: 5144.3855(ddmm.mmmm)= 51 44.3855 = 51 + 44.3855 / 60 = 51.7397583度
然后将小数转换为度,分钟秒: 51积分+ .7397583 * 60 = 44.385498 = 44分钟 .385498 = 23.1秒 结果:51 44'23.1“