Пример #1
0
        public override IOutputData PullOutputData(IDAQOutputStream stream, TimeSpan duration)
        {
            /*
             * IOuputData will be directed to a device (not an DAQStream) by the controller.
             * Controller should get mapping (device=>data) from the current Epoch instance.
             *
             * Thus the standard PullOuputData will pull from the controller's queue for this
             * device.
             */

            if (duration.Samples(stream.SampleRate) <= 1)
                throw new ExternalDeviceException("Cannot pull less than one sample.");

            try
            {
                IOutputData data = this.Controller.PullOutputData(this, duration);

                return data.DataWithUnits(MeasurementConversionTarget)
                    .DataWithExternalDeviceConfiguration(this, Configuration);
            }
            catch (Exception ex)
            {
                log.DebugFormat("Error pulling data from controller: " + ex.Message);
                throw;
            }
        }
Пример #2
0
        private static IOutputData DataForDuration(TimeSpan blockDuration, IMeasurement sampleRate)
        {
            ulong nSamples = blockDuration.Samples(sampleRate);

            var samples = Enumerable.Range(0, (int)nSamples).Select(i => new Measurement(1, "V")).ToList();

            return new OutputData(samples, sampleRate, false);
        }
Пример #3
0
 private static IEnumerable<IMeasurement> ConstantMeasurementList(TimeSpan blockDuration, IMeasurement srate, IMeasurement value)
 {
     //log.DebugFormat("Generating constant measurment: {0} x {1} samles @ {2}", value, blockDuration.Samples(srate), srate);
     return Enumerable.Range(0, (int)blockDuration.Samples(srate))
         .Select(i => value)
         .ToList();
 }
        public void PullsOutputData()
        {
            var dur1 = new TimeSpan(seqData.Duration.Ticks / 3);
            var pull1 = seqStream.PullOutputData(dur1);

            var dur2 = new TimeSpan(seqData.Duration.Ticks);
            var pull2 = seqStream.PullOutputData(dur2);

            var samples1 = (int)dur1.Samples(seqStream.SampleRate);
            Assert.That(pull1.Data, Is.EqualTo(seqData.Data.Take(samples1).ToList()));

            var samples2 = (int)dur2.Samples(seqStream.SampleRate);
            Assert.That(pull2.Data, Is.EqualTo(seqData.Data.Skip(samples1).Take(samples2).ToList()));
        }