Timer 在CAPL中创建可暂停计时器

Timer 在CAPL中创建可暂停计时器,timer,capl,Timer,Capl,我想在CAPL中创建一个可暂停的计时器来监视一个真正的系统计时器,它只在某些条件下滴答作响,如果不满足这些条件,它就会暂停 由于我在CAPL中找不到任何pauseTimer()函数,我如何才能实现这一点?我通过一种变通方法实现了我的目标。无法暂停计时器对象,但可以将其处置(注意经过的时间)并在之后作为新对象重新启动 假设您有一个计时器,当且仅当某个条件适用时,计时器才会滴答作响。请参考以下代码 variables { msTimer PauseableTimer; int64 T

我想在CAPL中创建一个可暂停的计时器来监视一个真正的系统计时器,它只在某些条件下滴答作响,如果不满足这些条件,它就会暂停


由于我在CAPL中找不到任何
pauseTimer()
函数,我如何才能实现这一点?

我通过一种变通方法实现了我的目标。无法暂停计时器对象,但可以将其处置(注意经过的时间)并在之后作为新对象重新启动

假设您有一个计时器,当且仅当某个条件适用时,计时器才会滴答作响。请参考以下代码

variables
{
    msTimer PauseableTimer;
    int64 Timeout = 100000;        // 100s timer
    int64 ElapsedTime = 0;
}

on message 0x10
{
    if( /timer doesn't tick conditions / && isTimerActive(PauseableTimer))
    {
        ElapsedTime = Timeout - timeToElapse(PauseableTimer);
        cancelTimer(PauseableTimer);
    }

    if( /timer ticks condition/ && !isTimerActive(PauseableTimer))
    {
        setTimer(PauseableTimer, Timeout - ElapsedTime);
    }
}
我们可以进行更多的检查,例如,我在
ElapsedTime
上添加了重置条件,以从整个持续时间重新启动时钟,但总的来说,这是实现倒计时的一种可行方法,当条件不满足时,可以暂停倒计时

任何改进都是可以接受的