private void HandleTakeMeasurement() { // TODO: Implement measurement _temperature += 0.01; var message = new TemperatureMeasured(Math.Round(_temperature, 2)); Context.Parent.Tell(message); }
/// <summary> /// Reads all DS18B20 Temperature Sensors on the OneWire Bus and raises the <see cref="TemperatureMeasured" /> event. /// </summary> /// <remarks> /// With multiple DS18B20 devices on the OneWire Bus, the <seealso cref="TemperatureMeasured" /> event will only /// be raised about every three seconds regardless if this method is called more often than every 3 seconnds. /// This is due to the time it takes to poll the OneWire Bus with multiple devices. /// </remarks> public void ReadTemperature() { lock (Temperature.SyncRoot) { _list.Clear(); Temperature.Clear(); _list = _ow.FindAllDevices(); if (_list.Count <= 0) { return; } foreach (byte[] s in _list) { Temperature.Add(s[0] + "-" + s[1] + "-" + s[2] + "-" + s[3] + "-" + s[4] + "-" + s[5] + "-" + s[6] + "-" + s[7], ReadTemperture(s)); } TemperatureMeasured tempEvent = TemperatureEventFired; tempEvent(this, Temperature); } }
protected virtual void OnTemperatureMeasured(MeasureEventArgs e) { TemperatureMeasured?.Invoke(this, e); }