#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