1 - откуда лишний знак перед строкой ? ты где смотриш вообще ? в терминале ?
2 - согласно протоколу
https://ru.wikipedia.org/wiki/NMEA_0183 надо разделительные символы для строк...
<CR> — байт равен 0x0D.
<LF> — байт равен 0x0A.
...
сам же выше писал... программа GPS видит так:
Кусок лога,отсюда видно что раз в секунду.
18:15:46 $GPTXT,01,01,01,ANTENNA OK*35
18:15:47 $GNGGA,181547.000,4911.6021,N,02650.2441,E,1,10,1.0,377.6,M,0.0,M,,*73
...
А вот из обычного терменала com(ASCII)
<LF>$GPTXT,01,01,01,ANTENNA OK*35 [len=30]
<20190204215356.334 RX>
<LF>$GNGGA,185357.000,4911.6075,N,02650.2356,E,1,07,2.6,358.1,M,0.0,M,,*79 [len=71]
для начала запихнём всё в меню))
для проверки можешь залить тестовую прошивку и посмотреть что выдаёт пульт и что видит терминал.