46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using NmeaParser;
|
|
|
|
namespace skyscraper5.NmeaSharpWrapper
|
|
{
|
|
internal class GpsdClient : NmeaSharpWrapper
|
|
{
|
|
public GpsdClient(string hostname, ushort port)
|
|
{
|
|
this.hostname = hostname;
|
|
this.port = port;
|
|
}
|
|
|
|
private string hostname;
|
|
private ushort port;
|
|
protected override void ProcessorThread()
|
|
{
|
|
TcpClient tc = new TcpClient();
|
|
tc.Connect(hostname, port);
|
|
NetworkStream networkStream = tc.GetStream();
|
|
StreamWriter streamWriter = new StreamWriter(networkStream);
|
|
streamWriter.WriteLine("?WATCH={\"enable\":true,\"nmea\":true}");
|
|
streamWriter.Flush();
|
|
|
|
StreamDevice streamDevice = new StreamDevice(networkStream);
|
|
streamDevice.MessageReceived += HandleNmeaMessage;
|
|
streamDevice.OpenAsync().Wait();
|
|
CancelRequest = false;
|
|
while (!CancelRequest)
|
|
{
|
|
Thread.Sleep(1000);
|
|
}
|
|
|
|
streamDevice.CloseAsync().Wait();
|
|
streamWriter.Close();
|
|
networkStream.Close();
|
|
tc.Close();
|
|
}
|
|
}
|
|
}
|