【问题标题】:Windows 10 IoT loop GPIO in backgroundWindows 10 IoT 循环 GPIO 在后台
【发布时间】:2023-03-25 13:18:01
【问题描述】:

我是 Windows 10 IoT 的新手。我已经使用微控制器几年了,也许这是我的坏习惯。我正在构建一个应用程序,它需要“ping”几个 GPIO,直到在它们之间找到特定的组合。一旦找到,图形界面应该会做动画。

我的问题如下:在显示图形界面的同时在后台连续循环的最佳方法是什么?

我目前正在做如下:

初始化GPIO();

timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(0.05);
timer.Tick += Timer_Tick;
if (init)
   timer.Start();

private void Timer_Tick(object sender, object e)
{
      //Here I loop the GPIO. I f a comkbination is found, the graphical interface is triggered.
}

有没有更好的办法?

谢谢!

【问题讨论】:

    标签: c# windows iot


    【解决方案1】:

    最好不要专门将自己附加到计时器,因为许多传感器和控制器都有自己的轮询率,并且 GpioPin 有自己的事件接收器,用于在值发生变化时进行处理。

    如果您将所有内容绑定到事件接收器,那么在您的主程序类中,您可以在所有内容初始化后简单地循环 while(true) {}

    因为我只编写用于测试的小项目,而且我经常从办公桌上站起来忘记关闭我的 raspi 电源,所以我在循环中设置了超时,因此它会在 5 分钟后自动关闭。

    var timeout = DateTime.Now.AddMinutes(5);
    
    while (DateTime.Now < timeout) {
        Task.Delay(1000).Wait();
    }
    

    这将检查每秒是否超过超时。我在 Unity 开发(也使用 while(true) 概念)中玩弄的一个习惯是实际上不要让循环以最大速度运行,因为它最终可能会占用 CPU 周期。最好在一个空循环中加入一个简单的 1 毫秒延迟。

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2019-08-27
      相关资源
      最近更新 更多