コード例 #1
0
        public void OpenTest()
        {
            var record = new Record("data/100s");

            using (record)
            {
                record.Open();
                Assert.IsFalse(record.IsNew);
                Assert.AreEqual(" 69 M 1085 1629 x1\n Aldomet, Inderal\nProduced by xform from record 100, beginning at 0:0", record.Info);
                Assert.AreEqual((Frequency)360, record.SamplingFrequency);
                Assert.AreEqual(2, record.Signals.Count);
            }

            Assert.AreEqual(0, record.Signals.Count);
            Assert.IsTrue(record.IsNew);
            Assert.AreEqual(string.Empty, record.Info);
            Assert.AreEqual((Frequency)0, record.SamplingFrequency);
            Assert.AreEqual(0, record.Signals.Count);


            using (record)
            {
                record.Open();
                Assert.IsFalse(record.IsNew);
                Assert.AreEqual(" 69 M 1085 1629 x1", record.Info);
                Assert.AreEqual((Frequency)360, record.SamplingFrequency);
                Assert.AreEqual(2, record.Signals.Count);
            }
        }
コード例 #2
0
        public void SeekTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples     = signal.ReadAll().ToList();
                var expectedFirstSample = expectedSamples[0];
                var expectedLastSample  = expectedSamples[expectedSamples.Count - 1];

                signal.Seek(0);
                Assert.IsFalse(signal.IsEof);
                Assert.AreEqual(expectedFirstSample, signal.ReadNext());

                signal.Seek(signal.Duration - 1);
                Assert.AreEqual(expectedLastSample, signal.ReadNext());

                Assert.IsTrue(signal.IsEof);

                signal.Seek(signal.Duration / 2);

                var restOfSamples = signal.ReadToEnd();
                expectedSamples.RemoveRange(0, signal.Duration / 2);
                Assert.AreEqual(expectedSamples, restOfSamples);
            }
        }
コード例 #3
0
        private void OpenRecordFile(string path)
        {
            if (!this.isWfdbPathSet)
            {
                throw new WfdbPathException("Path to database is not set!");
            }

            try
            {
                string name = Path.GetFileNameWithoutExtension(path);
                this.record = new Record(name);
                record.Open();

                foreach (Signal signal in record.Signals)
                {
                    PointPairList temp = new PointPairList();
                    List <WfdbCsharpWrapper.Sample> samples = signal.ReadAll().ToList();
                    for (int i = 0; i < signal.NumberOfSamples; i++)
                    {
                        temp.Add(i, samples[i]);
                    }

                    this.points.Add(temp);
                }
            }
            catch
            {
                throw;
            }
        }
コード例 #4
0
        private static void UsingWfdbClasses(int frequency)
        {
            try
            {
                Frequency f = frequency;
                Time      t = 0, t0 = 0, t1 = 0;

                using (var record = new Record("data/100s"))
                {
                    record.Open();
                    if (f <= 0)
                    {
                        f = record.SamplingFrequency;
                    }

                    Frequency.InputFrequency = f;
                    t0 = Time.Parse("1");
                    record.Seek(t);
                    t1 = Time.Parse("2");
                    for (t = t0; t <= t1; t++)
                    {
                        Console.WriteLine("{0}\t{1}", record[0].ReadNext(), record[1].ReadNext());
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #5
0
        public void IsEofTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext((int)signal.NumberOfSamples / 2);
                Assert.IsFalse(signal.IsEof);

                signal.ReadAll().ToList();
                Assert.IsTrue(signal.IsEof);

                signal.Seek(0);
                Assert.IsFalse(signal.IsEof);

                signal.Seek((int)signal.NumberOfSamples - 1);
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsTrue(signal.IsEof);
            }
        }
コード例 #6
0
        public void ReadNextTimeTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples = signal.ReadAll().ToList();

                var expectedFirstSample = expectedSamples[0];
                Assert.AreEqual(expectedFirstSample, signal.ReadNext(Time.Zero));
                Assert.AreEqual(signal.InitValue, signal.ReadNext(Time.Zero));

                var  expectedLastSample = expectedSamples[expectedSamples.Count - 1];
                Time lastSampleTime     = signal.Duration - 1;

                Assert.AreEqual(expectedLastSample, signal.ReadNext(lastSampleTime));

                // EOF REACHED
                try
                {
                    signal.ReadNext(signal.Duration + 5);
                    Assert.Fail("InvalidOperationException should have been thrown cause the end of signal has been reached.");
                }
                catch (InvalidOperationException)
                {
                }
            }
        }
