同时运行多个延迟?(C)

  • 本文关键字:延迟 运行 c delay
  • 更新时间 :
  • 英文 :


我正在尝试编写这个程序,无论何时触发传感器,我都希望有一个延迟,比如说3秒,然后做一些操作,这应该很简单。

理想情况下,它应该是(传感器触发(3…2…1…(做点什么(,我正在努力解决的是倒计时开始的场景3…2..(传感器再次触发(1……(做些什么(,现在这就是事情崩溃的地方,因为我需要另一个延迟来同时从3开始倒计时,但我不知道如何实现这一点。我希望我能发布这部分代码,但整个代码是链接在一起的。有没有一种方法可以用一个简单的C代码做到这一点,或者这需要先进的技术?

有很多方法:

  1. 使用线程。传感器线程将读取传感器并休眠3秒钟
  2. 使用非阻塞延迟
unsigned getTick(void); // for example 1000 ticks per second
vooid foo(void)
{
unsigned sensor1StartTime = 0;
while(1)
{ 
if(!sensor1StartTime || (getTick() - sensor1StartTime >= 3000))
{
handleSensor1();  // it will be executed every ~three seconds
sensor1StartTime = getTick();
}
// do something else 
// "something else" will not be blocked by delay.
}
}

每当传感器触发时,启动一个线程,延迟(倒计时(并在线程函数内做一些事情(不管你想做什么(。

最新更新