Exemplo n.º 1
0
 public void Dispose()
 {
     pipeCanceller.Dispose();
     if (_writeThread != null)
     {
         _writeThread.Dispose();
         _writeThread = null;
     }
     if (_readThread != null)
     {
         _readThread.Dispose();
         _readThread = null;
     }
     if (_chModeTasks != null)
     {
         if (_chModeTasks[0] != null)
         {
             _chModeTasks[0].Dispose();
             _chModeTasks[0] = null;
         }
         if (_chModeTasks.Length > 1 && _chModeTasks[1] != null)
         {
             _chModeTasks[1].Dispose();
             _chModeTasks[1] = null;
         }
         _chModeTasks   = null;
         _chModeWriters = null;
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Stops all acquisition and generation
        /// </summary>
        public void Stop()
        {
            if (!IsRunning)
            {
                return;
            }
            _writeThreadReady.Reset();
            if (_writeThread != null)
            {
                _writeThread.Stop();
                _writeThread.Dispose();
                _writeThread = null;
            }
            if (_readThread != null)
            {
                _readThread.Stop();
                _readThread.Dispose();
                _readThread = null;
            }
            //Reset all writes to 0
            Task resetTask = new Task("ChReset");

            for (int i = 0; i < 3; i++)
            {
                resetTask.AOChannels.CreateVoltageChannel(HardwareSettings.DAQ.DeviceName + "/" + string.Format("AO{0}", i), "", -10, 10, AOVoltageUnits.Volts);
            }
            AnalogMultiChannelWriter resetWriter = new AnalogMultiChannelWriter(resetTask.Stream);

            resetWriter.WriteSingleSample(true, new double[3]);
            resetTask.Dispose();
            pipeCanceller.Cancel();
            IsRunning = false;
        }
Exemplo n.º 3
0
 protected override void Dispose(bool disposing)
 {
     //Stop acquisition
     if (_acquisitionThread != null)
     {
         _acquisitionThread.Dispose();
         _acquisitionThread = null;
     }
     if (_maskImage != null)
     {
         _maskImage.Dispose();
         _maskImage = null;
     }
     base.Dispose(disposing);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Starts acquisition and generation
 /// </summary>
 public void Start(Func <long, int, double[, ]> sampleFunction = null, long maxSamplesRead = -1)
 {
     if (IsRunning)
     {
         System.Diagnostics.Debug.WriteLine("Tried to start acquisition while running");
         return;
     }
     _readThread = new WorkerT <long>(ReadThreadRun, maxSamplesRead, true, 3000);
     if (sampleFunction != null)
     {
         _writeThread = new WorkerT <Func <long, int, double[, ]> >(WriteThreadRun, sampleFunction, true, 3000);
     }
     else
     {
         _writeThreadReady.Set();
     }
     IsRunning = true;
 }
Exemplo n.º 5
0
        public MainViewModel()
        {
            ExperimentName = "Experiment01";
            FishName       = "TLAB";
            Comment        = "";
            MaskRadius     = 360;
            DOB            = DateTime.Now - new TimeSpan(5, 0, 0, 0);
            DisplayImage   = ImageType.Camera;
            if (IsInDesignMode)
            {
                return;
            }
            _mainImage = new EZImageSource();
            _fishImage = new EZImageSource();
            var preview = new PreviewTrack(Properties.Settings.Default.FrameRate, Properties.Settings.Default.PixelsPermm);

            _acquisitionThread = new WorkerT <IExperiment>(TrackThreadRun, preview, true, 3000);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Restarts image preview
        /// </summary>
        void RestartPreview()
        {
            //Don't do this while an experiment is running
            if (IsRunning)
            {
                return;
            }
            //shut down acquisition thread
            if (_acquisitionThread != null)
            {
                _acquisitionThread.Dispose();
            }

            //restart preview
            FrameIndex = 0;
            var preview = new PreviewTrack(Properties.Settings.Default.FrameRate, Properties.Settings.Default.PixelsPermm);

            _acquisitionThread = new WorkerT <IExperiment>(TrackThreadRun, preview, true, 3000);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Stop running experiment and switch back to preview
        /// </summary>
        void Stop()
        {
            if (!IsRunning)
            {
                return;
            }
            IsRunning = false;
            //shut down experimental threads
            if (_acquisitionThread != null)
            {
                _acquisitionThread.Dispose();
            }

            //experiment stopped, restart preview
            FrameIndex = 0;
            var preview = new PreviewTrack(Properties.Settings.Default.FrameRate, Properties.Settings.Default.PixelsPermm);

            _acquisitionThread = new WorkerT <IExperiment>(TrackThreadRun, preview, true, 3000);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Start a new experiment
        /// </summary>
        void Start()
        {
            if (IsRunning)
            {
                return;
            }
            //create experimental class
            ExperimentBase exp = null;

            if (ExperimentViewModel != null)
            {
                exp = ExperimentViewModel.CreateExperiment(ExperimentName, FishName);
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("No experiment view model was active. Exiting.");
                return;
            }
            if (exp == null)
            {
                MessageBox.Show("Could not create experiment. Check parameters.", "Failure to launch", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            exp.Comment    = Comment;
            exp.DOB        = DOB;
            exp.DishCenter = DishCenter;
            exp.Radius     = MaskRadius;
            exp.WriteExperimentInformation();
            //dispose previewthread
            if (_acquisitionThread != null)
            {
                _acquisitionThread.Dispose();
            }
            //start experimental threads
            FrameIndex         = 0;
            _acquisitionThread = new WorkerT <IExperiment>(TrackThreadRun, exp, true, 3000);
            IsRunning          = true;
        }