Beispiel #1
0
        private async void buttonCheck_Click(object sender, EventArgs e)
        {
            double.TryParse(this.textBoxDegreePerSecond.Text, out var degreePerSecond);
            int.TryParse(this.textBoxDriveMilliseconds.Text, out var driveMilliseconds);
            int.TryParse(this.textBoxStartPosition.Text, out var startPosition);

            var items         = new List <PositionCompare>();
            var bindingSource = new BindingSource();

            bindingSource.DataSource      = items;
            this.dataGridView2.DataSource = bindingSource;

            var axisType = (AxisType)this.comboBoxAxisType.SelectedItem;

            await Task.Run(() =>
            {
                using (var logic = new SpeedTestLogic(this._communication, axisType))
                {
                    logic.LoadSpeedTableEneo();

                    var breakpoints = new List <double>();
                    for (var j = 0; j < 10; j++)
                    {
                        var destinationPosition = startPosition + (degreePerSecond *driveMilliseconds / 1000);

                        for (var i = 0; i < 3; i++)
                        {
                            logic.GoToStartPosition(startPosition);
                            logic.Move(degreePerSecond, driveMilliseconds);

                            Thread.Sleep(300);

                            var lastPosition = logic.LastPosition;
                            breakpoints.Add(lastPosition);
                        }

                        var item             = new PositionCompare();
                        item.DegreePerSecond = degreePerSecond;
                        item.MoveTime        = driveMilliseconds;
                        item.ActualPosition  = breakpoints.Average();
                        item.TargetPosition  = destinationPosition;
                        items.Add(item);

                        this.dataGridView2.Invoke(o => ((BindingSource)o.DataSource).ResetBindings(true));

                        degreePerSecond += 0.5;
                        breakpoints.Clear();
                    }
                }
            });
        }
Beispiel #2
0
        private async void buttonCheck_Click(object sender, EventArgs e)
        {
            this.buttonCheck.Enabled           = false;
            this.buttonAbortQuickCheck.Enabled = true;

            this._cancellationTokenSource?.Dispose();
            this._cancellationTokenSource = new CancellationTokenSource();

            double.TryParse(this.textBoxDegreePerSecond.Text, out var degreePerSecond);
            int.TryParse(this.textBoxDriveMilliseconds.Text, out var driveMilliseconds);
            int.TryParse(this.textBoxStartPosition.Text, out var startPosition);

            var items         = new List <PositionCompare>();
            var bindingSource = new BindingSource
            {
                DataSource = items
            };

            this.dataGridViewQuickCheck.DataSource = bindingSource;

            var axisType = (AxisType)this.comboBoxAxisType.SelectedItem;

            await Task.Run(async() =>
            {
                using (var logic = new SpeedTestLogic(this._communication, this._panTiltControlType, axisType))
                {
                    logic.GoToStartPosition(startPosition);

                    var breakpoints = new List <double>();
                    for (var j = 0; j < 80; j++)
                    {
                        if (this._cancellationTokenSource.IsCancellationRequested)
                        {
                            return;
                        }

                        var destinationPosition = startPosition + (degreePerSecond *driveMilliseconds / 1000);

                        for (var i = 0; i < 3; i++)
                        {
                            logic.GoToStartPosition(startPosition);
                            logic.Move(degreePerSecond, driveMilliseconds);

                            await Task.Delay(300, this._cancellationTokenSource.Token);

                            var lastPosition = logic.LastPosition;
                            breakpoints.Add(lastPosition);

                            if (this._cancellationTokenSource.IsCancellationRequested)
                            {
                                return;
                            }
                        }

                        var item = new PositionCompare
                        {
                            DegreePerSecond = degreePerSecond,
                            MoveTime        = driveMilliseconds,
                            ActualPosition  = Math.Round(breakpoints.Average(), 2),
                            TargetPosition  = destinationPosition
                        };

                        items.Add(item);

                        this.dataGridViewQuickCheck.Invoke(o => ((BindingSource)o.DataSource).ResetBindings(true));

                        degreePerSecond += 0.5;
                        breakpoints.Clear();
                    }
                }
            }, this._cancellationTokenSource.Token).ContinueWith(t => { });

            this.buttonCheck.Enabled           = true;
            this.buttonAbortQuickCheck.Enabled = false;
        }