private async void ProcessSignal() { var client = new PiServer.ServiceSoapClient(); relayPin.Write(GpioPinValue.High); await Task.Delay(500); relayPin.Write(GpioPinValue.Low); client.UpdateStatusAsync("SignalGarageDoor", "Idle"); }
private async void DistanceTimer_Tick(object sender, object e) { pinTrigger.Write(GpioPinValue.High); await Task.Delay(10); pinTrigger.Write(GpioPinValue.Low); while (pinEcho.Read() == GpioPinValue.Low) { sw_Distance.Start(); } while (pinEcho.Read() == GpioPinValue.High) { } sw_Distance.Stop(); var elapsed = sw_Distance.Elapsed.TotalSeconds; var distance = elapsed * 34000; sw_Distance.Reset(); distance /= 2; var client = new PiServer.ServiceSoapClient(); if (distance > 20) { client.UpdateStatusAsync("CarPresent", "No").AsAsyncAction().AsTask().Wait(); Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { el_Car.Fill = grayBrush; }); } else { client.UpdateStatusAsync("CarPresent", "Yes").AsAsyncAction().AsTask().Wait(); Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { el_Car.Fill = redBrush; }); } }
private void DoorSensor_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args) { var client = new PiServer.ServiceSoapClient(); if (sender.Read() == GpioPinValue.High) { client.UpdateStatusAsync("GarageDoor", "Open"); Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { el_GarageDoor.Fill = grayBrush; }); } else { client.UpdateStatusAsync("GarageDoor", "Closed"); Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { el_GarageDoor.Fill = redBrush; }); } }