コード例 #7
0
        private static void UsingWrapperClasses()
        {
            Frequency f = 0;

            Sample[] v;

            try
            {
                Console.WriteLine("Please enter the sampling frequency");
                var sFrequency = Console.ReadLine();
                f = double.Parse(sFrequency);

                Record r = new Record("data/100s");
                r.Open();

                if (f < 0)
                {
                    f = r.SamplingFrequency;
                }

                List <Signal> s = r.Signals;
                Frequency.InputFrequency = f;

                Time t0 = Time.Parse("1");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
コード例 #8
0
        public void ReadNextTimeCountTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal          = r.Signals.First();
                var expectedSamples = signal.ReadAll().ToList();

                // lower bound
                var expectedFirstSample = expectedSamples[0];
                Assert.AreEqual(expectedFirstSample, signal.ReadNext(Time.Zero, 1).FirstOrDefault());
                Assert.AreEqual(signal.InitValue, signal.ReadNext(Time.Zero, 1).FirstOrDefault());

                // Upper bound
                var  expectedLastSample = expectedSamples[expectedSamples.Count - 1];
                Time lastSampleTime     = signal.Duration - 1;

                Assert.AreEqual(expectedLastSample, signal.ReadNext(lastSampleTime, 1).FirstOrDefault());

                var samples = signal.ReadNext(0, (int)signal.NumberOfSamples).ToList();
                Assert.AreEqual(expectedSamples, samples);
                Assert.IsTrue(signal.IsEof);

                samples = signal.ReadNext(0, (int)signal.NumberOfSamples / 2).ToList();

                expectedSamples.RemoveRange((int)signal.NumberOfSamples / 2, (int)signal.NumberOfSamples / 2);

                Assert.AreEqual(expectedSamples, samples);
                Assert.IsFalse(signal.IsEof);

                try
                {
                    signal.ReadNext(signal.Duration / 2, (int)signal.NumberOfSamples).ToList();
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }

                try
                {
                    signal.ReadNext(signal.Duration + 5, (int)signal.NumberOfSamples).ToList();
                    Assert.Fail("ArgumentException should have been thrown.");
                }
                catch (ArgumentException)
                {
                }

                try
                {
                    signal.ReadNext(signal.Duration / 2, -5).ToList();
                    Assert.Fail("ArgumentException should have been thrown.");
                }
                catch (ArgumentException)
                {
                }
            }
        }
コード例 #9
0
 public void InfoTest()
 {
     using (var record = new Record("data/100s"))
     {
         record.Open();
         Assert.AreNotEqual(null, record.Info);
         Assert.AreEqual(" 69 M 1085 1629 x1\n Aldomet, Inderal\nProduced by xform from record 100, beginning at 0:0", record.Info);
     }
 }
コード例 #10
0
        public void SamplingFrequencyTest()
        {
            var record = new Record("data/100s");

            using (record)
            {
                record.Open();
                Assert.AreEqual((Frequency)360, record.SamplingFrequency); // Get test
                record.SamplingFrequency = 320;                            // set test
                Assert.AreEqual((Frequency)320, record.SamplingFrequency); // Get test
            }
        }
コード例 #11
0
        public void SignalsTest()
        {
            var record = new Record("data/100s");

            using (record)
            {
                record.Open();
                Assert.AreEqual(2, record.Signals.Count);
                Assert.AreEqual("100s.dat", record.Signals[0].FileName);
                Assert.AreEqual("100s.dat", record.Signals[1].FileName);

                Assert.AreEqual("MLII", record.Signals[0].Description);
                Assert.AreEqual("V5", record.Signals[1].Description);

                Assert.AreEqual(21600, record.Signals[0].NumberOfSamples);
                Assert.AreEqual(21600, record.Signals[1].NumberOfSamples);

                Assert.AreEqual(SignalStorageFormat.Sf212Bit, record.Signals[0].Format);
                Assert.AreEqual(SignalStorageFormat.Sf212Bit, record.Signals[1].Format);

                Assert.AreEqual(1, record.Signals[0].SamplesPerFrame);
                Assert.AreEqual(1, record.Signals[1].SamplesPerFrame);

                Assert.AreEqual(Gain.DefaultGain, record.Signals[0].Gain);
                Assert.AreEqual(Gain.DefaultGain, record.Signals[1].Gain);

                Assert.AreEqual(200.0, record.Signals[0].Gain.Value);
                Assert.AreEqual(200.0, record.Signals[1].Gain.Value);

                Assert.AreEqual(11, record.Signals[0].AdcResolution);
                Assert.AreEqual(11, record.Signals[1].AdcResolution);

                Assert.AreEqual(1024, record.Signals[0].AdcZero);
                Assert.AreEqual(1024, record.Signals[1].AdcZero);

                Assert.AreEqual(1024, record.Signals[0].Baseline);
                Assert.AreEqual(1024, record.Signals[1].Baseline);

                Assert.AreEqual(995, record.Signals[0].InitValue);
                Assert.AreEqual(1011, record.Signals[1].InitValue);

                Assert.AreEqual(0, record.Signals[0].Group);
                Assert.AreEqual(0, record.Signals[1].Group);

                Assert.AreEqual(0, record.Signals[0].BlockSize);
                Assert.AreEqual(0, record.Signals[1].BlockSize);

                Assert.AreEqual(21537, record.Signals[0].CheckSum);
                Assert.AreEqual(-3962, record.Signals[1].CheckSum);
            }
        }
コード例 #12
0
 private static void UsingRecord()
 {
     Console.WriteLine("pgain Using Record Class");
     using (var record = new Record("data/100s"))
     {
         record.Open();
         int counter = 0;
         foreach (var signal in record)// or (var signal in record.Signals)
         {
             Console.WriteLine("Signal {0} gain = {1}", counter, signal.Gain);
             counter++;
         }
     }
 }
コード例 #13
0
 private static void UsingRecord()
 {
     Console.WriteLine("pgain Using Record Class");
     using (var record = new Record("data/100s"))
     {
         record.Open();
         int counter = 0;
         foreach (var signal in record)// or (var signal in record.Signals)
         {
             Console.WriteLine("Signal {0} gain = {1}", counter, signal.Gain);
             counter++;
         }
     }
 }
コード例 #14
0
        public void RecordTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                Assert.IsTrue(r.Signals.ToList()[0].Record == r);
                Assert.IsTrue(r.Signals.ToList()[1].Record == r);
            }

            var signals = new List <Signal>(Signal.GetSignals("data/100s"));

            Assert.IsTrue(signals[0].Record == signals[1].Record);
        }
