2016-04-26 2 views
0

Я сейчас работаю над tinyos и пытаюсь сбросить таймер позволяет говорить до 2 секунд, когда он работает на 45 секунд , но он не работает, я не могу понять, почему,Tiny 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() будет сигнализировано в будущем. В этом конкретном примере событие будет сигнализировано offset единиц от звонка до Timer.startPeriodic, а затем повторяется каждые offset единиц бесконечно или до звонка до Timer.stop(). Возвращаемое значение Timer.getNow() не изменяется и монотонно возрастает независимо от того, запущен ли таймер или нет.

См: Interface: tos.lib.timer.Timer

+0

Спасибо за давая мне знать Finall. У меня есть обходной путь для него. Я храню старый таймер и вычитаю его из текущего времени, поэтому время отображения так, что оно отображает только значение смещения. – warl0ck

Смежные вопросы