DJI SDK startListeningForChanges не работает

#swiftui #dji-sdk

#swiftui #dji-sdk

Вопрос:

Я хочу получить обновление Compass моего P4 RTK с помощью моего мобильного SDK для iOS, но я не получаю никаких выходных данных в терминале.

Я использую SwiftUI в Xcode.

Это код, который я использую.

 if let locationKey = DJIFlightControllerKey(param: DJIFlightControllerParamCompassHeading) {
   DJISDKManager.keyManager()?.startListeningForChanges(on: locationKey, withListener: self, andUpdate: { (oldValue: DJIKeyedValue?, newValue: DJIKeyedValue?) in
      if (newValue != nil) {
         print("Compass: (newValue!.doubleValue)")
                        
      }
   })
}
 

Если я правильно понял код startListeningForChanges, я должен получить вывод на печать при повороте дрона?

Комментарии:

1. В каком режиме полета вы находитесь?

2. Режим полета, который использует беспилотник, — это режим DJIFlightModeManual.

Ответ №1:

Пожалуйста, попробуйте получить значение compass, реализовав DJICompassDelegate.didUpdateSensorState , например

 class CompassDelegate: DJICompassDelegate {

    var sensorValue: Float = 0.0

    ...

    func compass(_ compass: DJICompass, didUpdateSensorState state: DJICompassState) {
        if self.sensorValue != state.sensorValue
           amp;amp; state.index == 0 { // depending on your drone model there might be multiple compasses as far as I understood
            self.sensorValue = state.sensorValue
        }
    }
}

 

Где-то в вашем коде, где у вас есть экземпляр DJIFlightController, вам нужно установить экземпляр этого делегата compass, например

 myFlightController.compass?.delegate = myCompassDelegate