コード例 #15
0
ファイル: exgetvec.cs プロジェクト: xhbmud/WfdbCsharpWrapper
 private static void UsingWrapperClasses2()
 {
     Console.WriteLine("exgetvec Using Wrapper Signal class");
     using (var record = new Record("data/100s"))
     {
         record.Open();
         var samples1 = record.Signals[0].ReadNext(10);
         var samples2 = record.Signals[1].ReadNext(10);
         for (int i = 0; i < 10; i++)
         {
             Console.WriteLine("{0}\t{1}", samples1[i], samples2[i]);
         }
     }
     Wfdb.Quit();
 }
コード例 #16
0
        public void ReadNextCountTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();
                var signal          = r[0];
                var expectedSamples = signal.ReadAll().ToList(); // force a loop over the enumerator to generate the list.

                signal.Seek(0);

                Assert.AreEqual(new List <Sample>(), signal.ReadNext(0));


                var samples = signal.ReadNext((int)signal.NumberOfSamples); // or simply signal.Duration
                Assert.AreEqual(expectedSamples, samples);

                // we reached the end of signal.
                try
                {
                    signal.ReadNext(101); // some mandatory number
                    Assert.Fail("InvalidOperationException should have been thrown.");
                }
                catch (InvalidOperationException)
                {
                }

                signal.Seek(signal.Duration / 2);

                try
                {
                    signal.ReadNext((int)signal.NumberOfSamples);
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }

                try
                {
                    signal.ReadNext(-5);
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }
            }
        }
コード例 #17
0
        public void ReadAllTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                Assert.AreEqual(signal.NumberOfSamples, signal.ReadAll().Count());
                Assert.IsTrue(signal.IsEof);

                // Recall
                Assert.AreEqual(signal.NumberOfSamples, signal.ReadAll().Count());
                Assert.IsTrue(signal.IsEof);
            }
        }
コード例 #18
0
        public void InputFrequencyTest()
        {
            // Before opening any record
            Assert.IsTrue(Frequency.InputFrequency == 0);

            Frequency.InputFrequency = 320; // positive
            Assert.IsTrue(Frequency.InputFrequency == 0);


            // Opening some record
            using (Record r = new Record("data/100s"))
            {
                r.Open();
                Frequency.InputFrequency = 320;
                Assert.IsTrue(Frequency.InputFrequency == 320);
            }
        }
コード例 #19
0
ファイル: exgetvec.cs プロジェクト: xhbmud/WfdbCsharpWrapper
        private static void UsingWrapperClasses3()
        {
            Console.WriteLine("exgetvec Using Wrapper Signal class and Signal.Seek Method");
            using (var record = new Record("data/100s"))
            {
                record.Open();
                var samples1 = record.Signals[0].ReadNext(10);

                record.Signals[1].Seek(10); // moving the reading pointer of the second signal by ten positions
                var samples2 = record.Signals[1].ReadNext(10);
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("{0}\t{1}", samples1[i], samples2[i]);
                }
            }
            Wfdb.Quit();
        }
コード例 #20
0
        public void DisposeTest()
        {
            var record = new Record("data/100s");

            record.Open();
            Assert.IsFalse(record.IsNew);
            //Assert.AreEqual(" 69 M 1085 1629 x1", record.Info);
            Assert.AreEqual((Frequency)360, record.SamplingFrequency);
            Assert.AreEqual(2, record.Signals.Count);

            record.Dispose();

            Assert.AreEqual(0, record.Signals.Count);
            Assert.IsTrue(record.IsNew);
            Assert.AreEqual(string.Empty, record.Info);
            Assert.AreEqual((Frequency)0, record.SamplingFrequency);
            Assert.AreEqual(0, record.Signals.Count);
        }
コード例 #21
0
        public void DisposeTest()
        {
            var record = new Record("data/100s");

            record.Open();
            Assert.IsFalse(record.IsNew);
            //Assert.AreEqual(" 69 M 1085 1629 x1", record.Info);
            Assert.AreEqual((Frequency)360, record.SamplingFrequency);
            Assert.AreEqual(2, record.Signals.Count());

            record.Dispose();

            Assert.AreEqual(0, record.Signals.Count());
            Assert.IsTrue(record.IsNew);
            Assert.AreEqual(string.Empty, record.Info);
            Assert.AreEqual((Frequency)0, record.SamplingFrequency);
            Assert.AreEqual(0, record.Signals.Count());
        }
コード例 #22
0
        public void IndexerTest()
        {
            var record = new Record("data/100s");
            using (record)
            {
                record.Open();
                Assert.AreEqual(record.Signals.ToList()[0], record[0]);
                Assert.AreEqual(record.Signals.ToList()[1], record[1]);
            }

            try
            {
                var signal = record[0];
                Assert.Fail("IndexOutOfRangeException should have been thrown");
            }
            catch (ArgumentOutOfRangeException)
            {
            }
        }
コード例 #23
0
ファイル: exgetvec.cs プロジェクト: xhbmud/WfdbCsharpWrapper
        private static void UsingWrapperClasses1()
        {
            Console.WriteLine("exgetvec Using Wrapper Record Class");
            using (var record = new Record("data/100s"))
            {
                record.Open();

                var samples = record.GetSamples(10);
                foreach (var s in samples)
                {
                    for (int i = 0; i < s.Length; i++)
                    {
                        Console.Write(string.Format("{0}\t", s[i]));
                    }
                    Console.WriteLine();
                }
            }

            Wfdb.Quit();
        }
コード例 #24
0
        public void IndexerTest()
        {
            var record = new Record("data/100s");

            using (record)
            {
                record.Open();
                Assert.AreEqual(record.Signals[0], record[0]);
                Assert.AreEqual(record.Signals[1], record[1]);
            }

            try
            {
                var signal = record[0];
                Assert.Fail("IndexOutOfRangeException should have been thrown");
            }
            catch (ArgumentOutOfRangeException)
            {
            }
        }
