示例#1
0
        void EndRecording()
        {
            if (_recording)
            {
                System.Diagnostics.Debug.WriteLine("End recording");

                var record = new Record();

                foreach (var input in InputPorts.OfType <NodeSystemLib2.FormatData1D.InputPortData1D>().Where(c => c.Connection != null))
                {
                    var writer = _writers[input];

                    var line = new RecordLineStream1D(
                        DateTime.Now,
                        writer.FirstWritten,
                        writer.LastWritten,
                        GetRelativePath(writer.Path, WorkingDirectory),
                        input.Samplerate
                        );

                    record.Lines.Add(line);
                }

                foreach (var input in InputPorts.OfType <NodeSystemLib2.FormatValue.InputPortValueDouble>().Where(c => c.Connection != null && c != _portEn))
                {
                    var writer = _writers[input];

                    var line = new RecordLineStream2D(
                        DateTime.Now,
                        writer.FirstWritten,
                        writer.LastWritten,
                        GetRelativePath(writer.Path, WorkingDirectory)
                        );

                    record.Lines.Add(line);
                }

                _set.AddRecord(record);
                RecordSetWriter.WriteToFile(_set, System.IO.Path.Combine(WorkingDirectory, "index.lst"));


                foreach (var writer in _writers.Values.Select(v => v.Writer).OfType <IDisposable>())
                {
                    writer.Dispose();
                }
                _writers.Clear();

                _recording = false;
            }
        }
示例#2
0
        private void ReadAll()
        {
            if (!LineMatch(RecordSetWriter.Magic))
            {
                throw new InvalidDataException("Invalid format");
            }

            while (LineMatch(RecordSetWriter.RecordBegin))
            {
                var record = new Record();

                while (LineMatch(RecordSetWriter.LineBegin))
                {
                    var props = new Dictionary <string, string>();

                    while (LinePeek().StartsWith("-", StringComparison.Ordinal))
                    {
                        var line   = LineConsume().Substring(1);
                        var fields = line.Split(new [] { ':' }, 2);
                        props.Add(fields[0].Trim(), fields[1].Trim());
                    }

                    switch (props["Type"])
                    {
                    case "Stream1D":
                        record.Lines.Add(new RecordLineStream1D(props));
                        break;

                    case "Stream2D":
                        record.Lines.Add(new RecordLineStream2D(props));
                        break;

                    default:
                        throw new NotImplementedException("Unknown stream type: " + props["Type"]);
                    }
                }

                _set.AddRecord(record);
            }
        }