Beispiel #1
0
        /// <summary>Saves the specified table.</summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="table">The table.</param>
        public void SaveTable <T>(ITable <T> table) where T : struct
        {
            if (Database != null)
            {
                return;
            }

            var memoryTable = (IMemoryTable <T>)table;

            lock (m_Tables)
            {
                //table was updated ? no -> exit
                if (m_Tables[memoryTable] == memoryTable.SequenceNumber)
                {
                    return;
                }
                //yes, save
                string fullPath = FileSystem.Combine(DataBasePath, memoryTable.Name + ".dat");
                lock (memoryTable)
                {
                    DatWriter.WriteTable(memoryTable, fullPath);
                    m_Tables[memoryTable] = memoryTable.SequenceNumber;
                }
                this.LogInfo("Saved table {0}", memoryTable);
            }
            return;
        }
        public void TestDAT()
        {
            var layout = RowLayout.CreateTyped(typeof(TestStruct));
            var t1     = new TestStruct();

            t1.Init(TimeSpan.MinValue);
            var t2 = new TestStruct();

            t2.Init(TimeSpan.MaxValue);
            var t3 = new TestStruct();

            t3.Init(DateTime.Now.TimeOfDay);
            var ms = new MemoryStream();
            var w  = new DatWriter(layout, ms);

            w.Write(t1);
            w.Write(t2);
            w.Write(t3);
            w.Close();
            var ms2  = new MemoryStream(ms.ToArray());
            var r    = new DatReader(ms2);
            var list = r.ReadList <TestStruct>();

            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(t1, list[0]);
            Assert.AreEqual(t2, list[1]);
            Assert.AreEqual(t3, list[2]);
        }
Beispiel #3
0
        public void StructReadWrite()
        {
            var stream = new MemoryStream();
            var writer = new DatWriter(RowLayout.CreateTyped(typeof(TestStructClean)), stream);

            for (var i = 0; i < 100; i++)
            {
                var t = TestStructClean.Create(i);
                writer.Write(t);
            }
            stream.Seek(0, SeekOrigin.Begin);
            var reader = new DatReader(stream);

            for (var i = 0; i < 100; i++)
            {
                var t = new TestStructClean();
                Assert.IsTrue(reader.ReadRow(true, out t));
                Assert.AreEqual(t, TestStructClean.Create(i));
            }
        }
Beispiel #4
0
        private void SaveClick(object sender, RoutedEventArgs e)
        {
            int begin = int.Parse(BeginField.Text);
            int end   = int.Parse(EndField.Text);

            if (begin < 0)
            {
                begin = 0;
            }

            if (begin >= this.currentSignal.SamplesCount)
            {
                begin = this.currentSignal.SamplesCount - 1;
            }

            if (end < begin)
            {
                end = begin;
            }

            if (end >= this.currentSignal.SamplesCount)
            {
                end = this.currentSignal.SamplesCount - 1;
            }

            BeginField.Text = begin.ToString();
            EndField.Text   = end.ToString();

            var signalToSave = new Signal(this.currentSignal.fileName);

            signalToSave.StartDateTime = this.currentSignal.StartDateTime;
            signalToSave.SamplingFrq   = this.currentSignal.SamplingFrq;

            for (int i = 0; i < this.currentSignal.channels.Count; i++)
            {
                if (checkers[i].IsChecked == true)
                {
                    signalToSave.channels.Add(this.currentSignal.channels[i]);
                }
            }

            Logger.Info($"Tried to save signal {signalToSave}");

            if (signalToSave.channels.Count == 0)
            {
                MessageBox.Show("Не выбрано ни одного канала", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var saveDialog = new SaveFileDialog();

            saveDialog.Filter = "txt files (.txt)|*.txt|wave files (*.wav;*.wave)|*.wav;*.wave|dat files (*.dat)|*.dat";
            if (saveDialog.ShowDialog() == true)
            {
                IWriter writer;
                switch (Path.GetExtension(saveDialog.FileName))
                {
                case ".txt":
                    writer = new TxtWriter();
                    break;

                case ".wav":
                case ".wave":
                    writer = new WaveWriter();
                    break;

                case ".dat":
                    writer = new DatWriter();
                    break;

                default: throw new NotImplementedException();
                }

                File.WriteAllBytes(saveDialog.FileName,
                                   writer.TryWrite(SignalToFileInfo(signalToSave, begin, end)));
            }
        }