将GPIO逻辑放入UWP的最佳实践

时间:2016-09-11 23:00:55

标签: raspberry-pi win-universal-app gpio windows-10-iot-core

如果我使用Template 10在UWP中创建应用。我用C#

我希望在类或某个地方拥有GpioController逻辑来处理所有输入和输出业务,例如设置所有引脚和事件。

就像一个例子,当按下一个按钮时,它会向服务器发送一个POST请求,这必须在任何视图中都有效。

如果我去看一个视图并且我想要显示一个像#34的门的状态;门是打开的"

此外,如果传感器触发引脚为高电平,如果我改变视图,则无法触发buttonPin_ValueChanged事件,或者由于任何原因将其设置为低电平,除非传感器为低电平。

即使引脚上拉电压是PullDown。

pin = gpio.OpenPin(12);
pin.SetDriveMode(GpioPinDriveMode.InputPullUp);
pin.Write(GpioPinValue.Low);
pin.ValueChanged += buttonPin_ValueChanged;

1 个答案:

答案 0 :(得分:1)

您可以在初始类中创建一个GpioController对象,并将其作为对象传递给其他类。

如:

class BaseClass {
    GpioController gpio;

    void createGpioController(){
        gpio = new GpioController(/*Constuctor arguments here.*/);
    }

    void moveToNextClass(NextClass next){
        //Instantiate next class with any special constructors.
        next.gpio = this.gpio; 
        //Launch next class with same gpio member values. 
    }
}

class NextClass: BaseClass {
   GpioController gpio; //Will be assigned by last class.
}