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(); }
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 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); } }
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"); }
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(); } }
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); }
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(); }
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); }