我试图复制" 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实际改变万向节模式?