读取GPS NMEA语句(read NMEA sentences from GPS)

2019-08-01 10:22发布

我有一个神达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字节的字符串,但它不会返回正确的数据 - 它返回类似于上述采样数据。

Answer 1:

你可能需要确保波特率为您的串行端口设置为4800波特所要求的NMEA规范。



Answer 2:

看到此代码示例: https://code.google.com/p/avr-nmea-gps-library/

它还采用了4800波特率。



文章来源: read NMEA sentences from GPS
标签: c# gps nmea