0

BackgroundApp(IoT)テンプレートを使用すると、ピンから値が得られません。 Foreground Appと同じように試してみましたが、ボタンを押したときにトリガーされたイベントはありません。 誰かが私に何が間違っているか教えてもらえますか?バックグラウンドタスクでgpioからValueを読み込む方法は? C#Win IOT RP3

は、ここに私のコード

namespace BackgroundApplication2 
    { 
    public sealed class StartupTask : IBackgroundTask 
    { 
    private const int LED_PIN = 6; 
    private const int BUTTON_PIN = 5; 
    private GpioPin ledPin; 
    private GpioPin buttonPin; 
    private GpioPinValue ledPinValue = GpioPinValue.High; 

     public void Run(IBackgroundTaskInstance taskInstance) 
     { 
      InitGPIO(); 
      } 

     private void InitGPIO() 
     { 
      var gpio = GpioController.GetDefault(); 

      if (gpio == null) 
      { 
       Debug.WriteLine("There is no GPIO controller on this device."); 
       return; 
      } 

      buttonPin = gpio.OpenPin(BUTTON_PIN); 
      ledPin = gpio.OpenPin(LED_PIN); 


      ledPin.Write(GpioPinValue.High); 
      ledPin.SetDriveMode(GpioPinDriveMode.Output); 


      if (buttonPin.IsDriveModeSupported(GpioPinDriveMode.InputPullUp)) 
       buttonPin.SetDriveMode(GpioPinDriveMode.InputPullUp); 
      else 
       buttonPin.SetDriveMode(GpioPinDriveMode.Input); 


      buttonPin.DebounceTimeout = TimeSpan.FromMilliseconds(50); 


      buttonPin.ValueChanged += buttonPin_ValueChanged; 

      Debug.WriteLine("GPIO pins initialized correctly."); 
     } 

     private void buttonPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e) 
     { 

      if (e.Edge == GpioPinEdge.FallingEdge) 
      { 
       ledPinValue = (ledPinValue == GpioPinValue.Low) ? 
        GpioPinValue.High : GpioPinValue.Low; 
       ledPin.Write(ledPinValue); 
      } 

     } 

    } 
    } 

このコードが原因BackgroundAppがInitGPIO()機能を実行した後に出て、あなたにUWPアプリ

答えて

0

この問題で正常に動作しています。だから、イベントを受け取ることはできません。

必要なのは、アプリケーションが終了しないようにするために、「GetDeferral」メソッドを呼び出すことです。あなたがhereを参照することができ、この動作の詳細については

 public void Run(IBackgroundTaskInstance taskInstance) 
     { 
      var deferral = taskInstance.GetDeferral(); 

      InitGPIO(); 
     } 

:あなたはこのようにそれを行うことができます。

関連する問題