Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在swift-DJI Mobile SDK iOS中访问状态信息_Ios_Swift_Dji Sdk - Fatal编程技术网

在swift-DJI Mobile SDK iOS中访问状态信息

在swift-DJI Mobile SDK iOS中访问状态信息,ios,swift,dji-sdk,Ios,Swift,Dji Sdk,我不知道如何获取简单的状态数据,比如当前的万向节节 我还没有发现DJISDK和xcode中实际工作的东西之间有可靠的联系。SDK给了我提示,并与xcode自动完成一起缓慢地向前推进 附说明: “当前万向架姿态,以度为单位。如果万向架与飞机水平,并指向北极的前进方向,则横滚、俯仰和偏航为0。”-太好了 但是,它不会在xcode中自动完成,也不会编译 测试的其他方法: var gimbalStateInformation = DJIGimbalState() print(gimbalStat

我不知道如何获取简单的状态数据,比如当前的万向节节

我还没有发现DJISDK和xcode中实际工作的东西之间有可靠的联系。SDK给了我提示,并与xcode自动完成一起缓慢地向前推进

附说明: “当前万向架姿态,以度为单位。如果万向架与飞机水平,并指向北极的前进方向,则横滚、俯仰和偏航为0。”-太好了

但是,它不会在xcode中自动完成,也不会编译

测试的其他方法:

var gimbalStateInformation = DJIGimbalState()
    print(gimbalStateInformatoin.attitudeInDegrees.pitch.description)
-->所有俯仰滚转和偏航值均为0.0

var gimbalStateInformation = DJUGimbalAttitude()
    print(gimbalStateInformatoin.pitch.description)
-->所有俯仰滚转和偏航值均为0.0

var gimbalStateInformation = DJUGimbalAttitude()
    print(gimbalStateInformatoin.pitch.description)
我试图通过按键获取信息,但当我运行代码时,我的应用程序崩溃了

func getGimbalAttitude(){
    // Get the key
    guard let gimbalAttitudeKey = DJIGimbalKey(param: DJIGimbalParamAttitudeInDegrees) else {
        print("Could not create DJIGimbalParamAttitudeInDegrees key")
        return
    }
    // Get the keyManager
    guard let keyManager = DJISDKManager.keyManager() else {
        print("Could not get the key manager, manke sure you are registered")
        return
    }
    // Test if key is available
    let testing = keyManager.isKeySupported(gimbalAttitudeKey)
    self.statusLabel.text = String(testing)    // This comes out true

    // Use key to retreive info
    let gimbalAttitudeValue = keyManager.getValueFor(gimbalAttitudeKey)
    let gimbalAttitude = gimbalAttitudeValue?.value as! DJIGimbalState
    _ = gimbalAttitude.attitudeInDegrees.pitch
// --> Application crashes on the line above
}
我正在努力打造一款Mavic Mini


请提供如何将DJI Mobile SDK连接到Swift的一般建议,特别是如何读取当前万向节节节值。

您可以通过其DIDDUPDATE state委托功能访问当前万向节节节节

导入DJISDK
类万向节控制器:NSObject,DJIGimbalDelegate{
让万向节:Djiginbal
初始(万向节:Djiginbal){
self.gimbal=万向节
super.init()
gimbal.delegate=self
}
func万向节(gimbal:djiginbal,didUpdate状态:djiginbalstate){
打印(状态、姿态、音高)
}
}
//在其他类中创建自定义万向节控制器的实例
//并将万向节实例传递给它
如果let airpair=djiskmanager.product()为?迪亚拉飞机{
如果让万向节=飞机。万向节{
设常平架控制器=常平架控制器(常平架:常平架)
}
}

猜测您的代码可能会崩溃,因为隐式解包了一个可选值,该值为nil-在本例中,gimbalatitudevalue可能为nil。最好使用
as?
而不是
as安全地展开值或使用guardBrien,谢谢您的帮助!隐式展开是原因,尽管GimbalatitudEvalue不是零。”如果让gimbalatitudevalue:djikeyeydvalue=keyManager.getValueFor(gimbalatitudekey){如果让gimbalatitude=gimbalatitudevalue.value作为?djimimbalatitude{print(“.pitch是:”+String(gimbalatitude.pitch))返回gimbalatitude}否则{print(“代码在这里结束”)}}否则{print(“代码不在这里结束”)}非常感谢!不过,恐怕我需要更多的指导..我能想到的将DJIGimbalState传递给函数的唯一方法是调用DJIGimbalState()。但这不会导致正确更新的万向节间距。请给我一个其他提示。您是否管理此操作以在Mavic Mini上工作?顺便说一句,我成功地使用了DjigimbalParamattityAwRelativeToAircrafter的键读取方法,但没有将其转换为Djigimbalatitude,而是将其转换为Double。上面的函数是一个委托函数-它是caDJI SDK每秒自动调用多次。您不需要调用DJIGimbalState()-那只是初始化一个没有值的DJIGimbalState类型的对象。是的,它在Mavic mini上工作,对我来说没有问题-我更新了代码,它应该打印万向节节的当前值。如果没有,那么可能您编写的另一段代码已经实现了DJIGimbalDelegate?它应该只在Cebrien上实现一次,我是v非常感谢您的帮助,但我缺少了一些东西。没有打印任何内容。当我有时间时,我会将代码精简到最低限度,然后从那里开始,我会在找到答案后在这里发布。再次感谢您的帮助。我还没有实际测试我上面编写的代码,但我遗漏的一个关键部分是设置自定义c的实例上面的lass是正在运行的万向节实例的代理。我更新了代码以反映。我怀疑这可能是问题所在。因此,如果您想要一个好的Swift示例来检查并了解它们是如何实现的,请查看Drone Pan