Ejemplo n.º 1
0
        internal static ChannelConversionBlock Read(Mdf mdf, Stream stream, uint position)
        {
            stream.Position = position;

            var block = new ChannelConversionBlock(mdf);

            block.Read(stream);

            var data = new byte[block.Size - 4];
            var read = stream.Read(data, 0, data.Length);

            if (read != data.Length)
            {
                throw new FormatException();
            }

            block.PhysicalValueRangeValid = BitConverter.ToInt16(data, 0) != 0;
            block.MinPhysicalValue        = BitConverter.ToDouble(data, 2);
            block.MaxPhysicalValue        = BitConverter.ToDouble(data, 10);
            block.PhysicalUnit            = mdf.IDBlock.Encoding.GetString(data, 18, 20).Humanize();
            block.ConversionType          = (ConversionType)BitConverter.ToUInt16(data, 38);
            block.SizeInformation         = BitConverter.ToUInt16(data, 40);

            if (block.SizeInformation > 0)
            {
                block.AdditionalConversionData.Data = new byte[ConversionData.GetEstimatedParametersSize(block.ConversionType)];

                Array.Copy(data, 42, block.AdditionalConversionData.Data, 0, block.AdditionalConversionData.Data.Length);
            }

            return(block);
        }
Ejemplo n.º 2
0
 public ConversionData(ChannelConversionBlock parent)
 {
     Parent = parent;
 }