Beruflich Dokumente
Kultur Dokumente
Pour pouvoir utiliser ANT en ligne de commande, on doit tout d’abord se trouver dans le
répertoire du programme que l’on cherche à compiler ( avec le build.xml ).
Après cette étape vous pouvez connecter votre SUNSPOT à votre machine
ant info : permet d’établir la connexion avec le SUNSPOT et d’afficher sa configuration et ses
informations actuelles.
RMQ : avant d’appuyer sur reset il est possible d’afficher les system.out.println générés par le
programme pour débugger
ant run : permet de démarrer l’application dans le cas ou celle-ci ne démarre pas
automatiquement. Ceci permet également d’afficher la console des messages, pour arrêter le
programme (qui est en attente) il suffit d’appuyer sur le bouton reset.
ant deploy run : permet de faire les deux dernières commande en même temps.
ant jar-deploy -Djar.file=myapp.jar : si vous avez déjà un fichier jar existant, placez le dans le
même dossier que le build.xml. Ceci flashera votre nouvelle application sur le SUNSPOT.
Le SUNSPOT est une application conforme au standard MIDLet. Il se construit avec trois
membres startApp(), pauseApp() et destroyApp(). Si vous voulez que l’application quitte,
vous devez appeler la méthode notifyDestroyed() et pas System.exit().
ant deploy –Dmidlet=2 : permet de développer le second MIDLet sur le SUNSPOT. Par défaut, le
MIDLet 1 est lancé, et il est possible d’en lancer plusieurs.
Il est également envisageable de choisir quel midlet démarrer en premier lors du boot
ant startonreboot –Duri=xxx –Dmidlet=n
Pour flasher une application sur le SUNSPOT à l’aide de la station de base, il faut tout d’abord
mettre le SUNSPOT en mode OTA (“over the air”) et pas la station de base. Pensez à appuyer sur
le bouton reset ! Le flashage ota peut être fait à l’aide du manager ou de la commande ant :
ant enableota
Une fois ce mode activé et que vous vous trouvez dans le bon dossier, la commande suivante
ant -DremoteId=<IEEE address> jar-deploy permettra de flasher le nouveau jar.
Attention, vous devez avoir la bonne clé publique sur le SUNSPOT sinon cela ne fonctionnera
pas. De plus, il est possible de flasher plusieurs SUNSPOT à la fois avec cette même commande et
en rajoutant les différentes adresses IEEE à la suite séparée d’une virgule :
ant -DremoteId=”<IEEE address1>,< IEEE address2>” jar-deploy
Nous avons testé la chose suivante : est-il possible de flasher un SUNSPOT avec une autre station
de base que celle avec laquelle il a été initialement flashé. Problème : le SUNSPOT dispose d’une
clé publique qui lui empêche d’être flashé sans autorisations. La fonction suivante :
ant deletepublickey : permet de « libérer » le SPOT et de le flasher avec une autre station de
base. Attention : une foi reflashé, la clé publique de l’autre hôte est échangée, vous n’aurez donc
plus la main sur votre SUNSPOT à moins que l’autre hôte face la même manipulation de
suppression de clé publique.
Si vous travaillez à plusieurs, voici une manipulation qui peut vous intéresser : rendez vous dans
le dossier « sunspotkeystore » (faire une recherche, normalement dans les utilisateurs de la
session Windows actuelle.)
Par exemple sous vista : C:\Users\NOM_UTILISATEUR\sunspotkeystore
et copiez les deux fichiers présents, et copiez les dans ce même dossier sur tout les ordinateurs
que vous désirez utiliser. Ainsi vous pourrez chacun flasher les SUNSPOT avec la même clé, et
donc ne plus être limité par cette sécurité.
S’il subsiste un doute dans la sécurité du SUNSPOT, il est possible de changer la clé publique avec
l’option ant flashlibrary
J2ME utilise un framework de connexion générique également appelé GCF capable d’effectuer des
entrées sorties. Il propose un choix de deux protocoles :
Le protocole RADIOSTREAM, et le protocole RADIOGRAM.
Radiostream offre une communication fiable, bufférisée et à base de streams entre deux appareils.
C’est une sorte de peer-to-peer.
Radiogramme propose une communication à base de datagramme entre deux engins. Le souci de ce
protocole est qu’il ne propose pas de garanties sur la bonne livraison des paquets. Ceux-ci pourraient
être envoyés deux fois ou même ne jamais arriver.
Exemple du radiostream :
Pour ouvrir une connexion :
RadiostreamConnection conn=(RadiostreamConnection)Connector.open("radiostream:<destAddr>:<portNo>");
Avec destAddr l’adresse IEEE et portNo un port entre 1 et 255. Pour les deux appareils il faudra donc
spécifier les bonnes adresses et les bons ports. En reprenant l’exemple donné dans le guide de
Programdéveloppement
1 :
RadiostreamConnection conn = (RadiostreamConnection)Connector.open("radiostream://0014.4F01.0000.0006:100");
DataInputStream dis = conn.openDataInputStream();
DataOutputStream dos = conn.openDataOutputStream();
try {
dos.writeUTF("Hello up there");
dos.flush();
System.out.println ("Answer was: " + dis.readUTF());
} catch (NoRouteException e) {
System.out.println ("No route to 0014.4F01.0000.0006");
} finally {
dis.close();
dos.close();
conn.close();
}
Program 2
RadiostreamConnection conn = (RadiostreamConnection)Connector.open("radiostream://0014.4F01.0000.0007:100");
DataInputStream dis = conn.openDataInputStream();
DataOutputStream dos = conn.openDataOutputStream();
try {
String question = dis.readUTF();
if (question.equals("Hello up there")) {
dos.writeUTF("Hello down there");
} else {
dos.writeUTF("What???");
}
dos.flush();
} catch (NoRouteException e) {
System.out.println ("No route to 0014.4F01.0000.0007");
} finally {
dis.close();
dos.close();
conn.close();
}
Veillez à ce que le programme 1 soit lancé avant le second, sinon le second n’attrapera pas le « hello
up there » . Ce code ayant fonctionné pour nous, pour des raisons évidentes nous ne testerons pas
l’autre méthode moins fiable. Le message a bel et bien été transmis par radio d’un spot à l’autre.
Protocole http