public ActionVirage(Robot r, int dist, int a, SensAR ar, SensGD gd) { robot = r; distance = dist; angle = a; sensAR = ar; sensGD = gd; }
public abstract void Virage(SensAR sensAr, SensGD sensGd, int rayon, int angle, bool attendre = true);
protected void Virage_Click(SensAR sensAr, SensGD sensGd) { int distance = 0; int angle = 0; bool ok = true; if (!Int32.TryParse(txtDistance.Text, out distance) || distance == 0) { txtDistance.ErrorMode = true; ok = false; } if (!Int32.TryParse(txtAngle.Text, out angle) || angle == 0) { txtAngle.ErrorMode = true; ok = false; } if (ok) Robot.Virage(sensAr, sensGd, distance, angle, false); }
public ActionPivot(Robot r, double a, SensGD s) { robot = r; angle = a; sens = s; }
public static Trame Virage(SensAR sensAr, SensGD sensGd, int rayon, double angle, Robot robot) { byte[] tab = new byte[8]; tab[0] = (byte)robot.Carte; tab[1] = (byte)FonctionMove.Virage; tab[2] = (byte)sensAr; tab[3] = (byte)sensGd; tab[4] = (byte)ByteDivide(rayon, true); tab[5] = (byte)ByteDivide(rayon, false); tab[6] = (byte)ByteDivide((int)(angle * 100), true); tab[7] = (byte)ByteDivide((int)(angle * 100), false); Trame retour = new Trame(tab); return retour; }
public static Trame Pivot(SensGD sens, double angle, Robot robot) { //angle = angle * Math.PI * 268.471260977282 / 2.0 / 180.0; byte[] tab = new byte[7]; tab[0] = (byte)robot.Carte; tab[1] = (byte)FonctionMove.Pivot; tab[2] = (byte)sens; tab[3] = ByteDivide((int)(angle * 100.0), true); tab[4] = ByteDivide((int)(angle * 100.0), false); Trame retour = new Trame(tab); return retour; }
public override void Virage(SensAR sensAr, SensGD sensGd, int rayon, int angle, bool attendre = true) { // TODO }
public override void PivotGauche(double angle, bool attendre = true) { base.PivotGauche(angle, attendre); angle = Math.Round(angle, 2); Historique.AjouterAction(new ActionPivot(this, angle, SensGD.Gauche)); Destination = new Position(new Angle(Position.Angle.AngleDegres - angle, AnglyeType.Degre), new PointReel(Position.Coordonnees.X, Position.Coordonnees.Y)); SensPivot = SensGD.Gauche; if (attendre) while (Position.Angle != Destination.Angle) Thread.Sleep(50); }
public override void Virage(SensAR sensAr, SensGD sensGd, int rayon, int angle, bool attendre = true) { if (attendre) SemaphoresMove[FonctionMove.FinDeplacement] = new Semaphore(0, int.MaxValue); Historique.AjouterAction(new ActionVirage(this, rayon, angle, sensAr, sensGd)); Trame trame = TrameFactory.Virage(sensAr, sensGd, rayon, angle, this); Connexion.SendMessage(trame); if (attendre) SemaphoresMove[FonctionMove.FinDeplacement].WaitOne(); }
public static int Factor(this SensGD sens) { return(sens == SensGD.Droite ? 1 : -1); }