2009-08-17 5 views
3

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

   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? Или как я могу получить кодировку для данных, возвращаемых устройством? Я пытаюсь использовать все классы из System.Text.Encoding.xxx.GetString(), чтобы получить строку из прочитанных байтов, но она не возвращает правильные данные - она ​​возвращает данные, аналогичные приведенному выше образцу.

ответ

7

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

+0

Спасибо! Вот и все. Интересно, почему все на устройстве Asus отлично работает, не устанавливая скорость передачи в коде. – GTD

+0

Для меня это было то, что я не установил стоп-бит на 1. Но вы ответили, что мне тоже было предложено проверить это. Благодарю. – wiggily