可以使用DJI SDK复制" Pitch Lock" DJI Go app的功能?

时间:2017-01-27 06:13:38

标签: ios dji-sdk

我试图复制" Pitch Lock" DJI Go应用程序的开/关功能。我怎么能这样做?

我正在使用XCode 8.2.1,为iOS 10.1构建,连接到附带iPhone 6s的Osmo Mobile。 Osmo Mobile具有最新固件(版本01.30.01.52)。

到目前为止一切正常(registerApp,通过蓝牙连接,获取手持按钮,获取万向节电池更新,获得云台更新)。

将setGimbalWorkMode设置为.freeMode或.yawFollowMode似乎没有任何效果。完成块中没有返回错误,但对Gimbal操作没有影响。

云台的行为就像是在.freeMode中(总是移动到手持棒指向的确切方向),但DJIGimbalDelegate只接收.yawFollowMode更新(这是pitchLock模式应该做的)。

将setGimbalWorkMode设置为其他模式会导致错误(正如Osmo Mobile设备所预期的那样)。

以下是我试图打开/关闭pitchLock的方法。

@IBAction func pitchLockPressed(_ sender: UIButton) {
    pitchLock = !pitchLock
    if let gimbal = fetchGimbal() {
        var workMode : DJIGimbalWorkMode = .freeMode // .freeMode .fpvMode and .unknown return error using Osmo Mobile
        if pitchLock {
            workMode = .yawFollowMode
        }
        gimbal.setGimbalWorkMode(workMode, withCompletion: { (error) in
            if (error != nil) {
                print("error workMode: \(error?.localizedDescription)")
                self.pitchLock = !(self.pitchLock) // back to previous
            }
        })
    }
}

这是代理人,无论我做什么,都只报告.yawFollowMode:

func gimbal(_ gimbal: DJIGimbal, didUpdate gimbalState: DJIGimbalState) {

 //   var needUpdate = false

    if lastReportedWorkMode != gimbalState.workMode {
        lastReportedWorkMode = gimbalState.workMode

         switch lastReportedWorkMode {
         case DJIGimbalWorkMode.fpvMode:
            print("FPV\n")
         case DJIGimbalWorkMode.freeMode:
            print("Free\n")
         case DJIGimbalWorkMode.yawFollowMode:
            print("Yaw-follow\n")
         case DJIGimbalWorkMode.unknown:
            print("Unknown\n")
         }
    }

任何人都可以通过setGimbalWorkMode实际改变万向节模式?

0 个答案:

没有答案