我制作了一个Android应用程序,该应用程序从GPS接收数据并将其发送。它由aPC拾取,然后通过USB发送到AVR套件,该套件需要将经度,纬度格式转换为NMEA格式,然后将其返回给USB。消息格式为:


  latitude = '23 .353434333'和经度= '45 .34333345'


我需要使用ATmega32将以上消息转换为NMEA GPS格式,但是由于我不知道AVR编程,因此有人可以建议我该怎么做或上面的代码吗?

最佳答案

您没有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协议则需要更多有关实施细节的信息。

08-19 19:42