2012-03-28 10 views
1

Ich möchte 5 aufeinanderfolgende Lesevorgänge zu einem Slave-Geräte durchführen und überprüfen, ob diese 5 Leseergebnisse alle gleich sind. Wenn nicht, sollte die w1_read_state-Funktion erneut aufgerufen werden, bis alle 5 Leseergebnisse gleich sind. Was ist die beste Lösung? Ich begann mit einigen Code so ...Fortlaufende Lesevorgänge des Slave-Geräts - Beste Lösung?

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]); 
    ... 
    ... 

Antwort

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; 
    } 
} 
Verwandte Themen