コード例 #25
0
        public static void UsingWrapperClasses()
        {
            var record = new Record("data/100s");

            record.Open();

            Console.WriteLine("Record Name : " + record.Name);
            Console.WriteLine("Record Info : " + record.Info);
            Console.WriteLine("Record's Sampling Frequency : " + record.SamplingFrequency);

            Console.WriteLine("Available signals.");

            foreach (Signal signal in record.Signals)
            {
                Console.WriteLine("=====================================");
                Console.WriteLine("Signal's Name : " + signal.FileName);
                Console.WriteLine("Signal's Description : " + signal.Description);
                Console.WriteLine("Signal's Number of samples : " + signal.NumberOfSamples);
                Console.WriteLine("Signal's First Sample : " + signal.InitValue);

                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Showing the first 10 samples of the signal");
                Console.WriteLine("------------------------------------------");

                List <Sample> samples = signal.ReadNext(10).ToList();

                for (int i = 0; i < samples.Count; i++)
                {
                    Console.WriteLine("Sample " + i + " Value (adu) = " + samples[i].Adu);
                    Console.WriteLine("             Value (microvolt) = " + samples[i].ToMicrovolts());
                    Console.WriteLine("             Value (millivolt) = " + samples[i].ToPhys());
                }

                Console.WriteLine("--------------------------------------");

                Console.WriteLine("=====================================");
            }


            record.Dispose();
        }
コード例 #26
0
        public static void UsingWrapperClasses()
        {
            var record = new Record("data/100s");
            record.Open();

            Console.WriteLine("Record Name : " + record.Name);
            Console.WriteLine("Record Info : " + record.Info);
            Console.WriteLine("Record's Sampling Frequency : " + record.SamplingFrequency);

            Console.WriteLine("Available signals.");

            foreach (Signal signal in record.Signals)
            {

                Console.WriteLine("=====================================");
                Console.WriteLine("Signal's Name : " + signal.FileName);
                Console.WriteLine("Signal's Description : " + signal.Description);
                Console.WriteLine("Signal's Number of samples : " + signal.NumberOfSamples);
                Console.WriteLine("Signal's First Sample : " + signal.InitValue);

                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Showing the first 10 samples of the signal");
                Console.WriteLine("------------------------------------------");

                List<Sample> samples = signal.ReadNext(10).ToList();

                for (int i = 0; i < samples.Count; i++)
                {
                    Console.WriteLine("Sample " + i + " Value (adu) = " + samples[i].Adu);
                    Console.WriteLine("             Value (microvolt) = " + samples[i].ToMicrovolts());
                    Console.WriteLine("             Value (millivolt) = " + samples[i].ToPhys());
                }

                Console.WriteLine("--------------------------------------");

                Console.WriteLine("=====================================");
            }

            record.Dispose();
        }
コード例 #27
0
        public void ReadToEndTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal          = r.Signals.First();
                var expectedSamples = signal.ReadAll().ToList();

                signal.Seek(0);

                Assert.AreEqual(expectedSamples, signal.ReadToEnd());
                Assert.IsTrue(signal.IsEof);

                Assert.AreEqual(new List <Sample>(), signal.ReadToEnd()); // no more samples to read

                signal.Seek(signal.Duration / 2);
                var samples = signal.ReadToEnd();
                expectedSamples.RemoveRange(0, signal.Duration / 2);
                Assert.AreEqual(expectedSamples, samples);
            }
        }
コード例 #28
0
        public void ReadNextTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                Assert.AreEqual(signal.InitValue, signal.ReadNext());
                Assert.IsFalse(signal.IsEof);

                signal.Seek(signal.Duration - 1);
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsTrue(signal.IsEof);

                try
                {
                    signal.ReadNext();
                    Assert.Fail("InvalidOperationException should have been thrown, we reached the end of the signal.");
                }
                catch (InvalidOperationException)
                {
                }

                signal.Seek(0);
                var samples = new List <Sample>();
                while (!signal.IsEof)
                {
                    samples.Add(signal.ReadNext());
                }

                Assert.IsTrue(signal.IsEof);
                Assert.AreEqual(signal.ReadAll(), samples);
            }
        }
