Re: Compilerlogik unlogisch? Kategorie: Programmierung (von Detlef - 10.01.2009 11:40) | ||
Als Antwort auf Re: Compilerlogik unlogisch? von Detlef - 10.01.2009 10:17 | ||
| ||
Hallo nochmal, ergänzend noch folgendes. Auf die Lösung mit dem +1-1 bin ich gekommen, weil ich in der selben Funktion den gleichen Code für einen anderen Modultyp verwende. Hier liegen die Eingänge immer um drei höher, darum +3. Dieser Typ wurde immer problemlos gelesen, auch das 0-te Modul. Die einzige Unterscheidung war das +3. Also hatte ich +1-1 auch oben eingefügt, und siehe da es funktionierte.... > > Globale Variable: > byte Sensor[MaxEing*2]; // Sensorvorrat, Anzahl Eingänge pro Sequenz > > function readHaus(int modueb, byte tog) returns byte // (Moduluebersicht und Toggle) > { > int modul, bit, eingang; > byte pos; > modul=0; > pos=0; > > if tog pos=MaxEing; > > while modueb // ... solange es nichtabgefragte Module gibt > { > if modueb%2 // ... gucken, ob das nächste da ist > { > eingang=dwmodule.getDIMM(modul); // ... dann deren Eingänge abfragen > if eingang > if eingang !=dwmodule.getDIMM(modul) // Sicherheitsabfrage nur wenn > eingang=0; // positives Eingangssignal > > bit=0; > > while eingang // ... solange irgendwo ein Bit "high" ist > { > if eingang%2 // ... gucken ob das nächste "high" ist > { > Sensor[pos] = (modul*15)+1-1+bit; > if pos < (MaxEing*(1+tog)) pos=pos+1; > } > bit=bit+1; // ... nächstes bit abfragen > eingang = eingang shr 1; // ... nächsten Eingang abfragen > } > } > modueb=modueb shr 1; // ... nächstes Modul abfragen > if modueb%2 // ... gucken, ob das nächste da ist > { > eingang=dwmodule.getDigi(modul); // ... dann deren Eingänge abfragen > if eingang > if eingang !=dwmodule.getDigi(modul) // Sicherheitsabfrage nur wenn > eingang=0; // positives Eingangssignal > > bit=0; > > while eingang // ... solange irgendwo ein Bit "high" ist > { > if eingang%2 // ... gucken ob das nächste "high" ist > { > Sensor[pos] = modul*15+3+bit; > if pos < (MaxEing*(1+tog)) pos=pos+1; > } > bit=bit+1; // ... nächstes bit abfragen > eingang = eingang shr 1; // ... nächsten Eingang abfragen > } > } > modueb=modueb shr 1; // ... nächstes Modul abfragen > modul=modul+1; // ... nächste Modulreihe befragen > } > Sensor[pos]=LEER; // ... Endwert in Sensor schreiben > } > | ||
Antwort schreiben Antworten: Re: Compilerlogik unlogisch? (von reneforster - 13.01.2009 19:46) |