示例#1
0
 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));
 }
示例#2
0
        /// <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));
            }
        }
示例#3
0
        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);
            }
        }