コード例 #29
0
 private void extract_btn_Click(object sender, EventArgs e)
 {
     if (extractFileDialog.ShowDialog() == DialogResult.OK)
     {
         try
         {
             File.WriteAllText(
                 extractFileDialog.FileName,
                 _recordFiles.Select(
                     path =>
                     RecordPropertyExtractor.PropertyValues(Record.Open(path)).Select(prop => prop.ToString()).Aggregate((prop1, prop2) => prop1 + "," + prop2)
                     ).Aggregate((obj1, obj2) => obj1 + "\n" + obj2)
                 );
         }
         catch (SerializationException)
         {
             MessageBox.Show("Can't open files, one of them is not a record", "Can't open files",
                             MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
         MessageBox.Show("Property extraction complete", "Done",
                         MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }
コード例 #30
0
        public void SeekTest()
        {
            // Testing On Signal's Samples
            using (var record = new Record("data/100s"))
            {
                record.Open();
                var expectedSignal1Samples0 = record[0].ReadNext(10);  // read 10 samples of the first 10
                var expectedSignal2Samples0 = record[1].ReadNext(10);  // read 10 samples of the first 10

                record.Signals[0].Seek(10);                            // advance the 1st pointer by ten samples
                var expectedSignal1Samples10 = record[0].ReadNext(10); // read 10 samples after the first 10 samples

                record.Signals[1].Seek(10);                            // advance the 1st pointer by ten samples
                var expectedSignal2Samples10 = record[1].ReadNext(10); // read 10 samples after the first 10 samples

                record.Seek(0);
                Assert.AreEqual(expectedSignal1Samples0, record[0].ReadNext(10));
                Assert.AreEqual(expectedSignal2Samples0, record[1].ReadNext(10));

                record.Seek(10);
                Assert.AreEqual(expectedSignal1Samples10, record[0].ReadNext(10));
                Assert.AreEqual(expectedSignal2Samples10, record[1].ReadNext(10));
            }
        }
コード例 #31
0
        public void IndexerTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples = signal.ReadAll().ToList();
                for (int i = 0; i < expectedSamples.Count; i++)
                {
                    Assert.AreEqual(expectedSamples[i], signal[i]);
                }

                try
                {
                    var sample = signal[signal.Duration + 5];
                    Assert.Fail("InvalidOperationException should have been thrown.");
                }
                catch (InvalidOperationException)
                {
                }
            }
        }
コード例 #32
0
        public void ReadNextCountTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();
                var signal = r[0];
                var expectedSamples = signal.ReadAll().ToList(); // force a loop over the enumerator to generate the list.

                signal.Seek(0);

                Assert.AreEqual(new List<Sample>(), signal.ReadNext(0));

                var samples = signal.ReadNext((int)signal.NumberOfSamples); // or simply signal.Duration
                Assert.AreEqual(expectedSamples, samples);

                // we reached the end of signal.
                try
                {
                    signal.ReadNext(101); // some mandatory number
                    Assert.Fail("InvalidOperationException should have been thrown.");
                }
                catch (InvalidOperationException)
                {
                }

                signal.Seek(signal.Duration/2);

                try
                {
                    signal.ReadNext((int) signal.NumberOfSamples);
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }

                try
                {
                    signal.ReadNext(-5);
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }
            }
        }
コード例 #33
0
        public void SeekTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples = signal.ReadAll().ToList();
                var expectedFirstSample = expectedSamples[0];
                var expectedLastSample = expectedSamples[expectedSamples.Count - 1];

                signal.Seek(0);
                Assert.IsFalse(signal.IsEof);
                Assert.AreEqual(expectedFirstSample, signal.ReadNext());

                signal.Seek(signal.Duration - 1);
                Assert.AreEqual(expectedLastSample, signal.ReadNext());

                Assert.IsTrue(signal.IsEof);

                signal.Seek(signal.Duration / 2);

                var restOfSamples = signal.ReadToEnd();
                expectedSamples.RemoveRange(0, signal.Duration / 2);
                Assert.AreEqual(expectedSamples, restOfSamples);
            }
        }
コード例 #34
0
        public void RecordTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                Assert.IsTrue(r.Signals.ToList()[0].Record == r);
                Assert.IsTrue(r.Signals.ToList()[1].Record == r);
            }

            var signals = new List<Signal>(Signal.GetSignals("data/100s"));
            Assert.IsTrue(signals[0].Record == signals[1].Record);
        }
コード例 #35
0
        public void ReadNextTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                Assert.AreEqual(signal.InitValue, signal.ReadNext());
                Assert.IsFalse(signal.IsEof);

                signal.Seek(signal.Duration - 1);
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsTrue(signal.IsEof);

                try
                {
                    signal.ReadNext();
                    Assert.Fail("InvalidOperationException should have been thrown, we reached the end of the signal.");
                }
                catch (InvalidOperationException)
                {
                }

                signal.Seek(0);
                var samples = new List<Sample>();
                while (!signal.IsEof)
                {
                    samples.Add(signal.ReadNext());
                }

                Assert.IsTrue(signal.IsEof);
                Assert.AreEqual(signal.ReadAll(), samples);
            }
        }
