public Task SaveAsync(RUSDeviceId deviceId, IDictionary <RUSDeviceId, IEnumerable <IDataEntity> > dataPacketFormats, Stream rawDump, Stream uncompressedParsedData, Stream destination, AsyncOperationInfo operationInfo) { return(FlashDump.SaveAsync(deviceId, dataPacketFormats, rawDump, uncompressedParsedData, destination, operationInfo)); }
/// <summary> /// Parses data and saves them to <see cref="FlashDump"/> (if <see cref="FlashDump.HasParsedData"/> set to <see cref="false"/>) /// </summary> /// <param name="dump"></param> /// <param name="rowParser"></param> /// <param name="operationInfo"></param> /// <returns></returns> public static async Task <FlashDumpDataParser> CreateParserAsync(FlashDump dump, IDataPacketParser rowParser, AsyncOperationInfo operationInfo) { if (dump.HasParsedData) { using (var stream = await dump.OpenParsedDataStreamAsync(new StreamParameters(1000), operationInfo)) { var rowsCount = stream.Length / (rowParser.Curves.Length * sizeof(double)); Logger.LogOKEverywhere($"Дамп загружен-NLКоличество строк: {rowsCount}"); return(new FlashDumpDataParser(rowParser.Curves.Length, (int)rowsCount, oi => dump.OpenParsedDataStreamAsync(new StreamParameters(READ_BUFFER_LENGTH), oi))); } } else { return(await CreateParserAsync(new OpenStreamAsyncDelegate[] { dump.OpenRawDataStreamAsync }, rowParser, operationInfo)); } }
public async Task LoadAsync(string dumpPath, AsyncOperationInfo operationInfo) { if (dumpPath != null) { await NetFrameworkUtils.ContinueAtUIThread(); var dump = await FlashDump.OpenAsync(dumpPath, operationInfo); var dataParser = new SectionedDataPacketParser( dump.DataRowDescriptors.Select(ds => new SectionedDataPacketParser.Section( ds.Key, new DataPacketParser(ds.Value))).ToArray()); var dumpReader = await FlashDumpDataParser.CreateParserAsync(dump, dataParser, operationInfo); var rowsReader = await dumpReader.InstantiateReaderAsync(operationInfo); var rowsCollection = new FileMappedPointsRowsReadOnlyCollection(rowsReader); PointsSource = new DataPointsSource(new EnhancedObservableCollection <ICurveInfo>(dataParser.Curves, new CollectionOptions(true)), rowsCollection); } }