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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
public class CmdDecollage extends Thread {
String commande=""; // pourquoi conserver la commande ? et ne pas utiliser une constante (static final)
byte[] cmdToByte; // pareil ici, ne regarde qu'une seule fonction !
InetAddress IpDrone; // idem ! (attention aussi le nom de la variable devrait etre ipDrone et non IpDrone)
DatagramSocket clientSocket;
boolean etat;
DatagramPacket sendPacketWithCmd;
private byte[] ip = {(byte)192, (byte)168, (byte)1, (byte)1 };
boolean isRunning = true;
private final static long TIME_SLEEP= 20;
//---- Traitement ----//
public void run() {
// un seul block try pour tout ce qui est nécessaire
try {
//---- Convertit l'adresse byte en IP ----//
IpDrone = InetAddress.getByAddress(ip);
//---- Cree le Socket ----//
clientSocket = new DatagramSocket();
while(isRunning){ // le while ne sert à rien, runControl() met toujours isRunning à "false"
runControl();
Thread.sleep(TIME_SLEEP);
}
} catch (Exception ex) {
Log.e("CmdDecollage","Erreur ouverture socket !",ex);
}
}
public void runControl(){
//---- Commande à envoyer au Drone ----//
commande = "AT*REF=1,290717696<LF>AT*REF=2,290717952<LF>AT*REF=3,290717696<LF>";
//---- Convertit la commande en Byte ----//
cmdToByte = commande.getBytes(); // sur que c'est en UTF-16 que l'ARDrone doit recevoir les commandes ?
//---- Envoie la packet avec la commande au Drone ----//
try {
sendPacketWithCmd = new DatagramPacket(cmdToByte, cmdToByte.length, IpDrone, 5556);
clientSocket.send(sendPacketWithCmd);
} catch (IOException e) {
Log.e("CmdDecollage","Erreur envoi de commande !",e);
etat = false; // ne sert a rien... etat=true juste après !
}
etat = true; // à bouger dans le try non ?
isRunning=false;
}
public boolean retourneetat(){
return etat;
}
} |
Partager