private void GetValue() { try { var arduinoBytes = new byte[10]; _device.Read(arduinoBytes); var sonarWidth = (ushort)(arduinoBytes[0] << 8 | arduinoBytes[1]); //var adcReading1 = (ushort)(arduinoBytes[2] << 8 | arduinoBytes[3]); //var adcReading2 = (ushort)(arduinoBytes[4] << 8 | arduinoBytes[5]); //var adcReading3 = (ushort)(arduinoBytes[6] << 8 | arduinoBytes[7]); //var adcReading4 = (ushort)(arduinoBytes[8] << 8 | arduinoBytes[9]); ProximityReceived?.Invoke(this, new ProximtyEventArgs { RawValue = sonarWidth, Proximity = Math.Max(0, ((sonarWidth / 2d) / 2.91d) - 0.5d) //The sensors are about 5mm inside the casing of the device. }); } catch (Exception ex) { SensorException?.Invoke(this, new ExceptionEventArgs { Exception = ex, Message = "An error occurred reading values from Arduino Sensor Device" }); } }
private void _simulatorTimer_Tick(ThreadPoolTimer timer) { var random = new Random(); ProximityReceived?.Invoke(this, new ProximtyEventArgs { RawValue = random.Next(2000, 2500) }); AmbientLightReceived?.Invoke(this, new AmbientLightEventArgs { RawValue = random.Next(150, 500) }); }
private Task TakeProximityMeasurements() { var proxTask = Task.Factory.StartNew(() => { var rawProximity = RawProximity; var proximityArgs = new ProximtyEventArgs { RawValue = rawProximity, Proximity = _proximityConverter.GetDistance(rawProximity) }; ProximityReceived?.Invoke(this, proximityArgs); }); return(proxTask); }