читать предложения NMEA от GPS


У меня есть устройство Mio P550, в которое входит GPS. Я пытаюсь использовать последовательный порт, чтобы получить NMEA данные, просто использовать последовательный порт.Читать(). Данные возвращаются в какой-то странной кодировке. GPS должен возвращать предложения NMEA в ASCII, но это не так. вот мой код для чтения:

                dataLength = this.serialPort.Read(buffor, 0, Gps.BUFFOR_LENGTH);
                Debug.WriteLine("data length: " + dataLength);

                if (dataLength > 0)
                {
                    for (int i = 0; i < dataLength; i++)
                    {
                        char c = Convert.ToChar(buffor[i]);

                        if (c == 'r' || c == 'n')
                        {
                            string data = stringBuilder.ToString();
                            Debug.WriteLine("data readed: " + data);

                            if (data.StartsWith("$GPGGA"))
                            {
                                this.OnLocationChanged(data);
                            }

                            stringBuilder.Length = 0;
                        }
                        else
                        {
                            stringBuilder.Append(c);
                        }

                        Debug.WriteLine("readed data: " + stringBuilder.ToString());
                    }

И вот пример значения, которое я получаю взамен: xæææxfæ'æxæføøøxxxøx

У меня также есть второе устройство (Asus A636N), которое возвращает предложения NMEA в ASCII, и мой код отлично работает.

Что я должен делать с Mio устройство, чтобы получить NMEA предложения в ASCII? Или как я могу получить кодировку для данных, возвращаемых устройством? Я стараюсь использовать все классы из системы.Текст.Кодирование.xxx. GetString (), чтобы получить строку из считанных байтов, но он не возвращает правильные данные - он возвращает данные, аналогичные приведенному выше образцу.

2 3

2 ответа:

Вероятно, вам нужно убедиться, что скорость передачи данных для вашего последовательного порта установлена на 4800 БОД, как того требует спецификация NMEA.

Смотрите этот пример кода: https://code.google.com/p/avr-nmea-gps-library/

Он также использует скорость 4800 БОД.