Я сделал приложение для Android, которое берет данные с GPS и отправляет их. Он забирается aPC и отправляется через USB в комплект AVR, который должен преобразовать формат долготы и широты в формат NMEA и вернуть его обратно на USB. Формат сообщения:
широта = ’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, Е,10.0,90.0,131006,1.2, Е, А * 13
Я выделил информацию о координатах жирным шрифтом. Реализация преобразования не является чем-то особенным, в то время как реализация протокола NMEA требует дополнительного чтения о деталях реализации.
Других решений пока нет …