コード例 #36
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            string inword;
            int    cnt       = 0;
            int    totCnt    = 0;
            int    sendCnt   = 0;
            int    readCnt   = 0;
            int    iteration = 0;

            btnStart.Enabled = false;
            btnStop.Enabled  = true;
            ////using (var record = new Record("c:\\users\\Al\\Dropbox\\Medical Projects\\ECG Simulator\\EcgSim\\EcgSim\\data\\100s"))
            using (var record = new Record("data/aami-ec13/aami3a"))


            //using (var record = new Record(txtFile.Text.Substring(2, txtFile.Text.Length - 6)))
            {
                record.Open();
                //next line added by Al as test
                Frequency.InputFrequency = 125;

                var samples = record.GetSamples(1000);
                int loop    = 0;
                int val;

                string outword;
                // serOut.BaudRate = 38400;
                serOut.BaudRate = 115200;
                serOut.Open();

                Console.Write("Ser wBuf Size ");
                Console.WriteLine(serOut.WriteBufferSize);
                Console.Write("Ser rBuf Size ");
                Console.WriteLine(serOut.ReadBufferSize);

                Console.WriteLine("Iteration " + iteration);

                while (iteration++ < 100)
                {
                    foreach (var s in samples)
                    {
                        for (int i = 0; i < s.Length; i++)
                        {
                            loop++;
                            //   Console.WriteLine(loop);
                            //Console.Write(s[i].ToString());
                            //Console.Write(string.Format("D{0000}\t", s[i]));
                            //real         val = s[i];       // real

                            //if ((loop == 1) || (loop == 1000))
                            //    Console.WriteLine("BorE " + s[i]);
                            val = (s[i] - 1950) * 10;
                            if (val > 4096)
                            {
                                val = 4096;
                            }
                            if (val < 0)
                            {
                                val = 0;
                            }
                            //   val = loop;

                            outword = "D" + val.ToString("0000");
                            serOut.Write(outword);
                            //    Console.WriteLine(outword);


                            if ((readCnt = serOut.BytesToRead) > 0)
                            {
                                //     Console.Write("rCnt:");
                                //     Console.WriteLine(readCnt);
                                inword  = serOut.ReadLine();
                                cnt     = inword.Count(c => c == '>');
                                totCnt += cnt;

                                Console.Write(inword);
#if VERBOSE
                                Console.Write("$");
                                Console.Write(totCnt);
                                Console.Write("$c");
                                Console.WriteLine(sendCnt);
#endif
                                Console.Write("]");
                                //   Console.WriteLine(cnt);
                                //  Thread.Sleep(1);
                            }
                            else
                            {
                                Console.WriteLine(",");
                                Thread.Sleep(1);
                            }
                        }
                        Console.WriteLine();
                        sendCnt++;

                        do
                        {
                            if ((readCnt = serOut.BytesToRead) > 0)
                            {
                                // Console.Write("rCnt:");
                                // Console.WriteLine(readCnt);
                                Console.Write("[");

                                inword = serOut.ReadLine();

                                cnt     = inword.Count(c => c == '>');
                                totCnt += cnt;

                                Console.Write(inword);
#if VERBOSE
                                Console.Write("|");
                                Console.Write(totCnt);
                                Console.Write("|c");
                                Console.WriteLine(sendCnt);
                                Console.WriteLine(cnt);
#endif
                                Console.Write("]");
                                Console.Write(totCnt);
                                //  Console.Write("|c");
                                //  Console.WriteLine(cnt);
                                //    Thread.Sleep(1);
                            }
                            else
                            {
                                Console.Write(".");
                                Thread.Sleep(1);
                            }
                        } while ((sendCnt - totCnt) > 30);
                    }

                    Application.DoEvents();
                    if (btnStart.Enabled)
                    {
                        break;
                    }
                }
            }

            // Wait for final bytes to drain
            do
            {
                if ((readCnt = serOut.BytesToRead) > 0)
                {
                    Console.Write("rCnt:");
                    Console.WriteLine(readCnt);
                    inword = serOut.ReadLine();

                    cnt     = inword.Count(c => c == '>');
                    totCnt += cnt;
                    Console.Write(inword);
                    Console.Write("-");
                    Console.Write(totCnt);
                    Console.Write("-");
                    Console.WriteLine(sendCnt);
                    Thread.Sleep(10);
                }
                else
                {
                    Console.WriteLine("No1");
                    Thread.Sleep(1000);
                }
            } while ((sendCnt - totCnt) > 0);
            Console.WriteLine(cnt);
            Console.WriteLine("End 1");
            if ((readCnt = serOut.BytesToRead) > 0)
            {
                inword = serOut.ReadLine();
                Console.Write(inword);
            }
            else
            {
                Console.WriteLine("No2");
                Thread.Sleep(1000);
            }


            Thread.Sleep(1000);
            Console.WriteLine("End 2");
            if ((readCnt = serOut.BytesToRead) > 0)
            {
                inword = serOut.ReadLine();
                Console.Write(inword);
            }
            else
            {
                Console.WriteLine("No3.");
                Thread.Sleep(1000);
            }

            serOut.Close();
            btnStart.Enabled = true;
            btnStop.Enabled  = false;
            Wfdb.Quit();
        }
コード例 #37
0
        public void SeekTest()
        {
            // Testing On Signal's Samples
            using (var record = new Record("data/100s"))
            {
                record.Open();
                var expectedSignal1Samples0 = record[0].ReadNext(10); // read 10 samples of the first 10
                var expectedSignal2Samples0 = record[1].ReadNext(10); // read 10 samples of the first 10

                record.Signals.First().Seek(10); // advance the 1st pointer by ten samples
                var expectedSignal1Samples10 = record[0].ReadNext(10); // read 10 samples after the first 10 samples

                record.Signals.Skip(1).First().Seek(10); // advance the 1st pointer by ten samples
                var expectedSignal2Samples10 = record[1].ReadNext(10); // read 10 samples after the first 10 samples

                record.Seek(0);
                Assert.AreEqual(expectedSignal1Samples0, record[0].ReadNext(10));
                Assert.AreEqual(expectedSignal2Samples0, record[1].ReadNext(10));

                record.Seek(10);
                Assert.AreEqual(expectedSignal1Samples10, record[0].ReadNext(10));
                Assert.AreEqual(expectedSignal2Samples10, record[1].ReadNext(10));
            }
        }
コード例 #38
0
        public void ReadNextTimeCountTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                var expectedSamples = signal.ReadAll().ToList();

                // lower bound
                var expectedFirstSample = expectedSamples[0];
                Assert.AreEqual(expectedFirstSample, signal.ReadNext(Time.Zero, 1).FirstOrDefault());
                Assert.AreEqual(signal.InitValue, signal.ReadNext(Time.Zero, 1).FirstOrDefault());

                // Upper bound
                var expectedLastSample = expectedSamples[expectedSamples.Count - 1];
                Time lastSampleTime = signal.Duration - 1;

                Assert.AreEqual(expectedLastSample, signal.ReadNext(lastSampleTime, 1).FirstOrDefault());

                var samples = signal.ReadNext(0, (int)signal.NumberOfSamples).ToList();
                Assert.AreEqual(expectedSamples, samples);
                Assert.IsTrue(signal.IsEof);

                samples = signal.ReadNext(0, (int)signal.NumberOfSamples / 2).ToList();

                expectedSamples.RemoveRange((int)signal.NumberOfSamples / 2, (int)signal.NumberOfSamples / 2);

                Assert.AreEqual(expectedSamples, samples);
                Assert.IsFalse(signal.IsEof);

                try
                {
                    signal.ReadNext(signal.Duration / 2, (int)signal.NumberOfSamples).ToList();
                    Assert.Fail("ArgumentOutOfRangeException should have been thrown.");
                }
                catch (ArgumentOutOfRangeException)
                {
                }

                try
                {
                    signal.ReadNext(signal.Duration + 5, (int)signal.NumberOfSamples).ToList();
                    Assert.Fail("ArgumentException should have been thrown.");
                }
                catch (ArgumentException)
                {
                }

                try
                {
                    signal.ReadNext(signal.Duration / 2, -5).ToList();
                    Assert.Fail("ArgumentException should have been thrown.");
                }
                catch (ArgumentException)
                {
                }
            }
        }
