【问题标题】:Best practice to put GPIO logic in UWP将 GPIO 逻辑放入 UWP 的最佳实践
【发布时间】:2017-01-19 08:51:35
【问题描述】:

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

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

例如,当按下按钮时,它将向服务器发送 POST 请求,这必须在任何视图中都有效。

如果我去一个视图,我想让一个图钉的状态显示为“门打开了”

此外,例如,如果传感器将引脚触发为 HIGH,如果我更改视图,则它无法触发 buttonPin_ValueChanged 事件或出于任何原因将其设置为 LOW,除非传感器为 LOW。

即使引脚 Power-on Pull 是 PullDown。

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

【问题讨论】:

  • 我不认为你可以写这么简单的类来抽象GPIO引脚的使用。电子设备比引脚更复杂,所有引脚都可以根据您连接的内容做不同的事情。有兴趣看看你得到什么答案。
  • 我真的不明白你的问题是什么?您是否只是希望能够从代码中的任何位置与 GPIO 控制器进行交互,并获得有关引脚值更改的通知,而不管当前显示的是哪个视图?对吗?
  • 是的@robinmanuelthiel,比如后台工作人员之类的。我正在记录约 8 次状态更改/秒。即使我正在切换视图,我也不会错过任何一个变化。
  • 这是 C++ 还是 C#?其他语言?树莓派执行多线程 - 因此您可以检查程序中其他部分的原子变量,并将gpiocontroller 放在单独的线程中。
  • @NonCreature0714 如果我在线程中使用 C#,如果我更改视图,它不会杀死它吗?

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


【解决方案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.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2021-11-08
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多