/// <summary> /// Creates a new BitField from the specified array of bytes. /// </summary> /// <param name="data">The array of bytes to create the BitField from.</param> /// <returns></returns> public new static BitField32 FromBytes(byte[] data) { var bf = new BitField32(); Array.Copy(data, bf._field, data.Length); return(bf); }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="size"></param> /// <returns></returns> private object Read(Type type, int size = 0) { if (type == null) { throw new ArgumentNullException(nameof(type)); } BinaryReader reader = BinaryReader; if (type == typeof(byte)) //U1 { return(reader.ReadByte()); } else if (type == typeof(byte[])) //CH { return(reader.ReadBytes(size)); } else if (type == typeof(short)) //I2 { return(reader.ReadInt16()); } else if (type == typeof(ushort)) //U2 { return(reader.ReadUInt16()); } else if (type == typeof(long) || type == typeof(int)) //I4 { return(reader.ReadInt32()); } else if (type == typeof(ulong) || type == typeof(uint)) //U4 { return(reader.ReadUInt32()); } else if (type == typeof(float)) //R4 { return(reader.ReadSingle()); } else if (type == typeof(double)) //R8 { return(reader.ReadDouble()); } else if (type == typeof(BitField8)) //X1 { return(BitField8.FromBytes(reader.ReadBytes(1))); } else if (type == typeof(BitField16)) //X2 { return(BitField16.FromBytes(reader.ReadBytes(2))); } else if (type == typeof(BitField32)) //X4 { return(BitField32.FromBytes(reader.ReadBytes(4))); } else { throw new NotSupportedException(nameof(type)); } }
/// <summary> /// Creates an instance with the specified values /// </summary> public PortConfiguration() { PortId = 0x04; // default to SPI TxReady = new BitField16(); Mode = new BitField32(); Reserved2 = new byte[4]; InProtoMask = new BitField16(); OutProtoMask = new BitField16(); Flags = new BitField16(); Reserved3 = new byte[2]; }