Windows 10 IoT循环GPIO在后台

时间:2016-06-20 20:40:02

标签: c# windows iot

我是Windows 10 IoT的新手。我已经和微控制器合作了好几年了,也许这是我的坏习惯。我正在构建一个需要" ping"几个GPIO,直到它们之间找到特定的组合。找到后,图形界面应该进行动画制作。

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

我目前正在做以下事情:

InitGPIO();

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.
}

有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

可能最好不要将自己附加到计时器上,因为许多传感器和控制器都有自己的轮询速率,而GpioPin有自己的事件接收器,可以在值发生变化时进行处理。

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

因为我只是在编写小项目进行测试,而且经常从我的办公桌上起床而忘记关闭电源,我在循环中暂停,因此它会在5分钟后自动关闭。 / p>

var timeout = DateTime.Now.AddMinutes(5);

while (DateTime.Now < timeout) {
    Task.Delay(1000).Wait();
}

如果超时,则每秒检查一次。我在Unity开发中使用的习惯(也使用while(true)概念)实际上并不是让循环以最大速度运行,因为它最终可能会扼杀CPU周期。将一个简单的1 ms延迟投入到空循环中会更好。