Il peut être intéressant pour certains projets de faire communiquer plusieurs NXT entre eux. Pendant nos travaux sur le robot, on s'était demandé si une telle communication était possible.
Cet article vient confirmer que oui, c'est possible !
Pour confirmer la faisabilité d'une telle communication, j'ai développé un programme simple constitué d'un « serveur » fonctionnant sur PC, et d'un « client » fonctionnant sur NXT. Ce programme permet aux robots d'envoyer des messages textes en ciblant le destinataire ou en l'envoyant à tous les robots connectés. La communication peut être faite simultanément par les robots, et dans n'importe quelle sens.
Le programme fonctionne très bien, les NXT arrivent bien à communiquer. Cependant, je n'ai pas pu tester avec plus de 2 NXT (même si normalement cela ne change rien).
Ce programme n'est pas parfait mais il pourra servir de base à quelqu'un qui voudrai se lancer dans un projet impliquant une communication entre plusieurs NXT.
La classe principale est « Master ». Celle-ci lance autant de threads que d'adresse de robot que vous lui avez donné à sa construction. Elle donne à chaque thread une adresse, une « boite aux lettres » personnel, et un « facteur » connu de tous les threads (celui-ci connaît toutes les adresses / boites aux lettres). Un thread communique avec un unique et différent NXT. Si sa boite au lettre contient quelque chose, alors il récupère la « lettre » et l'envoie à son NXT. Un sous-thread de réception écoute en permanence le NXT associé. A la réception d'un message, il demande au facteur d'aller poster la lettre où il faut.
Structure des messages transmis (type ''StringUTF'') :
Coté NXT, une classe « Client » qui attend que le PC se connecte, et où vous pouvez envoyer des messages avec les destinataires voulus. Elle contient un thread de réception qui écoute en permanence le PC et qui affiche les messages entrant.
Pour les tests, l'appuie sur un des boutons envoie un message (les adresses des destinataires sont à régler pour vos robots).
Les Client doivent être lancés avant le Master.