2015-06-16 1 views
2

Я работаю над приложением для управления Parrot Ar.Drone с использованием Javadrone API & его библиотек. Я могу подключиться к drone &, чтобы он взлетел/успешно.Javadrone - Как получить информацию о дроне после подключения к беспилотированию? НАПРИМЕР. Уровень заряда батареи, высота и т. Д.?

Javadrone API можно скачать здесь: https://code.google.com/p/javadrone/downloads/list

Однако, я понятия не имею, как извлечь из информации Drone, что я хотел. Я пытался вызвать соответствующую функцию. Но он не может работать.

Мой код:

import com.codeminders.ardrone.NavData; 

In my class : - 
    //declare a jlabel for battery level 
    public NavData data; 
    public int value = data.getBattery(); 
    JLabel batteryStatus = new JLabel(); 

    batteryStatus.setForeground(Color.YELLOW);  
    batteryStatus.setText(data.getBattery()+ " %"); 

    if (value < 15) { 
      batteryStatus.setForeground(Color.RED); 
    } else if (value < 50) { 
      batteryStatus.setForeground(Color.ORANGE); 
    } else { 
      batteryStatus.setForeground(Color.GREEN); 
    } 

Любая идея, как сделать это работает? Если я запустил этот фрагмент кода, он не будет запущен, так как он будет компилировать stucks при методе getBattery(). Я хотел реализовать эту функцию вызова в проекте, чтобы соответствующая информация о рейсе. например, высота может отображаться в моих приложениях. Благодарю.

Выход компиляции кода:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at ardrone.arDroneFrame.jButtonConnectActionPerformed(arDroneFrame.java:462) 
LINE 462 : batteryStatus.setText(data.getBattery()+ " %"); 
+0

Я не уверен, что это только что опубликованный фрагмент, но 'data' никогда не инициализируется в коде, который вы отправили. Поэтому 'data.getBattery()' вызывает ваш NullPointer. –

+0

Привет, Джейкоб, спасибо за указание. Но переменная «данные» - это объект, который я использовал для вызова метода класса «NavData» - метода getBattery()? –

ответ

0

Вы должны использовать интерфейс com.codeminders.ardrone.NavDataListener.

  1. Внесите NavDataListener interface, and the navDataReceived method.
  2. Добавьте слушателя, используя ARDrone method addNavDataListener.
  3. В вашем navDataRecieved методе вы получите объект NavData с действительными данными телеметрии.
+0

Спасибо, Джон за ваш совет. Я не знаю, что для этой цели мне может понадобиться интерфейс com.codeminders.ardrone.NavDataListener. Я попробую и надеюсь, что это сработает. Я буду обновлять вас, как только я введу все необходимые шаги в свой код. –

+0

Спасибо, Джон. Теперь мне удалось получить данные телеметрии от беспилотников. Ты прав. Чтобы получить все правильные данные Nav, мы должны подключиться к drone и сделать его (по крайней мере) взлетом. Еще раз спасибо, Джон. :) –