1

我正在尝试复制 DJI Go 应用程序的“音高锁定”开/关功能。我怎样才能做到这一点?

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

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

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

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

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

这是我尝试打开/关闭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 真正改变云台模式吗?

4

0 回答 0