Sie sind auf Seite 1von 6

Résumé du „Developer‘s guide“ -> Sunspot

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 ).

ant jar-app permet de compiler l’application et d’en créer un jar


(si pas de nom spécifié, utilisera le nom du dossier)
Attention : avec vista des problèmes de droits peuvent survenir : veillez à lancer la fenêtre de
commande en mode administrateur.

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

Si plusieurs SUNSPOT sont connectés, la commande suivante est à utiliser :


ant -Dspotport=COM2 info

ant jar-deploy : permet de déployer le jar sur le SUNSPOT

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.

Construction d’un MIDLet

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().

Construction d’un MANIFEST

Le MANIFEST contient des informations concernant la ou les applications à flasher. Il se compose


ainsi :
MIDlet-Name: Air Text demo
MIDlet-Version: 1.0.0
MIDlet-Vendor: Sun Microsystems Inc
MIDlet-1: AirText, , org.sunspotworld.demo.AirTextDemo
MicroEdition-Profile: IMP-1.0
MicroEdition-Configuration: CLDC-1.1
SomeProperty: some value

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.

Utiliser plusieurs MIDLet sur le SUNSPOT


Il est possible de lancer plusieurs MIDLet sur le SUNSPOT. Chaque MIDLet est identifiable par
une URI de la forme spotsuite://xxx. Elle est générée automatiquement ou peux être modifiée.
ant deploy –Duri=spotsuite://myapp
Il est possible de consulter les suites lancées avec l’Appel suivant : ant getavailablesuites
Attention : à chaque fois qu’une librairie est déployée sur le SUNSPOT, toutes les suites
présentes sont effacées.
Pour effacer une suite non voulue, il faut entrer la commande suivante :
ant undeploy -Duri=spotsuite://xxx

Il est également envisageable de choisir quel midlet démarrer en premier lors du boot
ant startonreboot –Duri=xxx –Dmidlet=n

Utilisation de la station de base

On distingue deux modes de connexion :


® Mode dédié : la station de base est lancé dans la java machine du HOST et les adresses
sont confondues
® Mode partagé : 2 java machines sont lancées sur le HOST et donc il y a deux adresses
1) Une JVM pour l’application hôte
2) Une JVM pour la Basestation

Operations sans fil

Les opérations possibles sans fil son les suivantes :


• ant deploy
• ant jar-deploy
• ant run
• ant fork
• ant debug
• ant info
• ant settime
• ant flashlibrary
• ant deletepublickey
• ant set-system-property
• ant system-properties
• ant delete-system-property

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

Voici les interfaces présentes sur le SUNSPOT


La librairie de communication

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

Le code suivant permet d'afficher une page web à partir du SUNSPOT

HttpConnection connection = (HttpConnection)Connector.open("http://www.sunspotworld.com/");


connection.setRequestProperty("Connection", "close");
InputStream in = connection.openInputStream();
StringBuffer buf = new StringBuffer();
int ch;
while ((ch = in.read()) > 0) {
buf.append((char)ch);
}
System.out.println(buf.toString());
in.close();
connection.close();
Dans l'exemple on retourne la page web sur le system out.

Il faut pour cela connecter la base et exécuter la commande ant socket-proxy


Il est également possible d’avoir un affichage graphique pour le proxy en utilisant la commande du
haut avec en plus –gui : ant socket-proxy-gui

Das könnte Ihnen auch gefallen