public override void Parse(byte[] data, LogRecord record) { record.Header.Name = "RANGE"; var nOfObservations = BitConverter.ToUInt32(data, HeaderLength); for (int idx = 0; idx < nOfObservations; idx++) { var offset = HeaderLength + idx * 44; var tracking = BitConverter.ToUInt32(data, offset + 44); var range = new LogDataRange() { Prn = BitConverter.ToUInt16(data, offset + 4), GloFreq = BitConverter.ToInt16(data, offset + 6), Psr = BitConverter.ToDouble(data, offset + 8), PsrStd = BitConverter.ToSingle(data, offset + 16), Adr = BitConverter.ToDouble(data, offset + 20), AdrStd = BitConverter.ToSingle(data, offset + 28), CNo = BitConverter.ToSingle(data, offset + 36), LockTime = BitConverter.ToSingle(data, offset + 40), NavigationSystem = Util.GetNavigationSystem(tracking), SignalType = Util.GetSignalType(tracking), Tracking = tracking }; if (range.NavigationSystem == NavigationSystem.GLONASS) { range.Prn = Util.GetActualPrn(range.Prn); range.GloFreq = Util.GetActualGlonassFrequency(range.GloFreq); } record.Data.Add(range); } }
public override void Parse(string[] body, LogRecord record) { long nOfObservations = Int64.Parse(body[0]); long offset = 1; long rangeFields = 10; long maxIndex = rangeFields * nOfObservations + offset; while (offset < maxIndex) { var tracking = Convert.ToUInt32(body[offset + 9], 16); var data = new LogDataRange() { Prn = UInt32.Parse(body[offset]), GloFreq = Int32.Parse(body[offset + 1]), Psr = Double.Parse(body[offset + 2], CultureInfo.InvariantCulture), PsrStd = Double.Parse(body[offset + 3], CultureInfo.InvariantCulture), Adr = Double.Parse(body[offset + 4], CultureInfo.InvariantCulture), AdrStd = Double.Parse(body[offset + 5], CultureInfo.InvariantCulture), CNo = Double.Parse(body[offset + 7], CultureInfo.InvariantCulture), LockTime = Double.Parse(body[offset + 8], CultureInfo.InvariantCulture), NavigationSystem = Util.GetNavigationSystem(tracking), SignalType = Util.GetSignalType(tracking), Tracking = tracking }; if (data.NavigationSystem == NavigationSystem.GLONASS) { data.Prn = Util.GetActualPrn(data.Prn); data.GloFreq = Util.GetActualGlonassFrequency(data.GloFreq); } record.Data.Add(data); offset += rangeFields; } }