コード例 #39
0
        private static void UsingWfdbClasses(int frequency)
        {
            try
            {
                Frequency f = frequency;
                Time t = 0, t0 = 0, t1 = 0;

                using (var record = new Record("data/100s"))
                {
                    record.Open();
                    if (f <= 0)
                        f = record.SamplingFrequency;

                    Frequency.InputFrequency = f;
                    t0 = Time.Parse("1");
                    record.Seek(t);
                    t1 = Time.Parse("2");
                    for (t = t0; t <= t1; t++)
                    {
                        Console.WriteLine("{0}\t{1}", record[0].ReadNext(), record[1].ReadNext());
                    }

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #40
0
        public void ReadAllTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                Assert.AreEqual(signal.NumberOfSamples, signal.ReadAll().Count());
                Assert.IsTrue(signal.IsEof);

                // Recall
                Assert.AreEqual(signal.NumberOfSamples, signal.ReadAll().Count());
                Assert.IsTrue(signal.IsEof);
            }
        }
コード例 #41
0
        private static void UsingWrapperClasses1()
        {
            Console.WriteLine("exgetvec Using Wrapper Record Class");
            using (var record = new Record("data/100s"))
            {
                record.Open();

                var samples = record.GetSamples(10);
                foreach (var s in samples)
                {
                    for (int i = 0; i < s.Length; i++)
                    {
                        Console.Write(string.Format("{0}\t", s[i]));
                    }
                    Console.WriteLine();
                }
            }

            Wfdb.Quit();
        }
コード例 #42
0
 private static void UsingWrapperClasses2()
 {
     Console.WriteLine("exgetvec Using Wrapper Signal class");
     using (var record = new Record("data/100s"))
     {
         record.Open();
         var samples1 = record.Signals.ToList()[0].ReadNext(10).ToList();
         var samples2 = record.Signals.ToList()[1].ReadNext(10).ToList();
         for (int i = 0; i < 10; i++)
         {
             Console.WriteLine("{0}\t{1}", samples1[i], samples2[i]);
         }
     }
     Wfdb.Quit();
 }
コード例 #43
0
        public void IsEofTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext((int)signal.NumberOfSamples / 2);
                Assert.IsFalse(signal.IsEof);

                signal.ReadAll().ToList();
                Assert.IsTrue(signal.IsEof);

                signal.Seek(0);
                Assert.IsFalse(signal.IsEof);

                signal.Seek((int)signal.NumberOfSamples - 1);
                Assert.IsFalse(signal.IsEof);

                signal.ReadNext();
                Assert.IsTrue(signal.IsEof);
            }
        }
コード例 #44
0
        public void OpenTest()
        {
            var record = new Record("data/100s");
            using (record)
            {
                record.Open();
                Assert.IsFalse(record.IsNew);
                Assert.AreEqual(" 69 M 1085 1629 x1\n Aldomet, Inderal\nProduced by xform from record 100, beginning at 0:0", record.Info);
                Assert.AreEqual((Frequency)360, record.SamplingFrequency);
                Assert.AreEqual(2, record.Signals.Count());
            }

            Assert.AreEqual(0, record.Signals.Count());
            Assert.IsTrue(record.IsNew);
            Assert.AreEqual(string.Empty, record.Info);
            Assert.AreEqual((Frequency)0, record.SamplingFrequency);
            Assert.AreEqual(0, record.Signals.Count());

            using (record)
            {
                record.Open();
                Assert.IsFalse(record.IsNew);
                Assert.AreEqual(" 69 M 1085 1629 x1\n Aldomet, Inderal\nProduced by xform from record 100, beginning at 0:0", record.Info);
                Assert.AreEqual((Frequency)360, record.SamplingFrequency);
                Assert.AreEqual(2, record.Signals.Count());
            }
        }
