Bluecove Bluetooth et robots Lego NXT
Bonjour à tous,
J'ai écumé le web, mais Google ne m'a pas aidé des masses :mur:
Je pose mon problème :
J'ai pour projet de gérer des robots à distance via CORBA.
J'ai pour cela, un serveur (Entrepôt) dans lequel les robots s'enregistrent et via lequel les clients demandent le pilotage des robots.
Jusque là, tout va bien, les tests fonctionnent nickel ;)
Pour rendre le projet attractif et présentable, je dispose de robots Lego NXT.
Ces robots ont une petite VM Java du nom de leJOS
(en vrai ils ont la VM lejosRT mais c'est la même base, juste des dispositions au temps réel en plus :aie:)
Ils peuvent communiquer en Bluetooth, se qui est assez facile via leJOS.
Mais, leJOS ne peut pas embarquer de CORBA :|
J'ai donc pensé à un serveur Bluetooth qui ferait l'intermédiaire ...
Quand j'ai vu la JSR 82 (APIs for Bluetooth) je me suis dit "Youhou, ça va être easy !!".
J'ai rapidement déchanté :calim2:
Je m'attendais à des fonctions comme :
search / connect / disconnect / read / write / ...
Mais à part pour les plateformes comme Android, rien n'est simple :?
Et les docs et exemples ne sont pas assez explicites à mon gout :pleure:
Voila un exemple de code sur la brique Lego avec leJOS :
(je l'ai pris sur le net à l'instant, mon code étant plus fourni et inutile ici (faire bouger le robot :whistle:))
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
boolean isrunning = true;
while (true)
{
LCD.drawString("waiting",0,0);
LCD.refresh();
//Listen for incoming connection
NXTConnection btc = Bluetooth.waitForConnection();
btc.setIOMode(NXTConnection.RAW);
LCD.clear();
LCD.drawString("connected",0,0);
LCD.refresh();
//The InputStream for read data
DataInputStream dis=btc.openDataInputStream();
//loop for read data
while(isrunning){
Byte n=-1;
n=dis.readByte();
LCD.clear();
LCD.drawInt(n, 4, 4);
}
dis.close();
Thread.sleep(100); // wait for data to drain
}
LCD.clear();
LCD.drawString("closing",0,0);
LCD.refresh();
btc.close();
LCD.clear(); |
Voyez comme c'est facile avec leJOS :ccool:
Mais pour le serveur basé sur l'API bluecove ... :cfou:
J'ai cru comprendre qu'il fallait utiliser des "services" :weird:
Mais leJOS n'a pas la possibilité des les utiliser (pas le même DiscoveryListener et pas la classe UUID).
Ma question est donc en 2 parties :
1. Quelqu'un aurait-il une documentation/tutoriel/... simple ?
2. J'arrive à récupérer aisément un RemoteDevice de mon robot, comment me connecter dessus pour y faire des read / write ?
Merci :)