我有一个神达P550设备,其中已经包含了GPS。 我尝试使用的SerialPort获得的NMEA语句,通过简单地使用SerialPort.Read()。 数据在一些奇怪的编码返回。 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
我也有2装置(华硕A636N),在ASCII返回NMEA句子和我的代码的伟大工程。
我有什么用神达设备做的就是NMEA句子的ASCII? 或如何我可以得到由设备返回的数据编码? 我尝试使用来自System.Text.Encoding.xxx.GetString()所有类摆脱readed字节的字符串,但它不会返回正确的数据 - 它返回类似于上述采样数据。