コード例 #45
0
        public void SignalsTest()
        {
            var record = new Record("data/100s");
            using (record)
            {
                record.Open();
                Assert.AreEqual(2, record.Signals.Count());
                Assert.AreEqual("100s.dat", record.Signals.ToList()[0].FileName);
                Assert.AreEqual("100s.dat", record.Signals.ToList()[1].FileName);

                Assert.AreEqual("MLII", record.Signals.ToList()[0].Description);
                Assert.AreEqual("V5", record.Signals.ToList()[1].Description);

                Assert.AreEqual(21600, record.Signals.ToList()[0].NumberOfSamples);
                Assert.AreEqual(21600, record.Signals.ToList()[1].NumberOfSamples);

                Assert.AreEqual(SignalStorageFormat.Sf212Bit, record.Signals.ToList()[0].Format);
                Assert.AreEqual(SignalStorageFormat.Sf212Bit, record.Signals.ToList()[1].Format);

                Assert.AreEqual(1, record.Signals.ToList()[0].SamplesPerFrame);
                Assert.AreEqual(1, record.Signals.ToList()[1].SamplesPerFrame);

                Assert.AreEqual(Gain.DefaultGain, record.Signals.ToList()[0].Gain);
                Assert.AreEqual(Gain.DefaultGain, record.Signals.ToList()[1].Gain);

                Assert.AreEqual(200.0, record.Signals.ToList()[0].Gain.Value);
                Assert.AreEqual(200.0, record.Signals.ToList()[1].Gain.Value);

                Assert.AreEqual(11, record.Signals.ToList()[0].AdcResolution);
                Assert.AreEqual(11, record.Signals.ToList()[1].AdcResolution);

                Assert.AreEqual(1024, record.Signals.ToList()[0].AdcZero);
                Assert.AreEqual(1024, record.Signals.ToList()[1].AdcZero);

                Assert.AreEqual(1024, record.Signals.ToList()[0].Baseline);
                Assert.AreEqual(1024, record.Signals.ToList()[1].Baseline);

                Assert.AreEqual(995, record.Signals.ToList()[0].InitValue);
                Assert.AreEqual(1011, record.Signals.ToList()[1].InitValue);

                Assert.AreEqual(0, record.Signals.ToList()[0].Group);
                Assert.AreEqual(0, record.Signals.ToList()[1].Group);

                Assert.AreEqual(0, record.Signals.ToList()[0].BlockSize);
                Assert.AreEqual(0, record.Signals.ToList()[1].BlockSize);

                Assert.AreEqual(21537, record.Signals.ToList()[0].CheckSum);
                Assert.AreEqual(-3962, record.Signals.ToList()[1].CheckSum);

            }
        }
コード例 #46
0
        public void ReadNextTimeTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples = signal.ReadAll().ToList();

                var expectedFirstSample = expectedSamples[0];
                Assert.AreEqual(expectedFirstSample, signal.ReadNext(Time.Zero));
                Assert.AreEqual(signal.InitValue, signal.ReadNext(Time.Zero));

                var expectedLastSample = expectedSamples[expectedSamples.Count - 1];
                Time lastSampleTime = signal.Duration - 1;

                Assert.AreEqual(expectedLastSample, signal.ReadNext(lastSampleTime));

                // EOF REACHED
                try
                {
                    signal.ReadNext(signal.Duration + 5);
                    Assert.Fail("InvalidOperationException should have been thrown cause the end of signal has been reached.");
                }
                catch (InvalidOperationException)
                {
                }
            }
        }
コード例 #47
0
 public void SamplingFrequencyTest()
 {
     var record = new Record("data/100s");
     using (record)
     {
         record.Open();
         Assert.AreEqual((Frequency)360, record.SamplingFrequency); // Get test
         record.SamplingFrequency = 320; // set test
         Assert.AreEqual((Frequency)320, record.SamplingFrequency); // Get test
     }
 }
コード例 #48
0
        public void IndexerTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                Assert.IsFalse(signal.IsEof);
                var expectedSamples = signal.ReadAll().ToList();
                for (int i = 0; i < expectedSamples.Count; i++)
                {
                    Assert.AreEqual(expectedSamples[i], signal[i]);
                }

                try
                {
                    var sample = signal[signal.Duration + 5];
                    Assert.Fail("InvalidOperationException should have been thrown.");
                }
                catch (InvalidOperationException)
                {
                }
            }
        }
コード例 #49
0
 public void InfoTest()
 {
     using (var record = new Record("data/100s"))
     {
         record.Open();
         Assert.AreNotEqual(null, record.Info);
         Assert.AreEqual(" 69 M 1085 1629 x1\n Aldomet, Inderal\nProduced by xform from record 100, beginning at 0:0", record.Info);
     }
 }
コード例 #50
0
        private static void UsingWrapperClasses3()
        {
            Console.WriteLine("exgetvec Using Wrapper Signal class and Signal.Seek Method");
            using (var record = new Record("data/100s"))
            {
                record.Open();
                var samples1 = record.Signals.First().ReadNext(10).ToList();

                record.Signals.Skip(1).First().Seek(10); // moving the reading pointer of the second signal by ten positions
                var samples2 = record.Signals.Skip(1).First().ReadNext(10).ToList();
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("{0}\t{1}", samples1[i], samples2[i]);
                }
            }
            Wfdb.Quit();
        }
コード例 #51
0
        public void ReadToEndTest()
        {
            using (var r = new Record("data/100s"))
            {
                r.Open();

                var signal = r.Signals.First();
                var expectedSamples = signal.ReadAll().ToList();

                signal.Seek(0);

                Assert.AreEqual(expectedSamples, signal.ReadToEnd());
                Assert.IsTrue(signal.IsEof);

                Assert.AreEqual(new List<Sample>(), signal.ReadToEnd()); // no more samples to read

                signal.Seek(signal.Duration/2);
                var samples = signal.ReadToEnd();
                expectedSamples.RemoveRange(0, signal.Duration/2);
                Assert.AreEqual(expectedSamples, samples);
            }
        }
コード例 #52
0
        public void InputFrequencyTest()
        {
            // Before opening any record
            Assert.IsTrue(Frequency.InputFrequency == 0);

            Frequency.InputFrequency = 320; // positive
            Assert.IsTrue(Frequency.InputFrequency == 0);

            // Opening some record
            using (Record r = new Record("data/100s"))
            {
                r.Open();
                Frequency.InputFrequency = 320;
                Assert.IsTrue(Frequency.InputFrequency == 320);
            }
        }
コード例 #53
0
 /// <summary>
 ///   Retrieves a single record from the dataset.
 /// </summary>
 ///
 /// <param name="record">A record from the dataset.</param>
 ///
 public Signal GetSignal(Record record)
 {
     return(record.Open(this.webClient, this.basePath));
 }