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

Kri*_*son 6 gpio raspberry-pi win-universal-app windows-10-iot-core

如果我在UWP中创建一个应用程序,例如使用Template 10.我用C#

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

就像一个例子,当按下按钮时,它将向服务器发送POST请求,这必须在任何视图中工作.

如果我去看一个视图,我想得到一个图钉的状态显示"门是开着的"

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

即使引脚上电拉动是PullDown.

pin = gpio.OpenPin(12);
pin.SetDriveMode(GpioPinDriveMode.InputPullUp);
pin.Write(GpioPinValue.Low);
pin.ValueChanged += buttonPin_ValueChanged;
Run Code Online (Sandbox Code Playgroud)

Non*_*714 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.
}
Run Code Online (Sandbox Code Playgroud)