/// <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]); }
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)); } }
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))); } }