Пример #1
0
        private static void TestPanMovementWithStartBeforeEndReached(ICommunication communication)
        {
            Console.WriteLine("Start");
            var panTiltControl  = new EneoPanTiltControl(communication);
            var positionChecker = new PositionChecker(panTiltControl);

            panTiltControl.PositionChanged += PanTiltControl_OnPositionChanged;

            while (true)
            {
                panTiltControl.PanAbsolute(0);
                positionChecker.ComparePosition(new PanTiltPosition(0, 0), 0.5, 20, 100);

                panTiltControl.PanAbsolute(40);
                positionChecker.ComparePosition(new PanTiltPosition(40, 0), 0.5, 20, 100);

                panTiltControl.PanRelative(-40);
                Thread.Sleep(500);

                panTiltControl.PanRelative(40);
                Thread.Sleep(500);

                panTiltControl.PanAbsolute(0);

                Console.WriteLine("Loop done");
            }
        }
        private void TestLogic()
        {
            var limits = this._panTiltControl.GetLimits();

            if (limits.PanMin == 0 && limits.PanMax == 0 && limits.TiltMin == 0 && limits.TiltMax == 0)
            {
                this.textBoxResult.Invoke(o => o.Text += $"Cannot execute test invalid limits\r\n");
            }

            this.textBoxResult.Invoke(o => o.Text += $"Limits;Pan;{limits.PanMin};{limits.PanMax};Tilt;{limits.TiltMin};{limits.TiltMax}\r\n");
            var positionChecker = new PositionChecker(this._panTiltControl);

            this._panTiltControl.TiltAbsolute(0);
            for (var pan = limits.PanMin; pan < limits.PanMax; pan += 0.05)
            {
                pan = Math.Round(pan, 2);
                this._panTiltControl.PanAbsolute(pan);
                Thread.Sleep(2000);
                if (positionChecker.ComparePosition(new PanTiltPosition(pan, 0), 0.1))
                {
                    var position = this._panTiltControl.GetPosition();
                    this.textBoxResult.Invoke(o => o.Text += $"Good;pan;{pan};{position.Pan}\r\n");
                }
                else
                {
                    var position = this._panTiltControl.GetPosition();
                    this.textBoxResult.Invoke(o => o.Text += $"Failure;pan;{pan};{position.Pan}\r\n");
                }
            }

            this._panTiltControl.PanAbsolute(0);
            for (var tilt = limits.TiltMin; tilt < limits.TiltMax; tilt += 0.05)
            {
                tilt = Math.Round(tilt, 2);
                this._panTiltControl.TiltAbsolute(tilt);
                Thread.Sleep(2000);
                if (positionChecker.ComparePosition(new PanTiltPosition(0, tilt), 0.1))
                {
                    var position = this._panTiltControl.GetPosition();
                    this.textBoxResult.Invoke(o => o.Text += $"Good;tilt;{tilt};{position.Tilt}\r\n");
                }
                else
                {
                    var position = this._panTiltControl.GetPosition();
                    this.textBoxResult.Invoke(o => o.Text += $"Failure;tilt;{tilt};{position.Tilt}\r\n");
                }
            }
        }
Пример #3
0
        private static void DriveRandomPositions(ICommunication communication, bool debug)
        {
            var panTiltControl  = new EneoPanTiltControl(communication, debug);
            var positionChecker = new PositionChecker(panTiltControl);

            panTiltControl.Start();

            var random = new Random();

            while (true)
            {
                var panForward  = true;
                var tiltForward = true;

                if (random.Next(0, 2) == 1)
                {
                    panForward = false;
                }

                if (random.Next(0, 2) == 1)
                {
                    tiltForward = false;
                }

                for (var i = 0; i < 1000; i++)
                {
                    var panDegreePerSecond  = random.Next(1, 40);
                    var tiltDegreePerSecond = random.Next(1, 15);

                    if (!panForward)
                    {
                        panDegreePerSecond = -panDegreePerSecond;
                    }

                    if (!tiltForward)
                    {
                        tiltDegreePerSecond = -tiltDegreePerSecond;
                    }

                    panTiltControl.MoveRelative(panDegreePerSecond, tiltDegreePerSecond);

                    Thread.Sleep(40);
                }

                panTiltControl.PanTiltAbsolute(0, 0);
                positionChecker.ComparePosition(new PanTiltPosition(0, 0), 0.5, 20, 200);
            }
        }