public RecordMessage ReadHeader(byte[] fileData)
        {
            var record = new RecordMessage()
            {
                MessageSize         = _byteReader.ReadShort(fileData),
                Channel             = _byteReader.ReadByte(fileData).Value,
                MessageType         = _byteReader.ReadByte(fileData).Value,
                IdSequence          = _byteReader.ReadShort(fileData),
                MessageJulianDate   = _byteReader.ReadShort(fileData),
                MessageMilliseconds = _byteReader.ReadInt(fileData),
                SegmentCount        = _byteReader.ReadShort(fileData),
                SegmentNumber       = _byteReader.ReadShort(fileData),
            };

            _dataLogger.Log("Location 1 - at byte location " + _byteReader.Offset);
            _dataLogger.Log(JsonConvert.SerializeObject(record));

            return(record);
        }
Exemplo n.º 2
0
        public RecordMessageRecord ReadMessage31(byte[] fileData)
        {
            RecordMessageRecord recordMessageRecord = new RecordMessageRecord()
            {
                Id              = _byteReader.ReadString(fileData, 4),
                MSeconds        = _byteReader.ReadInt(fileData),
                JulianDate      = _byteReader.ReadShort(fileData),
                RadialNumber    = _byteReader.ReadShort(fileData),
                Azimuth         = _byteReader.ReadFloat(fileData),
                CompressIdx     = _byteReader.ReadByte(fileData).Value,
                Sp              = _byteReader.ReadByte(fileData).Value,
                RadialLength    = _byteReader.ReadShort(fileData),
                ARS             = _byteReader.ReadByte(fileData).Value,
                RS              = _byteReader.ReadByte(fileData).Value,
                ElevationNumber = _byteReader.ReadByte(fileData).Value,
                Cut             = _byteReader.ReadByte(fileData).Value,
                Elevation       = _byteReader.ReadFloat(fileData),
                RSBS            = _byteReader.ReadByte(fileData).Value,
                AIM             = _byteReader.ReadByte(fileData).Value,
                DCount          = _byteReader.ReadShort(fileData),
            };

            _dataLogger.Log("Location 2 - End of RMR - at byte location " + _byteReader.Offset);
            _dataLogger.Log(JsonConvert.SerializeObject(recordMessageRecord));

            return(recordMessageRecord);
        }
Exemplo n.º 3
0
        public RecordMessage ReadRecord(byte[] fileData, int offset)
        {
            _byteReader.Seek(offset);
            _byteReader.Skip(Settings.CTM_HEADER_SIZE);

            var message = _messageHeaderReader.ReadHeader(fileData);

            switch (message.MessageType)
            {
            case 31:
                List <RecordMessage> recordMessages = new List <RecordMessage>();

                var messageRecord = _message31Reader.ReadMessage31(fileData);
                message.Record = messageRecord;

                var dataBlockPointers = _message31Reader.ReadDataBlockPointers(fileData);
                message.Record.DataBlocks = dataBlockPointers;

                var volumeData    = _message31Reader.ParseVolumeData(fileData, offset, dataBlockPointers.DBP1);
                var elevationData = _message31Reader.ParseElevationData(fileData, offset, dataBlockPointers.DBP2);
                var radialData    = _message31Reader.ParseRadialData(fileData, offset, dataBlockPointers.DBP3);

                message.Record.VolumeData    = volumeData;
                message.Record.ElevationData = elevationData;
                message.Record.RadialData    = radialData;

                var reflectivityData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP4);
                if (reflectivityData != null)
                {
                    var reflectivityMomentData = _message31Reader.ParseReflectivityMomentData(fileData, reflectivityData.Offset, reflectivityData.Scale, offset, dataBlockPointers.DBP4);
                    reflectivityData.MomentDataValues = reflectivityMomentData;

                    _dataLogger.Log("Location 7a - End of reflectivity data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + reflectivityData.MomentDataValues.Length + " values");
                }

                var velocityData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP5);
                if (velocityData != null)
                {
                    var velocityMomentData = _message31Reader.ParseVelocityMomentData(fileData, velocityData.Offset, velocityData.Scale, offset, dataBlockPointers.DBP5);
                    velocityData.MomentDataValues = velocityMomentData;

                    _dataLogger.Log("Location 7b - End of reflectivity data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + velocityData.MomentDataValues.Length + " values");
                }

                var spectrumWidthData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP6);
                if (spectrumWidthData != null)
                {
                    var spectrumWidthMomentData = _message31Reader.ParseSpectrumWidthMomentData(fileData, spectrumWidthData.Offset, spectrumWidthData.Scale, offset, dataBlockPointers.DBP6);
                    spectrumWidthData.MomentDataValues = spectrumWidthMomentData;

                    _dataLogger.Log("Location 7c - End of Spectrum Width data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + spectrumWidthData.MomentDataValues + " values");
                }

                var differentialReflectivityData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP7);
                if (differentialReflectivityData != null)
                {
                    var differentialReflectivityMomentData = _message31Reader.ParseDifferentialReflectivityMomentData(fileData, differentialReflectivityData.Offset, differentialReflectivityData.Scale, offset, dataBlockPointers.DBP7);
                    differentialReflectivityData.MomentDataValues = differentialReflectivityMomentData;

                    _dataLogger.Log("Location 7d - End of Differential Reflectivity data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + differentialReflectivityData.MomentDataValues + " values");
                }

                var differentialPhaseData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP8);
                if (differentialPhaseData != null)
                {
                    var differentialPhaseMomentData = _message31Reader.ParseDifferentialPhaseMomentData(fileData, differentialPhaseData.Offset, differentialPhaseData.Scale, offset, dataBlockPointers.DBP8);
                    differentialPhaseData.MomentDataValues = differentialPhaseMomentData;

                    _dataLogger.Log("Location 7e - End of PHI Data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + differentialPhaseData.MomentDataValues);
                }

                var correlationCoefficientData = _message31Reader.ParseMomentData(fileData, offset, dataBlockPointers.DBP9);
                if (correlationCoefficientData != null)
                {
                    var correlationCoefficientMomentData = _message31Reader.ParseCorrelationCoefficientMomentData(fileData, correlationCoefficientData.Offset, correlationCoefficientData.Scale, offset, dataBlockPointers.DBP9);
                    correlationCoefficientData.MomentDataValues = correlationCoefficientMomentData;

                    _dataLogger.Log("Location 7f - End of Correlation Coefficient data - at byte location " + _byteReader.Offset);
                    _dataLogger.Log("Moment Array has " + correlationCoefficientData.MomentDataValues.Length + " values");
                }

                message.Record.ReflectivityData = reflectivityData;
                message.Record.VelocityData     = velocityData;
                message.Record.SpectrumData     = spectrumWidthData;
                message.Record.ZDRData          = differentialReflectivityData;
                // PHI data coming soon...
                message.Record.RhoData = differentialPhaseData;

                break;

            default:
                _dataLogger.Log("Location 8 - Not a Message31 message. Moving on to next message");
                break;
            }

            return(message);
        }