Sunday, September 05, 2010

Please register or login (see links at the top-right corner of this page) to post in this Forum. Registration is free and becomes valid immediately.

Forum
 
  Forum  VersatileSerial...  Fragen, Vorschl...  Bits
Previous Previous
 
Next Next
New Post 5/24/2007 10:36 AM
  Imported
7 posts
No Ranking


Bits 
Modified By Imported  on 5/24/2008 12:12:25 PM)

Das Beispiel auf der Produktseite suggeriert, es sei möglich die Serialisierung auf Bit-Ebene zu steuern. In der Hilfe wird aber immer nur von Abschneiden oder Auffüllen auf Byte-Ebene gesprochen.
Wie ist es z.B. möglich einen 4-Bit-Wert auszugeben?

svepol

 
New Post 5/24/2007 12:01 PM
  christian
16 posts
No Ranking


Re: Bits 
Auf Bit-Ebene läßt sich die Serialisierung am besten steuern, indem man Enumeratoren verwendet. In der Hilfe gibt es Abschnitt Samples unter "Enumerations" drei Beispiele dazu.

Letztlich ist ein enum zwar mindestens auf einem Byte basiert, aber innerhalb des Bytes (oder short, int ...) kann man die Kontanten des enums komfortabel verwenden, um die Bits und Bitkombinationen zu steuern. Kann man es damit lösen?

Gruss
--echo
 
New Post 5/24/2007 12:21 AM
  Imported
7 posts
No Ranking


Re: Bits 
Nur sehr bedingt, da sich letztlich auch bei Enums die kleinste Einheit ein Byte ist. Angenommen ich habe ein Byte, wobei jeweils 2 Bits einen Wert repräsentieren. Dann würde ich in meiner Klasse eben die 4 Felder vom Typ Byte definieren und dabei über Attribute angeben wollen, welche Bits jeweils relevant sind. Noch schwieriger: Daten erstrecken sich über die 8-Bit-Grenze, z.B. Bit 0-13 für Wert 1, Bit 14-15 für Wert 2.

Gerade im Datenaustausch hat man es oft mit echter Bitfrickelei zu tun, weil die Protokolle auch noch das letzte Bit ausnutzen wollen.

Hier würde die Lösung bei mir persönlich den höchsten Produktivitätsvorteil bieten, weil das Hantieren mit Bits extrem fehleranfällig ist.
 
New Post 5/24/2007 1:41 PM
  christian
16 posts
No Ranking


Re: Bits 

Jedoch kann man mit Enums in Verbindung mit dem Standard-Attribut [Flags] auch Bit-Bereiche in einem Byte (oder ein Doppelbyte oder dgl.) kombinieren. In manchen Fällen hilft auch das VSTranslationAttribute weiter.

[Flags]
public enum MyEnum : byte
{
  //four bits controlling the LEDs
    LED_Green = 1,
    LED_Red = 2,
  //upper four bits controlling the valves
    Valve_1 = 16,
    Valve_2 = 32
}

[VSSerializableContainer]
public class MySample_Class
{
    [VSSerializableBinary(100)]
    public My_Enum LEDs_And_Valves;
//... etc.
}

 
Previous Previous
 
Next Next
  Forum  VersatileSerial...  Fragen, Vorschl...  Bits
Privacy Statement  |  Terms Of Use
Copyright 2009 by AIT Software GmbH