ios - DJI sdk 获取 RTK 信息
问题描述
我正在尝试使用 ios 应用程序从 DJI M600 Pro 中的 RTK 获取 gps 信息,我查看了 DJI Mobile SDK API 参考,并找到了一些 RTK API。当无人机启动时,属性“isRTKBeingUsed”应该是“YES”,但我无法得到结果。
任何帮助将不胜感激!这是我的代码:
#import "ViewController.h"
#import <DJISDK/DJISDK.h>
#import "DJIAppActivationManager_InternalTesting.h"
#import<DJISDK/DJIRTK.h>
#define WeakRef(__obj) __weak typeof(self) __obj = self
#define WeakReturn(__obj) if(__obj ==nil)return;
void ShowResult(NSString *format, ...)
{...
}
@interface ViewController ()<DJIAppActivationManagerDelegate, DJISDKManagerDelegate,DJIRTKDelegate>
...
...
@property (weak, nonatomic) IBOutlet UILabel *isusing;
@property(strong, nonatomic) DJIRTK * rtk1;
@property(strong, nonatomic) DJIRTKState * rtkstate1;
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self registerApp];
[self updateUI];
self.rtk1 = [[DJIRTK alloc] init];
self.rtkstate1 = [[DJIRTKState alloc] init];
[self rtk:_rtk1 didUpdateState:_rtkstate1];
}
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void) rtk:(DJIRTK *)rtk didUpdateState:(DJIRTKState *)state
{
self.shifoushiyong.text = [NSString stringWithFormat:@"%d",state.isRTKBeingUsed];
}
- (void)registerApp
{
[DJISDKManager registerAppWithDelegate:self];
}
-(void)updateUI
{
...
}
...
@end
解决方案
TLDR:您以错误的方式使用 RTK 委托方法。
didUpdateState:是一个委托方法。您需要将委托对象传递给您的 RTK 对象。当数据来自飞行器时,会调用 didUpdateState。您不必手动操作。
此外,您不应初始化自己的 RTK 对象:
1/ 确认 SDK 已注册(DJISDKManager 的委托方法)后,获取产品
- (void)appRegisteredWithError:(NSError *_Nullable)error {
DJISDKManager.product
// continue here
}
2/ 验证它是 DJIAircraft 类
if ([[DJISDKManager.product class] isKindOf:[DJIAircraft class]) {
// Continue here
}
3/ 从那里获取 RTK 对象:
DJIRTK *rtk = aircraft.flightController.RTK;
4/ 将委托设置为 RTK(一个实现 DJIRTKDelegate 的类 - 在这里假设 self)
rtk.delegate = 自我;
https://developer.dji.com/api-reference/ios-api/Components/RTK/DJIRTK.html#djirtk_protocol_inline
5/ 像你一样在委托方法中获取数据。
- (void)rtk:(DJIRTK *_Nonnull)rtk didUpdateState:(DJIRTKState *_Nonnull)state {
// Show me the data
}
推荐阅读
- multithreading - 多线程记录器在一段时间后崩溃,我找不到解决问题的方法
- scala - 没有创建 Tmp 文件中的数据
- vba - 将共享任务列表从 MS Outlook 导出到 Excel
- java - 如何在 Android 中使用 jsoniter codegen?
- ios - UIActivityViewController 未将动画 GIF 分享到 Twitter
- ios - 使用对象映射器映射响应
- dart - Flutter 通知在 Android 设备上不起作用
- angular - 以角度向表格添加列
- python - ElementNotInteractableException:消息:元素在 Appium 中不可交互。可以找到但无法发送.keys
- c - 创建和打开 FIFO 后,fprintf() 到标准输出不起作用