0

我目前正在研究 tinyos,我正在尝试重置计时器,让我们说它在 45 秒运行时设置为 2 秒,但它不工作,我不知道为什么,

有人可以帮我弄清楚吗

这是代码:

printf("timer before resetting it %ld",call Timer1.getNow());
offset = ((TimeMote_t*) payload)->tdata;
call Timer1.startPeriodic(offset);
printf("timer after resetting it %ld",call Timer1.getNow());

现在实际上它应该将计时器重置为偏移,但它没有重置它。两个 printf 语句都给出了相同的时间。

4

1 回答 1

1

不,不应该。Timer.getNow()返回绝对时间,不能更改或重置。Timer接口可用于在未来的特定时刻安排事件。Timer.startPeriodic(offset)启动计时器,这意味着该事件Timer.fired()将在未来发出信号。在这个特定的例子中,事件将从offset调用到的单元发出信号Timer.startPeriodic,然后offset无限地重复每个单元或直到调用到Timer.stop()。无论定时器是否启动,返回值Timer.getNow()都不会改变并且单调增加。

请参阅:接口:tos.lib.timer.Timer

于 2016-04-27T18:15:38.370 回答