У меня есть устройство 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(), чтобы получить строку из прочитанных байтов, но она не возвращает правильные данные - она возвращает данные, аналогичные приведенному выше образцу.
Спасибо! Вот и все. Интересно, почему все на устройстве Asus отлично работает, не устанавливая скорость передачи в коде. – GTD
Для меня это было то, что я не установил стоп-бит на 1. Но вы ответили, что мне тоже было предложено проверить это. Благодарю. – wiggily