Datenstromanalyse Werte übernehmen



  • Ich versuche einen Datenstrom zu analysieren nur werden die Werte nicht übernommen.
    Bis jetzt konnte ich die Werte immer direkt berechnen.
    Nun wird aber ein Wert nicht wiedergeben, weil der aus mehreren Werten berechnet wird.

    Ich habe die Struktur mal vereinfacht:

    if (Data[0] == 0xAD)
       { 
        int Wert1, Wert2, Wert3; //Werte in denen ein Bytewert zwischen werden soll
    
           if (Data[3] == 0x01)
            {
            Print(" Wert für 0x01 ist %d" , Data[4]);
            Gate1=!Gate1       //Gibt bescheid of Wert1 bereits vorhanden ist 
            Wert1=2*Data[4]+5  /*Das Packet  soll verändert werden für die Berechnung von Wert3 */
            }
           if (Data[3] == 0x02)
            {
            Print(" Wert für 0x02 ist %d" , Data[4]);
            Gate2=!Gate2        
            Wert2=9*Data[4]-8
            }
          if ( Gate1 && Gate2)
           {
          Wert3=Wert1+Wert2
          Print(" Wert 3 ist %d , Wert3 );
           }
    
     }
    

    Sieht das allerdings folgendermaßen aus:

    Ich bekomme ein Datenpacket der Struktur:

    AD XX XX 01 14 .........

    Der Wert und die Berechnung stimmen soweit.

    Wenn ich jedoch aber nun den nächsten Datensatz der Struktur

    AD XX XX 02 AB ......... bekomme, dann wird Wert1 zu Stuss.

    Bei meinem Programm sind es eben noch mehr Fallunterscheidungen, sodass immer nur ein genau ein Wert stimmt und alle anderen Werte Stuss sind, als ob sie nie berechnet worden sind.

    Es würde auch reichen, wenn ich den Wert in die nächste if schleife übergeben kann.

    }


  • Mod

    Der gewünschte Benutzern schrieb:

    Wenn ich jedoch aber nun den nächsten Datensatz der Struktur

    AD XX XX 02 AB ......... bekomme, dann wird Wert1 zu Stuss.

    Kein Wunder, in dem Fall wird ja auch Wert1 nirgendwo initialisiert, bevor es benutzt wird. Wenn du die Wert1 und Wert2 zwischen verschiedenen Datensätzen weiterbehalten möchtest, dann musst du sie auf einer höheren Ebene deklarieren, z.B. dort wo du die GateX deklarierst.



  • Danke war ein blöder Fehler klappt wunderbar 🙂


Log in to reply