ParseBinaryImage() public method

Initializes MetadataRecordComposedFields from the specified buffer.
public ParseBinaryImage ( byte buffer, int startIndex, int length ) : int
buffer byte Binary image to be used for initializing .
startIndex int 0-based starting index of initialization data in the .
length int Valid number of bytes in from .
return int
Beispiel #1
0
        /// <summary>
        /// Initializes <see cref="MetadataRecord"/> from the specified <paramref name="buffer"/>.
        /// </summary>
        /// <param name="buffer">Binary image to be used for initializing <see cref="MetadataRecord"/>.</param>
        /// <param name="startIndex">0-based starting index of initialization data in the <paramref name="buffer"/>.</param>
        /// <param name="length">Valid number of bytes in <paramref name="buffer"/> from <paramref name="startIndex"/>.</param>
        /// <returns>Number of bytes used from the <paramref name="buffer"/> for initializing <see cref="MetadataRecord"/>.</returns>
        public int ParseBinaryImage(byte[] buffer, int startIndex, int length)
        {
            if (length >= FixedLength)
            {
                // Binary image has sufficient data.
                Remarks             = Encoding.ASCII.GetString(buffer, startIndex, 512).Trim();
                HardwareInfo        = Encoding.ASCII.GetString(buffer, startIndex + 512, 512).Trim();
                AlarmEmails         = Encoding.ASCII.GetString(buffer, startIndex + 1024, 512).Trim();
                Description         = Encoding.ASCII.GetString(buffer, startIndex + 1536, 80).Trim();
                CurrentData         = Encoding.ASCII.GetString(buffer, startIndex + 1616, 80).Trim();
                Name                = Encoding.ASCII.GetString(buffer, startIndex + 1696, 40).Trim();
                Synonym1            = Encoding.ASCII.GetString(buffer, startIndex + 1736, 40).Trim();
                Synonym2            = Encoding.ASCII.GetString(buffer, startIndex + 1776, 40).Trim();
                Synonym3            = Encoding.ASCII.GetString(buffer, startIndex + 1816, 40).Trim();
                AlarmPagers         = Encoding.ASCII.GetString(buffer, startIndex + 1856, 40).Trim();
                AlarmPhones         = Encoding.ASCII.GetString(buffer, startIndex + 1896, 40).Trim();
                PlantCode           = Encoding.ASCII.GetString(buffer, startIndex + 1936, 24).Trim();
                SystemName          = Encoding.ASCII.GetString(buffer, startIndex + 1960, 24).Trim();
                EmailTime           = Encoding.ASCII.GetString(buffer, startIndex + 1984, 40).Trim();
                ScanRate            = LittleEndian.ToSingle(buffer, startIndex + 2104);
                UnitNumber          = LittleEndian.ToInt32(buffer, startIndex + 2108);
                SecurityFlags.Value = LittleEndian.ToInt32(buffer, startIndex + 2112);
                GeneralFlags.Value  = LittleEndian.ToInt32(buffer, startIndex + 2116);
                AlarmFlags.Value    = LittleEndian.ToInt32(buffer, startIndex + 2120);
                CompressionMinTime  = LittleEndian.ToInt32(buffer, startIndex + 2124);
                CompressionMaxTime  = LittleEndian.ToInt32(buffer, startIndex + 2128);
                SourceID            = LittleEndian.ToInt32(buffer, startIndex + 2132);

                switch (GeneralFlags.DataType)
                {
                case DataType.Analog:
                    m_analogFields.ParseBinaryImage(buffer, startIndex + 2152, length - 2152);
                    break;

                case DataType.Digital:
                    m_digitalFields.ParseBinaryImage(buffer, startIndex + 2152, length - 2152);
                    break;

                case DataType.Composed:
                    m_composedFields.ParseBinaryImage(buffer, startIndex + 2152, length - 2152);
                    break;

                case DataType.Constant:
                    m_constantFields.ParseBinaryImage(buffer, startIndex + 2152, length - 2152);
                    break;
                }

                return(FixedLength);
            }

            // Binary image does not have sufficient data.
            return(0);
        }