private void RemoveDevice(IOneWireDevice oneWireDevice) { oneWireDevice.MarkAsDead(); _logger.LogInformation(this, "removing device " + oneWireDevice.SerialNumber + " from the device list"); Devices.Remove(oneWireDevice); RaiseOneWireDeviceIsDead(oneWireDevice); }
private async void _oneWireConnector_OnOneWireDeviceIsDead(IOneWireDevice device) { await OneWirePanel.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { var uiElements = (from uiElement in OneWirePanel.Children let oneWireCtrl = uiElement as OneWireDeviceControl let controlDevice = oneWireCtrl?.Tag as IOneWireDevice where controlDevice != null where device.SerialNumber == controlDevice.SerialNumber select uiElement).ToList(); foreach (var uiElement in uiElements) { OneWirePanel.Children.Remove(uiElement); } }); }
public Family38Device(IOneWireDevice device, TimeSpan getValueTimeSpan) { if (device.FamilyCode != 38) { throw new Exception("The Device doesn't fit to the family code"); } _device = device; if (getValueTimeSpan != TimeSpan.Zero) { _timer = new Timer(GetValue, new object(), getValueTimeSpan, getValueTimeSpan); } }
private async void RaiseOneWireDeviceIsDead(IOneWireDevice device) { if (OnOneWireDeviceIsDead == null) { return; } _logger.LogDebug(this, "raising dead one wire device event"); var task = Task.Run(() => OnOneWireDeviceIsDead.Invoke(device)); if (task != null) { await task.ConfigureAwait(false); } }
private async void _oneWireConnector_OnNewOnWireDevice(IOneWireDevice device) { await OneWirePanel.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if (device.FamilyCode == 40) { var device40 = new Family40Device(device, TimeSpan.FromSeconds(10)); var control = new OneWireDeviceControl(device40.SerialNumber, device40.FamilyCode) { Margin = new Thickness(10) }; device40.OnNewValue += value => { if (value == null) { control.SetValue("----"); } else { control.SetValue(value.Value.ToString(CultureInfo.InvariantCulture) + " °C"); } }; control.Tag = device; OneWirePanel.Children.Add(control); } //else if (device.FamilyCode == 38) //{ // var device38 = new Family38Device(device, TimeSpan.FromSeconds(10)); // var control = new OneWireDeviceControl(device38.SerialNumber, device38.FamilyCode) // { // Margin = new Thickness(10) // }; // device38.OnNewValue += value => // { // if (value == null) // { // control.SetValue("----"); // } // else // { // control.SetValue(value.Value.ToString(CultureInfo.InvariantCulture) + ""); // } // }; // control.Tag = device; // OneWirePanel.Children.Add(control); //} else { var control = new OneWireDeviceControl(device.SerialNumber, device.FamilyCode) { Tag = device, Margin = new Thickness(10) }; OneWirePanel.Children.Add(control); } }); }