示例#1
0
        private static void CircleMovementWithAbsolutePosition(ICommunication communication, bool debug)
        {
            var panTiltControl = new EneoPanTiltControl(communication, debug);

            panTiltControl.Start();
            panTiltControl.DisableLimit();

            //var random = new Random();

            for (var i = 0; i < 50; i++)
            {
                var positions = CalculatePolygon(i, new PointF(0, 0), 7);
                foreach (var position in positions)
                {
                    panTiltControl.MovePanAbsolute(position.X);
                    panTiltControl.MoveTiltAbsolute(position.Y);
                    Thread.Sleep(40);
                }

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

            panTiltControl.EnableLimit();
            panTiltControl.Dispose();
        }
示例#2
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");
            }
        }
示例#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);
            }
        }
示例#4
0
        private static void CheckSomeSpecialCommands(ICommunication communication)
        {
            var panTiltControl = new EneoPanTiltControl(communication);

            panTiltControl.PositionChanged += PanTiltControl_OnPositionChanged;
            panTiltControl.GetPanPotentiometer();
            panTiltControl.GetTiltPotentiometer();
            panTiltControl.GetTemperature();
            for (var i = 0; i < 1000; i++)
            {
                panTiltControl.MoveRandom();
                Thread.Sleep(500);
            }
            Console.ReadLine();

            panTiltControl.PositionChanged -= PanTiltControl_OnPositionChanged;
            panTiltControl.Dispose();
            Console.WriteLine("done");
        }
示例#5
0
        private static void BasicMovementLogic(ICommunication communication)
        {
            while (true)
            {
                Console.WriteLine("Start");
                var panTiltControl = new EneoPanTiltControl(communication);
                panTiltControl.PositionChanged += PanTiltControl_OnPositionChanged;
                Console.WriteLine("Pan 80");
                panTiltControl.MovePanAbsolute(80);
                panTiltControl.MoveTiltAbsolute(0);
                Thread.Sleep(4000);
                Console.WriteLine("Pan 20");
                panTiltControl.MovePanAbsolute(20);
                panTiltControl.MoveTiltAbsolute(0);
                Thread.Sleep(4000);
                Console.WriteLine("Pan 80");
                panTiltControl.MovePanAbsolute(80);
                panTiltControl.MoveTiltAbsolute(0);
                Thread.Sleep(4000);
                Console.WriteLine("Pan 20");
                panTiltControl.MovePanAbsolute(20);
                panTiltControl.MoveTiltAbsolute(0);
                Thread.Sleep(4000);
                Console.WriteLine("Pan Relative 10");
                panTiltControl.PanRelative(10);
                Thread.Sleep(4000);
                Console.WriteLine("Stop Moving");
                panTiltControl.StopMoving();
                Thread.Sleep(1000);
                Console.WriteLine("Pan 20");
                panTiltControl.MovePanAbsolute(20);
                panTiltControl.MoveTiltAbsolute(0);
                Thread.Sleep(2000);

                panTiltControl.PositionChanged -= PanTiltControl_OnPositionChanged;
                panTiltControl.Dispose();
                Console.WriteLine("done");
                //Console.ReadLine();
            }
        }
示例#6
0
        public void SendCommand()
        {
            this._counter = 0;

            using (var communication = new MockCommunication())
            {
                communication.SendData += this.SendData;

                using (var control = new EneoPanTiltControl(communication, true))
                {
                    control.PanTiltRelative(0, 0);
                    control.PanTiltRelative(1, 0);
                    control.PanTiltRelative(0, 1);
                    control.PanTiltRelative(-1, 0);
                    control.PanTiltRelative(0, -1);
                }

                communication.SendData -= this.SendData;
            }

            Assert.AreEqual(9, this._counter);
        }
示例#7
0
        static void Main(string[] args)
        {
            var ipAddress = IPAddress.Parse("192.168.184.105");

            using (ICommunication communication = new UdpNetworkCommunication(ipAddress, 4003, 4003))
                using (IPanTiltControl control = new EneoPanTiltControl(communication))
                {
                    control.Start();
                    Thread.Sleep(200);
                    var currentPosition = control.GetPosition();
                    control.Stop();
                }


            //var ipAddress = IPAddress.Parse("192.168.184.105");
            //ICommunication communication = new TcpNetworkCommunication(new IPEndPoint(ipAddress, 4003));
            //var communication = new SerialPortCommunication("COM1");
            //ICommunication communication = new UdpNetworkCommunication(ipAddress, 4003, 4003);

            ////var reader = new FirmwareReader(communication);
            ////reader.Dispose();

            //IPanTiltControl panTiltControl = new EneoPanTiltControl(communication);
            //Thread.Sleep(1000);

            ////panTiltControl.ReinitializePosition();
            ////panTiltControl.ReinitializePosition(); //2x ???? Warum
            ////Console.WriteLine("Press enter for next command");
            ////Console.ReadLine();


            ////DriveRandomPositions(communication, false);
            //CircleMovementWithAbsolutePosition(communication, false);

            //communication.Dispose();
        }
示例#8
0
        public void CheckEneoProtocoll()
        {
            using (var communication = new MockCommunication())
            {
                communication.SendData += this.SendData;

                using (var control = new EneoPanTiltControl(communication, true))
                {
                    for (var pan = -180.0M; pan < 180; pan += 0.05M)
                    {
                        control.PanAbsolute(Convert.ToDouble(pan));
                    }

                    for (var tilt = -90.0M; tilt < 90; tilt += 0.05M)
                    {
                        control.TiltAbsolute(Convert.ToDouble(tilt));
                    }
                }

                communication.SendData -= this.SendData;
            }

            Assert.IsTrue(this._successful);
        }