Hirdetés

Új hozzászólás Aktív témák

  • Jester01
    veterán

    Sziasztok!

    Egy két másodperces késleltetőt szeretnék implementálni. Ehhez tudom az aktuális időt, ennek is a másodperc értékét szeretném felhasználni. Azt szeretném meghatározni, hogy meddig várjak, tehát az aktuális másodperchez hozzáadok 2-t. Csak ugye 60, 61, 62 esetben nekem 0, 1 és 2 kell. Erre van valamilyen bitműveletes kód, vagy simán if és mask?

    Most ezt képzeltem

    int act_sec = GetSec();
    int wait = act_sec+2;
    if(wait>=60)
    {
    wait = wait&0x03;
    }
    while(act_sec<wait)
    {
    act_sec=GetSec();
    }

    Általános esetben inkább kivonás mint maszkolás mert ez utóbbi nem mindig jó.
    Amúgy osztási maradékot lehet még használni, de az sokkal lassabb szokott lenni.

    Egyébként 62 sosem lesz, hiszen maximum 59+2=61 lehet.

    A while(act_sec<wait) viszont rossz, hiszen ha az act_sec 59 akkor a wait 1 lesz és bele sem megy a ciklusba.

    Ami még probléma lehet, hogy esetleg éppen az aktuális másodperc végén jársz és így akár közel 1 másodpercre is zsugorodhat a várakozási idő.

Új hozzászólás Aktív témák