From 8f486613be58ced269db1d437e560c16558604e8 Mon Sep 17 00:00:00 2001 From: becquet Date: Thu, 10 May 2007 18:49:20 +0000 Subject: Création de chuck, le programme du robot 2007. --- i/chuck/src/motor/test_motor.cc | 99 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 i/chuck/src/motor/test_motor.cc (limited to 'i/chuck/src/motor/test_motor.cc') diff --git a/i/chuck/src/motor/test_motor.cc b/i/chuck/src/motor/test_motor.cc new file mode 100644 index 0000000..760dfd6 --- /dev/null +++ b/i/chuck/src/motor/test_motor.cc @@ -0,0 +1,99 @@ +// test_motor.cc +// marvin - programme du robot 2006. {{{ +// +// Copyright (C) 2006 Nicolas Schodet +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "motor.hh" +#include "tester/tester.hh" +#include "timer/timer.hh" + +#include +#include +#include + +class TestMotor : public Tester +{ + private: + Motor motor_; + public: + /// Constructor. + TestMotor (int argc, char **argv) + : Tester (argc, argv) + { } + /// Wait. + void wait (int ms) + { + int t, stop; + t = Timer::getProgramTime (); + stop = t + ms; + while (t < stop) + { + motor_.wait (stop - t); + t = Timer::getProgramTime (); + } + } + /// Called after each command called. + void postcall (void) + { + while (!motor_.wait () || !motor_.finish ()) + ; + } + /// Executed before checking/running commands. Good place to add command + /// to the interpreter. + void preRun (void) + { + Interpreter &i = getInterpreter (); + i.add ("wait", Interpreter::memFunc (*this, &TestMotor::wait), + "wait MS\nwait for a delay in millisecond"); + i.add ("move", Interpreter::memFunc (motor_, &Motor::move), + "move T(mm) A(mm)\n" + "linear and angular move"); + i.add ("rotate", Interpreter::memFunc (motor_, &Motor::rotate), + "rotate A(rad)\n" + "rotate round axis center"); + i.add ("findHole", Interpreter::memFunc (motor_, &Motor::findHole), + "findHole\nfind a hole"); + i.add ("stop", Interpreter::memFunc (motor_, &Motor::stop), + "stop\nguess what"); + i.add ("_postcall", + Interpreter::memFunc (*this, &TestMotor::postcall)); + } + /// Executed after running commands. + void postRun (void) + { + motor_.getAsserv ().reset (); + } +}; + +int +main (int argc, char **argv) +{ + try + { + TestMotor tm (argc, argv); + tm.run (); + } + catch (const std::exception &e) + { + std::cerr << e.what () << std::endl; + } +} -- cgit v1.2.3