更好的锁存数据方法

时间:2015-04-27 02:00:59

标签: c++

我要求8到10左右的布尔值需要"锁定"对于不同的循环次数,然后单独重置。每250mS /周期定期调用该代码

行为:

遍历对象,如果对象为高,则将值锁定为其余周期的高值。如果对象剩余周期为0,则将值重置为低。

如果对象值较低,则不对对象起作用。

我的设计方法是创建一个包含以下元素的结构:

struct latchElement
{
       bool* value;
       int reqCycles;
       int currentCycle;
};

所以我创建了一个这些latchElements的数组:

latchElement boolData[8];

现在我必须将这些boolData中的每一个单独分配给个别布尔值。我只是在检查这是否是最佳方法?

我有一个指针,它将被单独分配给每个布尔值:

bool value1 = false;
bool value2 = false;
bool value3 = false;
bool value4 = false;
bool value5 = false;
bool value6 = false;
bool value7 = false;
bool value8 = false;
boolData[0].value = &value1;
boolData[1].value = &value2;
boolData[2].value = &value3;
boolData[3].value = &value4;
boolData[4].value = &value5;
boolData[5].value = &value6;
boolData[6].value = &value7;
boolData[7].value = &value8;

然后我通过一个循环检查值是否为高,如果是,我增加currentCycle,如果它小于ReqCycles。如果该值等于ReqCycles,我将该值设置为false,然后将currentCycle重置为0;

// NOTE: This loop is in a function that is called every 250mS
     for(int i = 0; i < 8; i++)
     {
       if (*(boolData[i].value) == true)
       {
         if (boolData[i].currentCycle < boolData[i].reqCycles)
         {
             (boolData[i].currentCycle)++;
             cout << *(boolData[i].value) << endl;
         }             
         else
         {
             // Reset Back
             boolData[i].currentCycle = 0;
             *(boolData[i].value) = false;
         }          

       }

我认为有没有更好/更简单的方法来做到这一点?

0 个答案:

没有答案