2

ドローンPARROTを制御するアプリケーションを構築しようとしています。このために、ドローンとデバイスの間にソケットを作成し、これをスレッドに入れます。最初はスレッドが正しく実行され、ドローンが離陸しましたが、今では (コードには触れていませんでした)、ドローンは離陸したくありません。スレッドが現在実行されていないことに気付きました (以前は正しく実行されていました)。これが、スレッドを使用した私のコードです。

String commande="";
byte[] cmdToByte;
InetAddress 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;

public void run() {
        try {
    IpDrone = InetAddress.getByAddress(ip);
    } catch (UnknownHostException e1) {

    etat = true;
    }

    try {
    clientSocket = new DatagramSocket();
    } catch (SocketException e) {

    etat = true;
    }

    while(isRunning){

    runControl();
    etat = true;
    try {
        Thread.sleep(TIME_SLEEP);
     } catch (InterruptedException e) {

        }
    }

    }
public void runControl(){

commande = "AT*REF=1,290717696<LF>AT*REF=2,290717952<LF>AT*REF=3,290717696<LF>";

cmdToByte = commande.getBytes();


try {

sendPacketWithCmd = new DatagramPacket(cmdToByte,cmdToByte.length,IpDrone,5556);                    
clientSocket.send(sendPacketWithCmd);
    } catch (IOException e) {
    e.printStackTrace();
    etat = true;
            }
etat = true;
isRunning=false;
clientSocket.disconnect();
clientSocket.close();
            }

AsyncTask があることは知っていますが、自分のスレッドでこれをやりたいと思っています。だから、私の問題は何か、スレッドが開始しない理由を知りたいです (メインアクティビティでは、start() でスレッドを実行します)。よろしくお願いします !

4

1 に答える 1