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; 
    } 
} 
관련 문제