Пример #1
0
        private void MoveRightButton_Click(object sender, EventArgs e)
        {
            if (Params.AcquisitionRunning == true)
            {
                return;
            }
            Params.CurServoPosX = Params.CurServoPosX - Params.MoveStepDeltaX;

            muControllerInterface.MoveServo(Params.COMPortName, Params.BTbaudrate, 0, Params.CurServoPosX);
            CommentRTB.AppendText("ServoPosX " + Params.CurServoPosX.ToString() + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();
            Thread.Sleep(100);
            UpdateServoPosition();
        }
Пример #2
0
        private void FocalLengthTextBox_Leave(object sender, EventArgs e)
        {
            //A new focal length was entered
            //if there was a valid solution - calculate a new solution
            FocalLengthTextBox.Text = ValidateDouble(FocalLengthTextBox.Text, 420, 1, 2000).ToString(CultureInfo.InvariantCulture);
            Params.changeParam      = 3;
            Params.FocalLength      = Convert.ToDouble(FocalLengthTextBox.Text, CultureInfo.InvariantCulture);
            var fovCheck = CalculationsHelper.CalcFOV();

            CommentRTB.AppendText(fovCheck + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();

            FOVxLabel.Text = "FOVx:       " + Params.FOVx.ToString() + "°";
            FOVyLabel.Text = "FOVy:       " + Params.FOVy.ToString() + "°";
        }
Пример #3
0
        private void StopButton_Click(object sender, EventArgs e)
        {
            Params.StopAcquisition = true;
            SystemSounds.Beep.Play();
            CommentRTB.AppendText("Pano acquisition stopped" + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();
            PapyWizardHelper.ClosePositionDataXMLFiles();

            if (backgroundWorker.IsBusy)
            {
                backgroundWorker.CancelAsync();
            }
            StartButton.Enabled    = true;
            StopButton.Enabled     = false;
            PauseButton.Enabled    = false;
            ContinueButton.Enabled = false;
        }
Пример #4
0
        private void CamSelectCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            SetCameraParameters();

            FocalLengthTextBox.Text = Convert.ToString(Params.FocalLength, CultureInfo.InvariantCulture);
            ChipHTextBox.Text       = Convert.ToString(Params.ChipHeight, CultureInfo.InvariantCulture);
            ChipWTextBox.Text       = Convert.ToString(Params.ChipWidth, CultureInfo.InvariantCulture);
            OverlapTextBox.Text     = Convert.ToString(Params.Overlap, CultureInfo.InvariantCulture);

            VibDelayTextBox.Text = Convert.ToString(Params.VibrationDelay, CultureInfo.InvariantCulture);
            ExpDelayTextBox.Text = Convert.ToString(Params.ExposureDelay, CultureInfo.InvariantCulture);

            var fovCheck = CalculationsHelper.CalcFOV();

            CommentRTB.AppendText(fovCheck + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();
            FOVxLabel.Text = "FOVx:       " + Params.FOVx.ToString() + "°";
            FOVyLabel.Text = "FOVy:       " + Params.FOVy.ToString() + "°";
        }
Пример #5
0
        private void SetEndPointButton_Click(object sender, EventArgs e)
        {
            //set end point for the panorama acquisition
            Params.EndPosX = Params.CurServoPosX;
            Params.EndPosY = Params.CurServoPosY;
            double x = Math.Round(GetShowCoordinate(Params.EndPosX, 0), 2);
            double y = Math.Round(GetShowCoordinate(Params.EndPosY, 1), 2);

            EndPosXlabel.Text     = x.ToString();
            EndPosYlabel.Text     = y.ToString();
            Params.ValidEndPosSet = true;
            Params.changeParam    = 2;
            if (Params.ValidStartPosSet == true) //Start and Endpoint set - > Panorama is Made from these two points
            {
                Params.PanoModus = 1;
                UpdateAcquisitionGrid(); //Update the PanoramaModel
            }
            CommentRTB.AppendText("End Point set" + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();
        }
Пример #6
0
        private void ConnectButton_Click(object sender, EventArgs e)
        {
            String COMName;

            try
            {
                //Open serial port
                ConnectButton.Enabled    = false;
                DisconnectButton.Enabled = true;
                Params.connected         = true;

                if (muControllerInterface.myPort.IsOpen == true)
                {
                    muControllerInterface.ClosePort();
                }

                //if we selected something with COM than change the name, otherwise keep the old name

                COMName = COMcomboBox.Text;
                if (COMName.Contains("COM"))
                {
                    Params.COMPortName = COMName;
                }

                if (muControllerInterface.myPort.IsOpen == false)
                {
                    muControllerInterface.OpenPort(Params.COMPortName, Params.BTbaudrate);
                }
            }
            catch
            {
                CommentRTB.AppendText("Problem while opening COM Port" + "\n");
                CommentRTB.Focus();
                CommentRTB.ScrollToCaret();
            }
        }
Пример #7
0
        private void StartButton_Click(object sender, EventArgs e)
        {
            UpdateAcquisitionGrid();

            //AcquirePanorama(Params.StartPosX, Params.StartPosX + Params.numX * Params.deltaX, Params.deltaX, Params.StartPosY, Params.StartPosY + Params.numY * Params.deltaY, Params.deltaY, Params.MoveModus);
            if (Params.AcquisitionProcessExists == true)
            {
                return;
            }
            if (backgroundWorker.IsBusy)
            {
                return;
            }
            Params.AcquisitionProcessExists = true; //Now we have an AcquisitionProcess

            backgroundWorker.DoWork               += Worker_AcquirePanorama;
            backgroundWorker.ProgressChanged      += Worker_ProgressChanged;
            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.RunWorkerCompleted   += Worker_RunWorkerCompleted;

            //Then, we set the Worker off.
            //This triggers the DoWork event.
            //Notice the word Async - it means that Worker gets its own thread,
            //and the main thread will carry on with its own calculations separately.
            //We can pass any data that the worker needs as a parameter.
            backgroundWorker.RunWorkerAsync();
            StartButton.Enabled    = false;
            StopButton.Enabled     = true;
            PauseButton.Enabled    = true;
            ContinueButton.Enabled = false;
            CommentRTB.AppendText("Pano acquisition started" + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();
            // PanoramaWorker.AcquirePanorama(Params.StartPosX, Params.StartPosX + Params.numX * Params.deltaX, Params.deltaX, Params.StartPosY, Params.StartPosY + Params.numY * Params.deltaY, Params.deltaY, Params.MoveModus);
            // PapyWizardHelper.ClosePositionDataXMLFiles();
        }
Пример #8
0
 //ShowCommentOutput shows Infotext and can subscribes to events from other classes
 public void ShowCommentOutput(String CommentText)
 {
     CommentRTB.AppendText(CommentText);
     CommentRTB.Focus();
     CommentRTB.ScrollToCaret();
 }
Пример #9
0
        public PanoControlForm()
        {
            InitializeComponent();
            this.backgroundWorker = new BackgroundWorker();
            this.backgroundWorker.WorkerSupportsCancellation = true;

            PanoramaWorker = new PanoramaAcquisitionClass();

            //Map events with delegates
            PanoramaWorker.OnShowCommentOutput             = ShowCommentOutput;
            PanoramaWorker.OnUpdateServoPosition           = UpdateServoPosition;
            PanoramaWorker.OnUpdateServoPositionWithParams = UpdateServoPosWithParams;

            //PanoramaWorker.ShowNewCommentInGUI("PanoControl started");
            drawingBitMap = new Bitmap(panel1.Width, panel1.Height, panel1.CreateGraphics());
            Graphics.FromImage(drawingBitMap).Clear(Color.White);

            scanModeComboBox.SelectedIndex = 0;
            CamSelectCombo.SelectedIndex   = 0;

            //Set Default Parameters
            Params.SetDefaultValues();
            //and read further parameters from Config to make Parameters accessible from anywhere
            Params.readConfigFile();
            SetCameraParameters();
            //Update TextBoxes with parameters

            FocalLengthTextBox.Text        = Convert.ToString(Params.FocalLength, CultureInfo.InvariantCulture);
            ChipHTextBox.Text              = Convert.ToString(Params.ChipHeight, CultureInfo.InvariantCulture);
            ChipWTextBox.Text              = Convert.ToString(Params.ChipWidth, CultureInfo.InvariantCulture);
            OverlapTextBox.Text            = Convert.ToString(Params.Overlap, CultureInfo.InvariantCulture);
            ExpDelayTextBox.Text           = Convert.ToString(Params.ExposureDelay, CultureInfo.InvariantCulture);
            VibDelayTextBox.Text           = Convert.ToString(Params.VibrationDelay, CultureInfo.InvariantCulture);
            CamTriggerDurationTextBox.Text = Convert.ToString(Params.CamTriggerDuration, CultureInfo.InvariantCulture);
            SpeedXTextBox.Text             = Convert.ToString(Params.ServoSpeedX, CultureInfo.InvariantCulture);
            SpeedYTextBox.Text             = Convert.ToString(Params.ServoSpeedY, CultureInfo.InvariantCulture);

            var fovCheck = CalculationsHelper.CalcFOV();

            CommentRTB.AppendText(fovCheck + "\n");
            CommentRTB.Focus();
            CommentRTB.ScrollToCaret();

            FOVxLabel.Text = "FOVx:       " + Params.FOVx.ToString() + "°";
            FOVyLabel.Text = "FOVy:       " + Params.FOVy.ToString() + "°";

            //Make the axes limits accessible to the serialPort-Class
            muControllerInterface.MinPan  = Params.limitX1;
            muControllerInterface.MaxPan  = Params.limitX2;
            muControllerInterface.MinTilt = Params.limitY1;
            muControllerInterface.MaxTilt = Params.limitY2;

            COMcomboBox.Items.Clear();
            var result = muControllerInterface.GetAvailableCOMPorts();

            //In case there are no COMPORTS available

            if (result[0] == "No Port Available")
            {
                return;
            }
            COMcomboBox.Items.Clear();
            COMcomboBox.Items.AddRange(result.ToArray());
            COMcomboBox.SelectedIndex = 0;

            //Set start position
            Params.CurServoPosX = Params.InitPosX / Params.ConvFacX;
            Params.CurServoPosY = Params.InitPosY / Params.ConvFacY;

            //Init  servos and move to start position
            muControllerInterface.InitServo(Params.CurServoPosX, Params.CurServoPosY, Params.ServoSpeedX, Params.ServoSpeedY, Params.COMPortName, Params.BTbaudrate);
            UpdateServoPosition();
            Params.StopAcquisition = false;
        }