Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.0
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)