private void UpdateClockStats()
{
var now = DateTime.Now;
labelLocalTime.Text = DisplayDateTime(now);
if (null != _deviceConnection) {
var deviceTime = _deviceConnection.QueryClock();
if (default(DateTime) != deviceTime) {
labelDaqTime.Text = DisplayDateTime(deviceTime);
var diff = deviceTime.Subtract(now);
if (diff < TimeSpan.Zero) {
diff = TimeSpan.Zero - diff;
}
bool outOfSync = diff >= new TimeSpan(0, 0, 0, 3, 0);
labelDaqTime.ForeColor = ForeColor;
if (outOfSync && AppContext.PersistentState.AutoSyncClock
&& (now - LastClockUpdate) >= MaxClockUpdateFrequency
) {
System.Diagnostics.Debug.WriteLine("BeginClockSync");
if (_deviceConnection.SetClock(DateTime.Now)) {
labelDaqTime.ForeColor = ForeColor;
System.Diagnostics.Debug.WriteLine("EndClockSync: OK!");
LastClockUpdate = DateTime.Now;
return;
}
System.Diagnostics.Debug.WriteLine("EndClockSync: Fail");
}
if (outOfSync) {
labelDaqTime.ForeColor = now.Second % 2 == 0 ? Color.Red : ForeColor;
}
else {
labelDaqTime.ForeColor = ForeColor;
}
return;
}
}
labelDaqTime.Text = "N/A";
labelDaqTime.ForeColor = ForeColor;
}