C# von EventHandler auf Variablen zugrifen

Gast #5180518
Lesenswert?

Hallo,

ich versuche von einem EventHandler auf eine Variable zuzugreifen die in 
der Klasse definiert ist. Ich bekomme aber immer die Fehlermeldung:

Für das nicht statische Feld, die Methode oder die Eigenschaft 
"clSerialCom.ReceiveState" ist ein Objektverweis erforderlich.

Der Fehler ist in der Zeile:
switch (ReceiveState)

Kann mir jemand einen Tipp gehen was ich machen muss.

Hier mein Code:
1
namespace Monitor
2
{
3
    class clSerialCom
4
    {
5
        private SerialPort ArduinoPort = new SerialPort();
6

7
        public enum RcvStatus
8
        {
9
            Reset = 0,
10
            FirstFlag,
11
            SecondFlag,
12
            Length,
13
            MsgReceived
14
        };
15

16
        public RcvStatus ReceiveState = RcvStatus.Reset;
17

18
        public bool OpenPort( string ArduinoPortName)
19
        {
20
            if (ArduinoPortName == null) return false;
21
            ArduinoPort.PortName = ArduinoPortName;
22
            ArduinoPort.DataBits = 8;
23
            ArduinoPort.Parity = Parity.None;
24
            ArduinoPort.StopBits = StopBits.One;
25
            ArduinoPort.BaudRate = 9600;
26

27
            try
28
            {
29
                ArduinoPort.Open();
30
                ArduinoPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
31
                return true;
32
            }
33
            catch
34
            {
35
                return false;
36
            }
37
        }
38

39
        private static void DataReceivedHandler(
40
                    object sender,
41
                    SerialDataReceivedEventArgs e)
42
        {
43
            SerialPort sp = (SerialPort)sender;
44

45
            
46
            byte RcvByte;
47

48
            switch (ReceiveState)
49
            {
50
                case RcvStatus.Reset:
51
                    break;
52
            }
53
        }
54
    }
55
}
Gast #5180540
Lesenswert?

Die Fehlermeldung sagt doch alles. Deklariere die Variable als static. 
Dann kannst du von allen Instanzen der Klasse auf diese zugreifen.
public static RcvStatus ReceiveState = RcvStatus.Reset;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren