コード例 #1
0
        internal static IdentificationSection BuildFrom(BufferedBinaryReader reader)
        {
            // section 1 octet 1-4 (length of section)
            var length = reader.ReadUInt32();

            var section = reader.ReadUInt8();

            if (section != (int)SectionCode.IdentificationSection)
            {
                return(null);
            }

            // Center  octet 6-7
            var centerCode = reader.ReadUInt16();

            // Center  octet 8-9
            var subCenterCode = reader.ReadUInt16();

            // Parameter master table octet 10
            var masterTableVersion = reader.ReadUInt8();

            // Parameter local table octet 11
            var localTableVersion = reader.ReadUInt8();

            // significanceOfRT octet 12
            var significanceOfRt = reader.ReadUInt8();

            // octets 13-19 (base time of forecast)
            var refTime = reader.ReadDateTime();

            var productStatusCode = reader.ReadUInt8();

            var productTypeCode = reader.ReadUInt8();

            return(new IdentificationSection(
                       length,
                       section,
                       centerCode,
                       subCenterCode,
                       masterTableVersion,
                       localTableVersion,
                       significanceOfRt,
                       refTime,
                       productStatusCode,
                       productTypeCode));
        }
コード例 #2
0
        internal ProductDefinition0008(
            BufferedBinaryReader reader,
            Discipline discipline) : base(reader, discipline)
        {
            OverallTimeIntervalEnd = reader.ReadDateTime();
            RegisterContent(ProductDefinitionContent.OverallTimeIntervalEnd, () => OverallTimeIntervalEnd);

            // 42
            TimeRangeNumber = reader.ReadUInt8();

            // 43-46
            MissingDataValuesTotalNumber = reader.ReadUInt32();

            //47
            StatisticalProcess = reader.ReadUInt8();

            //48
            StatisticalProcessingTimeIncrementType = reader.ReadUInt8();

            //49
            StatisticalProcessingTimeRangeUnit = (TimeRangeUnit)reader.ReadUInt8();

            //50-53
            StatisticalProcessingTimeRangeLength = reader.ReadUInt32();

            var timeRange = CalculateTimeRangeFrom(StatisticalProcessingTimeRangeUnit, StatisticalProcessingTimeRangeLength);

            if (timeRange.HasValue)
            {
                RegisterContent(ProductDefinitionContent.StatisticalProcessingTimeRange, () => timeRange.Value);
            }

            //54
            SuccessiveFieldsIncrementUnit = (TimeRangeUnit)reader.ReadUInt8();

            //55-58
            SuccessiveFieldsTimeIncrement = reader.ReadUInt32();

            var successiveFieldsTimeIncrement = CalculateTimeRangeFrom(SuccessiveFieldsIncrementUnit, SuccessiveFieldsTimeIncrement);

            if (successiveFieldsTimeIncrement.HasValue)
            {
                RegisterContent(ProductDefinitionContent.StatisticalProcessingTimeRange, () => successiveFieldsTimeIncrement.Value);
            }
        }