2012-03-28 2 views
1

Я хотел бы выполнить 5 последовательных чтений на ведомых устройствах и проверить, соответствуют ли эти 5 результатов поиска равными. Если функция w1_read_state не должна быть снова вызвана , пока все 5 результатов не будут равны. Какое лучшее решение? Я начал с некоторым кодом, как это ...Последовательные чтения ведомого устройства - лучшее решение?

static w1_slave slave; 
static int tmp[5]; 
unsigned int i; 

for (i=0; i < sizeof tmp/sizeof char; i++) 
    w1_read_state(&slave, &tmp[i]); 
    ... 
    ... 

ответ

2
int last, consecutive; 
w1_read_state(&slave, &last); 
consecutive = 1; 
while (consecutive < 5) { 
    int tmp; 
    w1_read_state(&slave, &tmp); 
    if (tmp==last) { 
     consecutive++; 
    } else { 
     last = tmp; 
     consecutive = 1; 
    } 
} 
Смежные вопросы