Даже можно ничего не настраивать, главное чтоб скорость совпадала. Принимаем строку, признак конца <LF>. Строку копируем в буфер парсера. Взводим флаг наличия текста в буфере парсера. Проверяем заголовок, если не $GPRMC , игнор, в противном случае роскладываем данные ориентируясь по запятым. Всё. Да, нужно наличие двух буферов.
Вариант второй. Кольцевой буфер, принимаем данные, признак опять же <LF>, но проверка и разбор данных уже своими функциями, а не стандартными текстовыми.
Хотите универсальности, не уповайте на количество знаков между запятыми, к примеру в одних модулях может коордната быть 4250.55897 а в других 4250.5589. Ну и с курсом, высотой скоростью, те же яйца. В общем задача на один вечер.
Если данные берутся с разных NMEA, нужно также учитывать что в разных модулей их последовательность может быть разной. И чтоб не получились данные от разных "точек" это тоже нужно учитывать.
Попадаются модули которые к примеру вместо $GPRMC могут слать $GNRMC, в одной партии так, в другой этак. Попадаются модули с разными начальными настройками под заказчика (скорость uart к примеру).
|