Voici un projet sur lequel je suis en train de travailler.
Mon projet consiste à utiliser la nintendo DS pour contrôler un PC ( dans mon idée original pour la partie multimédia ). Il y a donc 2 partie dans ce projet : Le serveur sur PC et le client sur DS.
Cependant, nintendo DS oblige, il y 2 contraintes techniques de taille. Premièrement la communication entre DS et PC passe par un réseau local ( ou par internet sa doit marcher également ) mais la DS doit se connecter à une AP via le wifi, et secondement l'AP doit proposer une connection wifi en WEP ( la DS ne gérant pas le WPA ).
1° Le serveurLe serveur est codé en java, donc est indépendant de la plateforme ( Linux, windows, Mac ). Au début je pensais faire un programme qui simule l'appuie sur les touches multimédias, mais cela aurai surement rendu le serveur dépendant de la plateforme, et le programme absolument pas flexible. J'ai donc décider d'utiliser un fichier de 'configuration' qui permet d'associer facilement à chaque touche de la DS ( sauf start et select ), une commande exécuté en console et une description de cette commande ( affiché sur la DS )
Les commandes sont chargés par défaut dans le fichier 'COMMANDS', vous pouvez également utiliser un fichier que vous passez en argument au programme.
Les fichier de 'configuration' sont formé selon cette forme:
Nom_Touche:commande_a_lancer:Description de la commande
#Exemple
UP:rhythmbox-client --volume-up:Volume UP
Les touches peuvent être : A,B,Y,X,L,R,UP,DOWN,LEFT et RIGHT. Le programme ignore les lignes vides ainsi que celles qui commencent par #.
Les commandes peuvent comporter des espaces, il n'y a aucune limitation à propos de la commande.
Les descriptions sont limités à 26 caractères, vous pouvez donc en mettre plus mais le texte sera tronqué.
Vous pouvez passer en 1ier argument du programme, soit le port d'écoute, soit le fichier de 'configuration', soit le port suivi du fichier.
java NdsRemoteServeur 8000
java NdsRemoteServeur fichier
java NdsRemoteServeur 8000 fichier
Par défaut, le port d'écoute est 8000.
2° Le clientLa connexion au wifi se fait plus ou moins 'automatiquement', il faut cependant pré-configurer la connexion WFC, par un jeu officiel ( exemple Mario Kart).Il vous faut également le fichier 'server' à la racine de votre Carte µSD, qui doit contenir une seule ligne sous la forme : 'ip:port', l'ip doit être celle du PC que vous souhaitez contrôler et le port d'écoute.
Exemple
192.168.0.10:8000
Sur l'écran de la DS vous verrez donc les commentaires liée à chaque touche, affiché de façon très moche pour le moment, j'essayerai de corriger cela dans les prochaines versions.
La touche SELECT permet de se déconnecter du serveur, mais éteindre la DS ne pose pas de problèmes non plus en fait
Les problèmes et Bug connusPour le moment je n'ai pas vraiment trouvé de bug, cependant l'affichage est moche , le programme met un certain temps à se lancer ( mais je ne pense pas pouvoir y changer quelque chose ), et dès fois la connexion wifi n'aboutit pas ( idem). Si vous trouvez des bugs n'hésitez pas à m'en faire part.
Pour le moment, je n'ai pas tester si le serveur marche sous windows, mais normalement devrait pas avoir de problèmes.
La suitePour le moment je n'ai pas vraiment d'idée, mais il y aura surement des corrections et des ajouts à faire dans de futures versions.Encore une fois, si vous avez des idées.... ;-)
Les sourcesLe serveur est codé en objet, le fichier NdsRemoteServeur.java contient le main, appelle l'objet Command.java pour lire dans le fichier de configuration, puis l'objet Serveur.java.
http://alzeimeur.free.fr/NdsRemoteControl/Serveur_src.zipLe client pour DS... Pas grand chose à dire
http://alzeimeur.free.fr/NdsRemoteControl/DSRemoteCtrl_src.zipLes sources sont assez commentés
TelechargerLes fichier .class du serveur :
http://alzeimeur.free.fr/NdsRemoteControl/Serveur.zipLes fichier pour DS :
http://alzeimeur.free.fr/NdsRemoteControl/DSRemoteCtrl.zipLes screenshotComme pour le moment, il n'y a pas moyen de faire marcher mon client sur émulateur ( Wifi oblige ) , donc quand je trouve mon APN je fais quelques photos.
