Wszystkie obiekty symbolizujące alarmy są zapisane w tablicy , w głównej klasie jako :
ArrayList baza_alarmow = new ArrayList();
Później po dodaniu jako : baza_alarmow.Add(new Alarm());
Nie ważne , co pobierane jest do konstruktora ale dodanie nowych elementów nie zależy ściśle od użytkownika . Następnie użytkownik może przez port rs232 przesłać wszystkie alarmy dalej ( i tu właśnie jest kłopot )
Pierwszy bajt jaki idzie przez port symbolizuje typ alarmu . I oto jesli pierwszy bit jest ustawiony , to mamy alarm czerwony , drugi to inny itd .
Więc przykładowo dla pierwszego elementu powinno być :
byte Flaga_alarmu = 0;
Alarm referencja = (Alarm) baza_alarmow[0];
if(referencja.kolor_alarmu.Equals(Brushes.Red))
Flaga_alarmu = 1;
if(referencja.kolor_alarmu.Equals(Brushes.Blue))
Flaga_alarmu = 2;
.
.
.
.
I nawet jeśli stworze obiekt :
Brush c = referencja.kolor_alarmu i warunek będzie wyglądał :
if(c.Equals(Brushed.Red)) to nie jest spełniony ( w debuggerze ewidentnie ma taka "wartość") . Wszystkie składowe pobranego obiektu się zgadzają .