[英]How to read GPS data from serial port
我正在嘗試從 BU-353S4 USB GPS 讀取來自串行端口的數據。 就可讀的 NMEA 句子而言,我一無所獲。 GPS 與 Raspberry Pi 完美搭配。
這適用於 .NET 控制台應用程序。 web 中到處都有類似的問題,但似乎沒有一個示例有效。
var port = new SerialPort
{
PortName = "COM5",
BaudRate = 4800,
Parity = Parity.None,
DataBits = 8,
StopBits = StopBits.One,
};
port.DataReceived += Port_DataReceived;
private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string line = "";
SerialPort port = (SerialPort)sender;
line = port.ReadExisting();
Console.Write(line);
}
和...
private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort port = (SerialPort)sender;
var count = port.BytesToRead;
var buffer = new byte[count];
port.Read(buffer, 0, count);
var line = Encoding.ASCII.GetString(buffer);
Console.Write(line);
}
無論我嘗試什么,我都會得到類似的結果:
?J?&%%%%%%%%%?? ?%$$$$$$$$$f Qx?++++******?? ? ? #???? ) xm???? =?? ? ??? ??? ]? 噸? D0?? ??? 3 4?? 2\
原來 GPS 發送的是 SiRF 而不是 NMEA。 一旦我按照此 SuperUser 帖子中的步驟將其切換到 NMEA,一切正常!
這個問題與波特率有關。 嘗試將您的值更改為與您的設備兼容的值。
我收到了這個錯誤,這就是我為解決這個問題所做的:
_GPSReceiver = new SerialPort("COM9");
_GPSReceiver.ReceivedBytesThreshold = 1024;
_GPSReceiver.ReadTimeout = 5000;
_GPSReceiver.BaudRate = 4800;
_GPSReceiver.Parity = Parity.None;
_GPSReceiver.StopBits = StopBits.One;
_GPSReceiver.DataBits = 7;
_GPSReceiver.Handshake = Handshake.None;
_GPSReceiver.Encoding = ASCIIEncoding.ASCII;
_GPSReceiver.DataReceived += new SerialDataReceivedEventHandler(GPSReceiver_DataReceived);
_GPSReceiver.Open();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.