public Renard(string portName)
{
this.serialPort = new SerialPort(portName, 57600);
this.renardData = new byte[24];
this.cancelSource = new System.Threading.CancellationTokenSource();
this.firstChange = new System.Diagnostics.Stopwatch();
this.senderTask = new Task(x =>
{
while (!this.cancelSource.IsCancellationRequested)
{
bool sentChanges = false;
lock (lockObject)
{
if (this.dataChanges > 0)
{
this.firstChange.Stop();
//log.Info("Sending {0} changes to Renard. Oldest {1:N2}ms",
// this.dataChanges, this.firstChange.Elapsed.TotalMilliseconds);
this.dataChanges = 0;
sentChanges = true;
SendSerialData(this.renardData);
}
}
if(!sentChanges)
System.Threading.Thread.Sleep(10);
}
}, this.cancelSource.Token, TaskCreationOptions.LongRunning);
Executor.Current.Register(this);
}