2016-04-26 62 views
0

我目前正在處理tinyos和我想重置定時器 讓它說2秒,當它運行在45秒 但它不工作,我不明白爲什麼,微小的OS定時器不重置

有人可以幫助我弄清楚

這裏是代碼:

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語句都給出相同的時間。

回答

1

不,它不應該。 Timer.getNow()返回無法更改或重置的絕對時間。 Timer接口可用於在將來特定時刻安排事件。 Timer.startPeriodic(offset)啓動計時器,這意味着事件Timer.fired()將在未來發出信號。在這個特定的例子中,該事件將從呼叫到Timer.startPeriodic發信號爲offset個單位,然後無限次地每offset個單位重複或直到致電Timer.stop()。無論定時器是否啓動,返回值Timer.getNow()都不會改變並單調遞增。

參見:Interface: tos.lib.timer.Timer

+0

謝謝你讓我知道 Finall。我有它的解決方法,我存儲舊的計時器,並從當前時間減去,所以顯示時間,以便它只顯示偏移值。 – warl0ck