public static IFlightRawDataExtractor CreateFlightRawDataExtractor(StorageFile file, FlightParameters parameters) { if (file == null) return null; var readStreamTask = file.OpenStreamForReadAsync(); readStreamTask.Wait(); MemoryStream stream = new MemoryStream(102400); byte[] bytes = new byte[readStreamTask.Result.Length]; readStreamTask.Result.Read(bytes, 0, Convert.ToInt32(readStreamTask.Result.Length)); stream.Write(bytes, 0, Convert.ToInt32(readStreamTask.Result.Length)); //Task temp1 = readStreamTask.AsTask(); //temp1.Wait(); //var temp2 = readStreamTask.GetResults(); BinaryReader reader = new BinaryReader(stream); //temp2.AsStreamForRead(1024000)); //readStreamTask.Result); var handler = new FlightDataReadingHandler(reader); //if (parameters != null) //{ // handler.Definition = CreateDefinition(handler.Definition, parameters); //} return handler; }
public FastDataReading( IFlightRawDataExtractor rawDataExtractor, FlightDataEntitiesRT.Flight flight, FlightParameters parameters) { this.m_rawDataExtractor = rawDataExtractor; this.m_flight = flight; this.m_parameters = parameters; }
//DEBUG : 写死机型1,暂时没办法 private static FlightBinaryDataDefinition CreateDefinition( FlightBinaryDataDefinition flightBinaryDataDefinition, FlightParameters parameters) { FlightBinaryDataDefinition definition = new FlightBinaryDataDefinition() { AircraftModel = flightBinaryDataDefinition.AircraftModel, HeaderDefinition = flightBinaryDataDefinition.HeaderDefinition, FrameDefinition = new FlightBinaryDataContentFrameDefinition() { BytesCount = parameters.BytesCount } }; System.Collections.Generic.List<FlightBinaryDataContentSegmentDefinition> defs = new System.Collections.Generic.List<FlightBinaryDataContentSegmentDefinition>(); Dictionary<int, List<FlightParameter>> tempList1 = new Dictionary<int, List<FlightParameter>>(); foreach (var temp1 in parameters.Parameters) { if (tempList1.ContainsKey(temp1.Index)) { tempList1[temp1.Index].Add(temp1); } else { tempList1.Add(temp1.Index, new List<FlightParameter>()); tempList1[temp1.Index].Add(temp1); } } var temp2 = from k in tempList1 orderby k.Key ascending select k; foreach (var p in temp2) { if (p.Value.Count < 2) { foreach (var p2 in p.Value) { FlightBinaryDataContentSegmentDefinition def = new FlightBinaryDataContentSegmentDefinition() { BytesCount = 4, DataTypeStr = p2.ParameterDataType, SegmentName = p2.ParameterID }; defs.Add(def); } } else { var list = from o in p.Value orderby o.SubIndex select new FlightBitDataContentSegmentDefinition() { BitsCount = 1, BytesCount = -1, DataTypeStr = o.ParameterDataType, SegmentName = o.ParameterID }; FlightBinaryDataContentSegmentDefinition def = new FlightBinaryDataContentSegmentDefinition() { BytesCount = 4, DataTypeStr = list.First().DataTypeStr, SegmentName = list.First().SegmentName }; def.BitsDefinition = list.ToArray(); defs.Add(def); } } definition.FrameDefinition.Segments = defs.ToArray(); return definition; }
private static FlightParameters ConvertToRTEntity(FlightParameters parameters) { var result2 = from re in parameters.Parameters where !string.IsNullOrEmpty(re.ParameterID)//不能去掉(NULL)空值,因为可能还没数据解析 orderby re.Index ascending, re.SubIndex ascending select new FlightDataEntitiesRT.FlightParameter() { Caption = re.Caption, Index = re.Index, ParameterDataType = re.ParameterDataType, ParameterID = re.ParameterID, SubIndex = re.SubIndex, ByteIndexes = (from one1 in re.ByteIndexes select new ByteIndex() { Index = one1.Index, SubIndexes = one1.SubIndexes == null ? new FlightDataEntitiesRT.BitIndex[] { } : (from one2 in one1.SubIndexes select new BitIndex() { SubIndex = one2.SubIndex } ).ToArray() }).ToArray() }; var paras = new FlightParameters() { BytesCount = parameters.BytesCount, Parameters = result2.ToArray() }; return paras; }