我正在使用一架幻影4 Pro无人机,它有精确的着陆能力。我用Swift和iPad控制无人机。在DJI软件中,我可以启用它,并且工作正常。然而,在我正在开发的应用程序中,任何启用它的调用都会失败。
这是试图启用它的代码:
static func setPrecisionLandingEnabled(precisionLandingEnabled: Bool, _ completeFunction: @escaping (Error?) -> Void) throws {
guard let djiKeyManager = DJISDKManager.keyManager() else {
GLog.Log("Error in Flight Controller Observer. Problem getting djiKeyManager in \(#file) \(#function)")
throw FlightControllerManager.FlightControllerError.cantGetKeyManager
}
guard let precisionLandingEnabledKey = DJIFlightControllerKey(param: DJIFlightAssistantParamPrecisionLandingEnabled) else {
GLog.Log("Error in Flight Controller Observer. Problem getting precisionLandingEnabledKey in \(#file) \(#function)")
throw FlightControllerManager.FlightControllerError.cantGetKey
}
djiKeyManager.setValue(precisionLandingEnabled, for: precisionLandingEnabledKey, withCompletion: completeFunction)
}当我调用该函数时,DJI的完成函数返回以下错误:
错误的Domain=DJISDKErrorDomain代码=-1013\“当前产品不支持此特性。
有问题的API可以在这里找到:inline
我检查过了,在发出与精确着陆相关的“起飞”呼叫时,没有传入任何参数。那么,既然我知道无人机有这个功能(正如DJI自己的应用程序所验证的那样),为什么我会收到这个错误呢?无人机必须先飞行才能实现这一点吗?或者,在我启用之前,还需要满足其他条件吗?
发布于 2018-03-08 00:06:58
在我看来,您应该创建一个DJIFlightAssistant对象,然后使用现有的方法setPrecisionLandingEnabled(_: Bool, completion: DJICompletionBlock)
为什么要编写自己的setPrecisionLandingEnabled()方法?
https://stackoverflow.com/questions/49162549
复制相似问题