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