mirror of
https://github.com/dotMorten/NmeaParser.git
synced 2026-04-06 06:53:51 +00:00
Fixed threading issue on nmea data not yet parsed
This commit is contained in:
parent
cb952b24be
commit
1222526371
1 changed files with 13 additions and 6 deletions
|
|
@ -26,6 +26,7 @@ namespace NmeaParser
|
|||
{
|
||||
public abstract class NmeaDevice : IDisposable
|
||||
{
|
||||
private object lockObject = new object();
|
||||
private string message = "";
|
||||
private Stream m_stream;
|
||||
System.Threading.CancellationTokenSource tcs;
|
||||
|
|
@ -88,14 +89,20 @@ namespace NmeaParser
|
|||
private void OnData(byte[] data)
|
||||
{
|
||||
var nmea = System.Text.Encoding.UTF8.GetString(data, 0, data.Length);
|
||||
message += nmea;
|
||||
var lineEnd = message.IndexOf("\n");
|
||||
if (lineEnd > -1)
|
||||
string line = null;
|
||||
lock (lockObject)
|
||||
{
|
||||
string line = message.Substring(0, lineEnd);
|
||||
message = message.Substring(lineEnd).Trim();
|
||||
ProcessMessage(line.Trim());
|
||||
message += nmea;
|
||||
|
||||
var lineEnd = message.IndexOf("\n");
|
||||
if (lineEnd > -1)
|
||||
{
|
||||
line = message.Substring(0, lineEnd).Trim();
|
||||
message = message.Substring(lineEnd).Trim();
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(line))
|
||||
ProcessMessage(line);
|
||||
}
|
||||
|
||||
private void ProcessMessage(string p)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue