private void ExecuteCommand(Command cmd) { StreamWriter writer = null; try { String path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), "htdocs"); path = Path.Combine(path, "drive.txt"); writer = File.AppendText(path); Drive drive = World.Robot.drv; MethodInfo methodInfo = drive.GetType().GetMethod(cmd.Method, cmd.GetTypes().ToArray()); if (methodInfo != null && methodInfo.GetCustomAttributes(typeof(RunMethod), false).Length == 1) { methodInfo.Invoke(drive, cmd.GetValues().ToArray()); while (!drive.Done) { Thread.Sleep(20); } writer.WriteLine(cmd.ToString()); } else { Console.WriteLine("could not interpret command"); } } finally { if (writer != null) { writer.Flush(); writer.Close(); } } }
public void CommandTest() { XmlSerializer serializer = new XmlSerializer(typeof(Command)); StringWriter stringWriter = new StringWriter(); XmlWriter xmlWriter = XmlWriter.Create(stringWriter); Command cmd = new Command(); // TODO: Initialize to an appropriate value cmd.Method = "RunLine";//RunLine(float length, float speed, float acceleration) cmd.Parameters.Add(1.0f); cmd.Parameters.Add(1.0f); cmd.Parameters.Add(1.0f); serializer.Serialize(xmlWriter, cmd); xmlWriter.Flush(); Debug.WriteLine(stringWriter.ToString()); //XmlSerializer serializer = new XmlSerializer(typeof(Command)); StringReader stringReader = new StringReader(stringWriter.ToString()); XmlReader xmlReader = XmlReader.Create(stringReader); if (serializer.CanDeserialize(xmlReader)) { object o = serializer.Deserialize(xmlReader); if (o is Command) { Command cmdDeserialized = (Command)o; Debug.WriteLine(cmdDeserialized.ToString()); } } }
public void InterpretCommandTest() { RunMode actualMode = Constants.IsWinCE ? RunMode.Real : RunMode.Virtual; Drive drv = new Drive(actualMode); Robot r = new Robot(actualMode); World.Robot = r; Interpreter interpreter = new Interpreter(); //Interpreter_Accessor target = new Interpreter_Accessor(); // TODO: Initialize to an appropriate value Command cmd = new Command(); // TODO: Initialize to an appropriate value cmd.Method = "RunLine";//RunLine(float length, float speed, float acceleration) //cmd.Parameters.Add(new CommandParam() { Type = typeof(float), Parameter = 1 }); //cmd.Parameters.Add(new CommandParam() { Type = typeof(float), Parameter = 1 }); //cmd.Parameters.Add(new CommandParam() { Type = typeof(float), Parameter = 1 }); ////cmd.Parameters.Add(new CommandParam() { Type = typeof(float), Parameter = 1 }); //interpreter.InterpretCommand(cmd); //target.InterpretCommand(cmd); Assert.Inconclusive("A method that does not return a value cannot be verified."); }