C# Eigenes Controllbyte erstellen

Blue_Fox

Mitglied
Hi Leute

ich bin am verzweifeln....

wie kann ich ein eigenes Controllbyte erstellen, das ungefaehr so aussieht

| Lampe/Gruppe/Raum | Dim/Ein/Aus | Status | NoError/NoLight/General |
| | | | |
| 2 Bit | 2 Bit | 1 Bit | 2 Bit |

ich will dann zum Beispiel ueber TCP senden koennen

Lampe | Ein | | | (Klartext: Schalte die Lampe ein)

und dann wieder empfangen

Lampe | Ein | Ein | NoError| (Klartext: Lampe wurde eingeschaltet, Status ist ein (brauch ich noch wo anders) es gab keinen fehler

wie mach ich das****

habs schon mit enum probiert, aber wenn ich das dann in ein Byte zum uebertragen wandle, kann ich die einzenlen controlls nicht mehr herausfiltern :(
und mit einzelnen enum mekert der Kompiler

Danke fuer eure Hilfe

mfg
Blue_Fox
 

sheel

I love Asm
Hi

Du brauchst als Variable nur byte.
Wenn das byte b genannt wird, kannst du

so prüfen, ob das x-te Bit 1 ist
if(b & (1 << x))
...

so das x-te Bit auf 1 setzen:
b |= (1 << x);

Gruß
 

Blue_Fox

Mitglied
so jetzt is noch ein Problem aufgetaucht...

wenn ich jetzt eine abfrage machen will, mekert der Compiler, dass er int nicht in bool konvertieren kann...

Code:
public void SetControl(byte value){
			if(value &(1 << 7)){
				this.Control |= (1 << 7);
			}
			if(value &(1 << 0)){
				this.Control |= (1 << 0);
			}
			if(value &(1 << 1)){
				this.Control |= (1 << 1);
			}
			if(value &(1 << 2)){
				this.Control |= (1 << 2);
			}
		}

wo ist da mein Fehler? und welchen Wert meint der jetzt genau?

mfg
Bastian
 

rd4eva

Erfahrenes Mitglied
wenn ich jetzt eine abfrage machen will, mekert der Compiler, dass er int nicht in bool konvertieren kann...
wo ist da mein Fehler? und welchen Wert meint der jetzt genau?
Das solltest du eigentlich der Fehlermeldung entnehmen können.

Alle Bedingungen der if-Abfragen sind gemeint, also z.B: value &(1 << 7).
Das ergibt ja schließlich kein bool.

Also entweder du konvertiest das Ergebnis in einen boolean oder du vergleichst auf > 0 o.ä.