static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); double cosTeta = 0.649352561565284; //teta=49.50... double sinTeta = 0.760487508634168; // sinTeta = System.Math.Cos(45); while(true) { double rX = Robot.GetCurrentPosition().X * cosTeta - Robot.GetCurrentPosition().Y * sinTeta; double rY = Robot.GetCurrentPosition().X * sinTeta + Robot.GetCurrentPosition().Y * cosTeta; //while((30 <= rX <= -30)&&(30 <= rY <= -20)&&(Robot.GetCurrentPosition().Z < 5)) //if ((-300 >= rX) && (rX >= 300) && (-200 >= rY) && (rY >= 300) && (Robot.GetCurrentPosition().Z <= 50)) if ((-200 <= rX) && (rX <= 800) && (130 <= rY) && (rY <= 790) && (Robot.GetCurrentPosition().Z >= 50)) { //move robot Console.WriteLine("Robot reste dans la zone de securité YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); Console.WriteLine(" Rotation de X : " + rX +"; Y : " + rY); } else { //robot s'arrete Console.WriteLine("!!! Robot a sorti de la zone de securité !!!!!!!!!!!!!!!!!!!!!!!"); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); Console.WriteLine(" Rotation de X : " + rX + "; Y : " + rY); } System.Threading.Thread.Sleep(2000); } }
static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); double cosTeta = 0.649352561565284; //teta=49.50... double sinTeta = 0.760487508634168; // sinTeta = System.Math.Cos(45); while (true) { double rX = Robot.GetCurrentPosition().X *cosTeta - Robot.GetCurrentPosition().Y *sinTeta; double rY = Robot.GetCurrentPosition().X *sinTeta + Robot.GetCurrentPosition().Y *cosTeta; //while((30 <= rX <= -30)&&(30 <= rY <= -20)&&(Robot.GetCurrentPosition().Z < 5)) //if ((-300 >= rX) && (rX >= 300) && (-200 >= rY) && (rY >= 300) && (Robot.GetCurrentPosition().Z <= 50)) if ((-200 <= rX) && (rX <= 800) && (130 <= rY) && (rY <= 790) && (Robot.GetCurrentPosition().Z >= 50)) { //move robot Console.WriteLine("Robot reste dans la zone de securité YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); Console.WriteLine(" Rotation de X : " + rX + "; Y : " + rY); } else { //robot s'arrete Console.WriteLine("!!! Robot a sorti de la zone de securité !!!!!!!!!!!!!!!!!!!!!!!"); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); Console.WriteLine(" Rotation de X : " + rX + "; Y : " + rY); } System.Threading.Thread.Sleep(2000); } }
public ActionResult SwitchRobotConnection(bool connect, string ip) { bool success = false; if (connect) { //Connexion du robot Logs.AddLog("info", string.Format("Starting robot connection on {0} ...", ip)); MvcApplication.RobotInfos.IsConnected = true; try { MyRobot.Connect(ip); MvcApplication.RobotInfos.IsConnected = true; MyRobot.GetCurrentPosition(); success = true; Logs.AddLog("info", "Robot connected"); } catch (Exception e) { Logs.AddLog("Error", string.Format("Error in robot connection: {0} ...", e.Data)); MvcApplication.RobotInfos.IsConnected = false; } } else { //Deconnexion du robot Logs.AddLog("info", "Robot disconnection not implemented"); //MvcApplication.RobotInfos.IsConnected = false; success = true; } return(Json(new { Success = success }, JsonRequestBehavior.AllowGet)); }
// Constructeur permettant de ce connecter au robot public Class_Kuka_Manager() { if (debug) { robot = new RobotController(); try { robot.Connect("192.168.1.1"); Console.WriteLine("coonected"); } catch (IOException e) { Console.WriteLine(e); } } }
static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); List <CartesianPosition> Trajectoire = new List <CartesianPosition>(); for (int i = 1; i <= 100; i++) { Trajectoire.Add(new CartesianPosition { X = i + Robot.GetCurrentPosition().X, Y = i + Robot.GetCurrentPosition().Y, Z = i + Robot.GetCurrentPosition().Z, A = 0 + Robot.GetCurrentPosition().A, B = 0 + Robot.GetCurrentPosition().B, C = 0 + Robot.GetCurrentPosition().C }); } //Robot.PlayTrajectory(Trajectoire); Robot.StartRelativeMovement(); CartesianPosition Test = new CartesianPosition { X = -1, Y = 0, Z = 0, A = 0, B = 0, C = 0 }; Robot.SetRelativeMovement(Test); System.Threading.Thread.Sleep(2000); Robot.StopRelativeMovement(); Device Mouse = new Device(); }
static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); List<CartesianPosition> Trajectoire = new List<CartesianPosition>(); for (int i = 1; i <= 100; i++) { Trajectoire.Add(new CartesianPosition { X = i + Robot.GetCurrentPosition().X, Y = i + Robot.GetCurrentPosition().Y, Z = i + Robot.GetCurrentPosition().Z, A = 0 + Robot.GetCurrentPosition().A, B = 0 + Robot.GetCurrentPosition().B, C = 0 + Robot.GetCurrentPosition().C }); } //Robot.PlayTrajectory(Trajectoire); Robot.StartRelativeMovement(); CartesianPosition Test = new CartesianPosition { X = -1, Y = 0, Z = 0, A = 0, B = 0, C = 0 }; Robot.SetRelativeMovement(Test); System.Threading.Thread.Sleep(2000); Robot.StopRelativeMovement(); Device Mouse = new Device(); }
private static void Main() { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); string valeurX = "0", valeurY = "0", valeurZ = "0", valeurA = "0", valeurB = "0", valeurC = "0", valeurPince = "0", valeurDetection = "0"; XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(docNode); //XmlNode productsNode = doc.CreateElement("products"); XmlNode RobotNode = doc.CreateElement("Coordonees_Robot"); doc.AppendChild(RobotNode); for (int i = 1; i < 666; i++) { Console.WriteLine(i); string id = i.ToString(); //iString Console.WriteLine(id); Console.WriteLine("press 0 pour ajouter point; press 9 pour finaliser"); int j = i; while (j==i) { try { int press = int.Parse(Console.ReadLine()); switch (press) { case 0: { /* //Doner valeurs a X Y Z; apres on metra get.currentPosition... System.Console.WriteLine("Ecrivez la valeur de X"); valeurX = (Console.ReadLine()); System.Console.WriteLine("Ecrivez la valeur de Y"); valeurY = (Console.ReadLine()); System.Console.WriteLine("Ecrivez la valeur de Z"); valeurZ = (Console.ReadLine()); */ // valeurX = Robot.GetCurrentPosition().X.ToString(); valeurY = Robot.GetCurrentPosition().Y.ToString(); valeurZ = Robot.GetCurrentPosition().Z.ToString(); valeurA = Robot.GetCurrentPosition().A.ToString(); valeurB = Robot.GetCurrentPosition().B.ToString(); valeurC = Robot.GetCurrentPosition().C.ToString(); valeurDetection = Robot.ReadSensor().ToString(); valeurPince = Robot.IsGripperOpen().ToString(); //*/ // Create and add another product node---------------------------Creation nouveau position XmlNode PositonNode = doc.CreateElement("Position"); XmlAttribute postitionAttribute = doc.CreateAttribute("id"); postitionAttribute.Value = id; PositonNode.Attributes.Append(postitionAttribute); RobotNode.AppendChild(PositonNode); XmlNode xNode = doc.CreateElement("X"); xNode.AppendChild(doc.CreateTextNode(valeurX)); PositonNode.AppendChild(xNode); XmlNode yNode = doc.CreateElement("Y"); yNode.AppendChild(doc.CreateTextNode(valeurY)); PositonNode.AppendChild(yNode); XmlNode zNode = doc.CreateElement("Z"); zNode.AppendChild(doc.CreateTextNode(valeurZ)); PositonNode.AppendChild(zNode); XmlNode aNode = doc.CreateElement("A"); aNode.AppendChild(doc.CreateTextNode(valeurA)); PositonNode.AppendChild(aNode); XmlNode bNode = doc.CreateElement("B"); bNode.AppendChild(doc.CreateTextNode(valeurB)); PositonNode.AppendChild(bNode); XmlNode cNode = doc.CreateElement("C"); cNode.AppendChild(doc.CreateTextNode(valeurC)); PositonNode.AppendChild(cNode); //----------------------------- Pince et Capteur ------------------------------------------ XmlNode gripperNode = doc.CreateElement("Pince"); gripperNode.AppendChild(doc.CreateTextNode(valeurPince)); PositonNode.AppendChild(gripperNode); XmlNode detectionNode = doc.CreateElement("Detection"); detectionNode.AppendChild(doc.CreateTextNode(valeurDetection)); PositonNode.AppendChild(detectionNode); j = j+1; break; } case 9: { i = 666; break; } default: { System.Console.WriteLine("Pres 0 pour enregitrer un nouveau point"); break; } } } catch { } } } doc.Save(Console.Out); doc.Save(@"C:\Users\Jordi\Desktop\novaLynx\jordi\XML\xmlTestJordi4\kukaAgilus.xml"); System.Console.ReadLine(); }
static void Main(string[] args) { int NUM_AUTD_X = 3; int NUM_AUTD_Y = 3; float W = 192f; float H = 151.4f; float xc = W * NUM_AUTD_X / 2f; float yc = H * NUM_AUTD_Y / 2f; float Z = 200; var compress = true; var cond = new Conditions() { SampleRateHz = 10_000_000, SampleLen = 10_000, Temp = 22.8f, Humidity = 13f, Amplifer = 10, X = 0, Y = 0, Z = Z }; using var robo = new RobotController(); if (!robo.Connect("172.16.99.57")) { Console.WriteLine("Failed to connect to robot."); return; } robo.MoveTo(0, 0, Z); using var pico = new PicoCnt(); pico.SetChannel(0, 50, 1, null); pico.SetChannel(1, 5000, 10, 1000); pico.SetCondition(cond); using var autd = new AUTD3Cnt(); for (int y = 0; y < NUM_AUTD_Y; y++) { for (int x = 0; x < NUM_AUTD_X; x++) { autd.AddDevice(x * W, y * H, 0); } } var ifname = AUTD3Cnt.GetIfname(); autd.Open(ifname); autd.Clear(); autd.Calibrate(); autd.StaticMod(0xFF); Scan(autd, 10, pico, robo, cond, NUM_AUTD_X, NUM_AUTD_Y, Z, compress); Console.WriteLine("Finish."); autd.Stop(); robo.Finish(); } }
static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); // Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); /* List<CartesianPosition> Trajectoire = new List<CartesianPosition>(); for (int i = 1; i <= 100; i++) { Trajectoire.Add(new CartesianPosition { X = i + Robot.GetCurrentPosition().X, Y = i + Robot.GetCurrentPosition().Y, Z = i + Robot.GetCurrentPosition().Z, A = 0 + Robot.GetCurrentPosition().A, B = 0 + Robot.GetCurrentPosition().B, C = 0 + Robot.GetCurrentPosition().C }); } //Robot.PlayTrajectory(Trajectoire); Robot.StartRelativeMovement(); CartesianPosition Test = new CartesianPosition { X = -1, Y = 0, Z = 0, A = 0, B = 0, C = 0 }; Robot.SetRelativeMovement(Test); System.Threading.Thread.Sleep(2000); Robot.StopRelativeMovement(); */ Device Mouse = new Device(); //------------------------------------------------- bool loop = true; while (loop) { Console.WriteLine("Type number and press Return"); Console.WriteLine("press 2 pour ouvrir la pince"); Console.WriteLine("press 3 pour fermer la pince"); try { int i = int.Parse(Console.ReadLine()); switch (i) { case 0: { for (int ii = 1; ii <= 20; ii++) { bool pinceOuverte = Robot.IsGripperOpen(); //bool pinceOuverte = true; Console.WriteLine("Pince ouverte : "); Console.WriteLine(pinceOuverte); } break; } case 1: { for (int ii = 1; ii <= 20; ii++) { var valeurCapteur = Robot.ReadSensor(); //int valeurCapteur = 12345; Console.WriteLine("Valeur du capteur : "); Console.WriteLine(valeurCapteur); } break; } case 2: { Console.WriteLine("Ouvrir la pince"); Robot.OpenGripper(); break; } case 3: { Console.WriteLine("Fermer la pince"); Robot.CloseGripper(); break; } default: { System.Console.WriteLine("Other number"); break; } } } catch { } System.Threading.Thread.Sleep(50); } //------------------------------------------------- }
private static void Main() { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); string valeurX = "0", valeurY = "0", valeurZ = "0", valeurA = "0", valeurB = "0", valeurC = "0", valeurPince = "0", valeurDetection = "0"; XmlDocument doc = new XmlDocument(); XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(docNode); //XmlNode productsNode = doc.CreateElement("products"); XmlNode RobotNode = doc.CreateElement("Coordonees_Robot"); doc.AppendChild(RobotNode); for (int i = 1; i < 666; i++) { Console.WriteLine(i); string id = i.ToString(); //iString Console.WriteLine(id); Console.WriteLine("press 0 pour ajouter point; press 9 pour finaliser"); int j = i; while (j == i) { try { int press = int.Parse(Console.ReadLine()); switch (press) { case 0: { /* //Doner valeurs a X Y Z; apres on metra get.currentPosition... * System.Console.WriteLine("Ecrivez la valeur de X"); * valeurX = (Console.ReadLine()); * System.Console.WriteLine("Ecrivez la valeur de Y"); * valeurY = (Console.ReadLine()); * System.Console.WriteLine("Ecrivez la valeur de Z"); * valeurZ = (Console.ReadLine()); */ // valeurX = Robot.GetCurrentPosition().X.ToString(); valeurY = Robot.GetCurrentPosition().Y.ToString(); valeurZ = Robot.GetCurrentPosition().Z.ToString(); valeurA = Robot.GetCurrentPosition().A.ToString(); valeurB = Robot.GetCurrentPosition().B.ToString(); valeurC = Robot.GetCurrentPosition().C.ToString(); valeurDetection = Robot.ReadSensor().ToString(); valeurPince = Robot.IsGripperOpen().ToString(); //*/ // Create and add another product node---------------------------Creation nouveau position XmlNode PositonNode = doc.CreateElement("Position"); XmlAttribute postitionAttribute = doc.CreateAttribute("id"); postitionAttribute.Value = id; PositonNode.Attributes.Append(postitionAttribute); RobotNode.AppendChild(PositonNode); XmlNode xNode = doc.CreateElement("X"); xNode.AppendChild(doc.CreateTextNode(valeurX)); PositonNode.AppendChild(xNode); XmlNode yNode = doc.CreateElement("Y"); yNode.AppendChild(doc.CreateTextNode(valeurY)); PositonNode.AppendChild(yNode); XmlNode zNode = doc.CreateElement("Z"); zNode.AppendChild(doc.CreateTextNode(valeurZ)); PositonNode.AppendChild(zNode); XmlNode aNode = doc.CreateElement("A"); aNode.AppendChild(doc.CreateTextNode(valeurA)); PositonNode.AppendChild(aNode); XmlNode bNode = doc.CreateElement("B"); bNode.AppendChild(doc.CreateTextNode(valeurB)); PositonNode.AppendChild(bNode); XmlNode cNode = doc.CreateElement("C"); cNode.AppendChild(doc.CreateTextNode(valeurC)); PositonNode.AppendChild(cNode); //----------------------------- Pince et Capteur ------------------------------------------ XmlNode gripperNode = doc.CreateElement("Pince"); gripperNode.AppendChild(doc.CreateTextNode(valeurPince)); PositonNode.AppendChild(gripperNode); XmlNode detectionNode = doc.CreateElement("Detection"); detectionNode.AppendChild(doc.CreateTextNode(valeurDetection)); PositonNode.AppendChild(detectionNode); j = j + 1; break; } case 9: { i = 666; break; } default: { System.Console.WriteLine("Pres 0 pour enregitrer un nouveau point"); break; } } } catch { } } } doc.Save(Console.Out); doc.Save(@"C:\Users\Jordi\Desktop\novaLynx\jordi\XML\xmlTestJordi4\kukaAgilus.xml"); System.Console.ReadLine(); }
static void Main(string[] args) { RobotController Robot = new RobotController(); Robot.Connect("192.168.1.1"); Console.WriteLine("Robot connecté ... "); // Console.WriteLine("Robot position : x:" + Robot.GetCurrentPosition().X + "; y:" + Robot.GetCurrentPosition().Y + "; z: " + Robot.GetCurrentPosition().Z); /* * List<CartesianPosition> Trajectoire = new List<CartesianPosition>(); * for (int i = 1; i <= 100; i++) * { * Trajectoire.Add(new CartesianPosition * { * X = i + Robot.GetCurrentPosition().X, * Y = i + Robot.GetCurrentPosition().Y, * Z = i + Robot.GetCurrentPosition().Z, * A = 0 + Robot.GetCurrentPosition().A, * B = 0 + Robot.GetCurrentPosition().B, * C = 0 + Robot.GetCurrentPosition().C * }); * } * //Robot.PlayTrajectory(Trajectoire); * Robot.StartRelativeMovement(); * CartesianPosition Test = new CartesianPosition * { * X = -1, * Y = 0, * Z = 0, * A = 0, * B = 0, * C = 0 * }; * Robot.SetRelativeMovement(Test); * System.Threading.Thread.Sleep(2000); * Robot.StopRelativeMovement(); */ Device Mouse = new Device(); //------------------------------------------------- bool loop = true; while (loop) { Console.WriteLine("Type number and press Return"); Console.WriteLine("press 2 pour ouvrir la pince"); Console.WriteLine("press 3 pour fermer la pince"); try { int i = int.Parse(Console.ReadLine()); switch (i) { case 0: { for (int ii = 1; ii <= 20; ii++) { bool pinceOuverte = Robot.IsGripperOpen(); //bool pinceOuverte = true; Console.WriteLine("Pince ouverte : "); Console.WriteLine(pinceOuverte); } break; } case 1: { for (int ii = 1; ii <= 20; ii++) { var valeurCapteur = Robot.ReadSensor(); //int valeurCapteur = 12345; Console.WriteLine("Valeur du capteur : "); Console.WriteLine(valeurCapteur); } break; } case 2: { Console.WriteLine("Ouvrir la pince"); Robot.OpenGripper(); break; } case 3: { Console.WriteLine("Fermer la pince"); Robot.CloseGripper(); break; } default: { System.Console.WriteLine("Other number"); break; } } } catch { } System.Threading.Thread.Sleep(50); } //------------------------------------------------- }
static void Main(string[] args) { using var robo = new RobotController(); if (!robo.Connect("172.16.99.57")) { Console.WriteLine("Failed to connect to robot."); return; } robo.MoveTo(0, 0, 200); using var pico = new PicoCnt(); using var autd = new AUTD3Cnt(); autd.AddDevice(0, 0, 0); var ifname = AUTD3Cnt.GetIfname(); autd.Open(ifname); autd.Clear(); autd.Calibrate(); autd.StaticMod(0xFF); var compress = false; var cond = new Conditions() { SampleRateHz = 2_000_000, SampleLen = 2_000, Temp = 23.0f, Humidity = 19f, Amplifer = 10, X = 0, Y = 0, Z = 200 }; pico.SetChannel(0, 500, 1, null); pico.SetCondition(cond); Console.WriteLine("Connect Ch. A to microphone. conditions are ..."); cond.Check(); Scan(autd, pico, cond, "amp", false, (autd, i) => autd.TransTest(0, (byte)i, 0), compress); cond.SampleRateHz = 10_000_000; cond.SampleLen = 20000; pico.SetChannel(0, 50000, 10, null); pico.SetCondition(cond); Console.WriteLine("Connect Ch. A to microphone. conditions are ..."); cond.Check(); Scan(autd, pico, cond, "input", false, (autd, i) => autd.TransTest(0, (byte)i, 0), compress); pico.SetChannel(0, 500, 1, null); pico.SetChannel(1, 5000, 10, 1000); pico.SetCondition(cond); Console.WriteLine("Connect Ch. A to microphone and Ch. B to 40kHz reference signal. conditions are ..."); cond.Check(); Scan(autd, pico, cond, "phase", true, (autd, i) => autd.TransTest(0, 0xFF, (byte)i), compress); Console.WriteLine("Finish."); robo.Finish(); } }
static void Main(string[] args) { Console.WriteLine("Start program..."); Mouse MyMouse = new Mouse(); RobotController MyRobot = new RobotController(); // Calibre la souris, valider la calibration avec la touche 4 MyMouse.Calibrate(); // Connexion au robot MyRobot.Connect("192.168.1.1"); // Ouvre ou ferme la pince //if (MyRobot.IsGripperOpen()) MyRobot.CloseGripper(); //else MyRobot.OpenGripper(); // Envoi la commande au robot MyRobot.StartRelativeMovement(); // Créer un objet thread de l'objet Mouse, fonction Loop Thread MouseThread = new Thread(MyMouse.Loop); // Demarre le thread. MouseThread.Start(); Console.WriteLine("main thread: Starting mouse thread..."); // Attend que le thread soit lancé et activé while (!MouseThread.IsAlive) { ; } Console.WriteLine("main thread: Mouse alive"); // Boucle tant qu'on utilise la souris bool endMouse = true; while (endMouse) { // Met le thread principale (ici) en attente d'une millisecond pour autoriser le thread secondaire à faire quelque chose Thread.Sleep(1); // Convertion des donnees de la souris pour le robot CartesianPosition CartPositionMouse = new CartesianPosition(); CartPositionMouse.X = -MyMouse.MoveByVector.Z; CartPositionMouse.Y = -MyMouse.MoveByVector.X; CartPositionMouse.Z = MyMouse.MoveByVector.Y; CartPositionMouse.A = -MyMouse.RotateByVector.Z; CartPositionMouse.B = -MyMouse.RotateByVector.X; CartPositionMouse.C = MyMouse.RotateByVector.Y; Console.WriteLine("cmd robot: X : {0} | Y : {1} | Z : {2} | A : {3} | B : {4} | C : {5}", CartPositionMouse.X, CartPositionMouse.Y, CartPositionMouse.Z, CartPositionMouse.A, CartPositionMouse.B, CartPositionMouse.C); // Envoi les commandes de deplacement au robot MyRobot.SetRelativeMovement(CartPositionMouse); } // Demande l'arret du thread de la souris MyMouse.RequestStop(); // Bloque le thread principale tant que le thread Mouse n'est pas terminé MouseThread.Join(); // Arret le mouvement MyRobot.StopRelativeMovement(); Console.WriteLine("main thread: mouse thread has terminated."); Console.WriteLine("End program... Press a key to quit..."); Console.ReadKey(); }