我有一台Mio P550设备,其中包含GPS.我尝试使用SerialPort来获取NMEA句子,只需使用SerialPort.Read()即可.数据以一些奇怪的编码返回.GPS应该以ASCII格式返回NMEA句子,但事实并非如此.这是我的阅读代码:
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());
}
Run Code Online (Sandbox Code Playgroud)
以下是我得到的样本值:xæææxfæ`æxæføøøxxxøx
我还有第二个设备(华硕A636N),它返回ASCII的NMEA句子,我的代码效果很好.
我与Mio设备有什么关系来获得ASCII的NMEA句子?或者我如何获取设备返回的数据的编码?我尝试使用System.Text.Encoding.xxx.GetString()中的所有类从readed字节获取字符串,但它不返回正确的数据 - 它返回类似于上面示例的数据.