Beispiel #1
0
        public Result Run(PupilReaction model, bool isAutoMode)
        {
            if (cameraProvider.ConnectedCamera == null)
            {
                return(Result.Failure("Camera not found. Please connect camera."));
            }

            if (portProvider.ConnectedPort == null)
            {
                return(Result.Failure("Port not found. Please connect port"));
            }

            if (behavior != null)
            {
                return(Result.Failure("Previous operation was not finished."));
            }

            try
            {
                if (!cameraProvider.ConnectedCamera.IsGrabbing)
                {
                    cameraProvider.ConnectedCamera.StartGrabbing();
                }

                behavior = model;
                behavior.Init();
                OnBrightChanged(behavior.CurrentBright);

                portProvider.WriteCommand("#LEDAON");
                portProvider.WriteCommand($"#PWMB{behavior.StartingBrightLevel}");

                if (isAutoMode)
                {
                    timer = new Timer(state =>
                    {
                        if (behavior.CurrentBright == byte.MaxValue)
                        {
                            Stop();
                            return;
                        }

                        IncreaseBright();
                        Snapshot();
                    }, null, 2000, 2000);
                }
            }
            catch (Exception e)
            {
                return(Result.Failure(e.Message));
            }

            return(Result.Success());
        }
Beispiel #2
0
        public Result RunTauTuning(int number, int tau)
        {
            if (cameraProvider.ConnectedCamera == null)
            {
                return(Result.Failure("Camera not found. Please connect camera."));
            }

            if (portProvider.ConnectedPort == null)
            {
                return(Result.Failure("Port not found. Please connect port."));
            }

            try
            {
                cameraProvider.ConnectedCamera.ExposureAuto = false;

                if (!cameraProvider.ConnectedCamera.IsGrabbing)
                {
                    cameraProvider.ConnectedCamera.StartGrabbing();
                }

                cameraProvider.ConnectedCamera.ExposureTime = tau;
                portProvider.WriteCommand($"#LED{number}ON");
                Thread.Sleep(1000);
                portProvider.WriteCommand($"#LED{number}OFF");
                return(Result.Success());
            }
            catch (Exception e)
            {
                return(Result.Failure(e.Message));
            }
        }