summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/motor/test_motor.cc
diff options
context:
space:
mode:
authorschodet2004-05-09 18:03:51 +0000
committerschodet2004-05-09 18:03:51 +0000
commitfbf9fdbeb40baf2431da481d14edfa1d232dc184 (patch)
treeaf7ac178dfb692faf1f87bf14712df0a862fc4df /2004/i/nono/src/motor/test_motor.cc
parent1bb779ae372de25e1af78dcad84170d5c31e5d43 (diff)
gpio
hermite limitation de la vitesse angulaire movement queue motor_cmd
Diffstat (limited to '2004/i/nono/src/motor/test_motor.cc')
-rw-r--r--2004/i/nono/src/motor/test_motor.cc123
1 files changed, 25 insertions, 98 deletions
diff --git a/2004/i/nono/src/motor/test_motor.cc b/2004/i/nono/src/motor/test_motor.cc
index 42130bf..b393bb7 100644
--- a/2004/i/nono/src/motor/test_motor.cc
+++ b/2004/i/nono/src/motor/test_motor.cc
@@ -23,14 +23,12 @@
//
// }}}
#include "motor.h"
-#include "erreur/erreur.h"
#include "date/date.h"
-#include "movement_types.h"
+#include "motor_cmd.h"
#include <iostream>
#include <unistd.h>
-#include <stdlib.h>
-#include <math.h>
+#include <cstdlib>
using namespace std;
@@ -39,15 +37,8 @@ syntax (void)
{
std::cout <<
"test_motor - teste la gestion du déplacement.\n"
- " g go (active l'asservissement)\n"
- " G ungo (désactive l'asservissement)\n"
- " w wait stop (attend l'arret complet)\n"
- " b <speed> <len>\n"
- " mouvement basique\n"
- " t <x> <y> va en (x, y)\n"
- " r <a> se dirige vers l'angle a en degrés\n"
- " c <r> <a> Suis un arc de rayon r et d'angle a en degrés\n"
- " <timeout> attend un certain temps (qui augmente avec timeout)\n"
+ << motorHelp <<
+ " <timeout> attend (ms)\n"
" ? cet ecran d'aide" << std::endl;
}
@@ -60,95 +51,31 @@ main (int argc, char **argv)
int i = 1;
while (i < argc)
{
- switch (argv[i][0])
+ if (!motorCmd (argc, argv, i, m))
{
- case 'g':
- cout << "test: go" << endl;
- i++;
- m.go ();
- break;
- case 'G':
- cout << "test: ungo" << endl;
- i++;
- m.go (false);
- break;
- case 'w':
- cout << "test: wait stop" << endl;
- i++;
- m.waitStopped ();
- break;
- case 'b':
- {
- i++;
- double speed;
- double len;
- if (i >= argc) break;
- speed = atof (argv[i++]);
- if (i >= argc) break;
- len = atof (argv[i++]);
- cout << "test: basic " << speed << ' ' << len << endl;
- Movement *mov = new MovementBasic (speed, len);
- m.setMovement (mov);
- }
- break;
- case 't':
- {
- i++;
- double dX, dY;
- if (i >= argc) break;
- dX = atof (argv[i++]);
- if (i >= argc) break;
- dY = atof (argv[i++]);
- cout << "test: goto " << dX << ' ' << dY << endl;
- Goto *g = new GotoSimple (dX, dY);
- Movement *mov = new MovementGoto (g);
- m.setMovement (mov);
- }
- break;
- case 'r':
- {
- i++;
- double dA;
- if (i >= argc) break;
- dA = atof (argv[i++]);
- cout << "test: rotation " << dA << endl;
- Movement *mov = new MovementRotation (dA * 2 * M_PI /
- 360);
- m.setMovement (mov);
- }
- break;
- case 'c':
- {
- i++;
- double r, a;
- if (i >= argc) break;
- r = atof (argv[i++]);
- if (i >= argc) break;
- a = atof (argv[i++]);
- cout << "test: circle " << r << ' ' << a << endl;
- Goto *g = new GotoCircle (r, a * 2 * M_PI / 360);
- Movement *mov = new MovementGoto (g);
- m.setMovement (mov);
- }
- break;
- case '?':
- syntax ();
- return 0;
- default:
- int s;
- s = atoi (argv[i++]);
- if (s == 0)
+ switch (argv[i][0])
{
+ case '?':
syntax ();
- return 1;
- }
- cout << "test: sleep " << s << endl;
- for (int j = 0; j < s * 1000 / 50; ++j)
- {
- m.ok ();
- Date::wait (50);
+ return 0;
+ default:
+ int s;
+ s = atoi (argv[i++]);
+ if (s == 0)
+ {
+ syntax ();
+ return 1;
+ }
+ cout << "test: sleep " << s << endl;
+ int start;
+ start = Date::getInstance ().start ();
+ while (Date::getInstance ().start () < start + s)
+ {
+ m.ok ();
+ Date::wait (50);
+ }
+ break;
}
- break;
}
m.waitEnd ();
}