Autor Beitrag
Thommy0606
Hält's aus hier
Beiträge: 15

Win XP
C# (VS2008 Express)
BeitragVerfasst: Di 04.05.10 14:32 
Hallo zusammen

ich habe als Neuling ein Problem und zwar will ich aus einen Wert, der als Byte oder Word vorliegt ein einzelnes Bit auslesen, auf Wert prüfen und ggf auch den Wert ändern. Die ausleseroutine kann ich leider nicht ändern, da dies eine DLL von einer andern Firma ist.
Zur besseren verständnis eine kurze Erläuterung meines Programmes. Ich lese mit den Programm AGLink von Deltalogic Daten aus der SPS aus. Dabei geht es am einfachsten mit ReadByte oder ReadWord. Nun benötige ich aus diesen Byte bzw. Word ein Bit dessen Wert ich prüfen muß (ob 1 oder 0) und möglicherweise auch Schreiben muß. Meine Frage ist jetz ob es eine Methode gibt eine einzelnes Bit aus einen Byte zu lesen.
Ich habe schon eine weile gesucht aber noch nichts passendes gefunden. Auch im meinen Büchern steht leider nichts auser von einer BitArray Klasse von deren Nutzung aber abgeraten wird.

Für eure Mühen schon mal vielen Dank

Gruß Thomas
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Di 04.05.10 15:20 
Hmmm... und du bist sicher richtig in .NET?

Egal.. als ich denke du musst fast BitOperationen machen. Was anderes fällt mir nicht ein ...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if ((b & 1) != 0)
   // 1. bit gesetzt
if ((b & 2) != 0)
   // 2. bit gesetzt
if ((b & 4) != 0)
   // 3. bit gesetzt
if ((b & 8) != 0)
   // 4. bit gesetzt

... usw.

Setzen wäre dann:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
byte blub = 0;
// bit 3 setzen
blub = (byte) blub | 4;
// bit 8 setzen
blub = (byte) blub | 128;


Aber vlt. gibt uns noch jemand eine elegante Lösung

Gruß


Zuletzt bearbeitet von danielf am Di 04.05.10 15:45, insgesamt 1-mal bearbeitet
Thommy0606 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
C# (VS2008 Express)
BeitragVerfasst: Di 04.05.10 15:42 
Hallo Daniel

Ja ich bin richtig bei .Net!! :zustimm: Die SPS Liefert Daten, die ich mittels .Net Programm auswerte und weiter verarbeite. Zum Beispiel meine SPS setzt ein Bit "Behällter voll". Dieses Bit lese ich Zyklisch aus und Prüfe ob es gesetzt ist, wenn ja geht eine Meldung an übergeordneten Server und der sendet ein Message an einen Stabler "Behälter in Anlage xy Station yz wechseln". Das ganze wird im Server protokolliert. Daher bin ich bei .NET richtig. da ein .NET Programm das ganze handelt.

Danke für deine Antwort, hilft mir schon weiter! :think:

Gruß Thomas