gpt4 book ai didi

ios - DJI Onboard SDK 到 Mobile SDK 通信 - DJI 示例不起作用。 (Matrice 600- Raspberry Pi3 - iOS)

转载 作者:行者123 更新时间:2023-11-29 05:39:50 25 4
gpt4 key购买 nike

我想将命令从带有移动 SDK 的移动设备发送到运行机载 SDK 的无人机 (Matrice 600) 上的机载计算机 (Raspberry Pi 3)。因此,我正在尝试使 DJI 的示例发挥作用。我按照指南( https://developer.dji.com/onboard-sdk/documentation/guides/component-guide-mobile-communication.html )和链接( https://developer.dji.com/onboard-sdk/documentation/sample-doc/msdk-comm.html )进行操作。我使用了 https://github.com/dji-sdk/Onboard-SDK/tree/3.8/sample/linux/mobile 中的代码用于板载 SDK 和 iOS 示例 https://github.com/dji-sdk/Mobile-OSDK-iOS-App .

移动应用程序表示它正在发送命令,但板载程序无法识别任何命令,并且日志未显示任何错误。

除了我放入变量中的 API key 之外,我没有更改代码中的任何内容。它说该产品已注册正确。另外,无人机和树莓派之间的 UART 连接似乎很好,因为我尝试过的所有其他示例都正常工作。此外,移动设备和无人机之间的连接正常,因为 DJI-Go 等其他应用程序能够向无人机发送命令,然后执行命令。

我正在使用 DJI-Assistant Windows 程序上的模拟器。

我觉得问题已经在应用程序中,因为我尝试记录代码的不同部分,但似乎应该执行的代码没有执行。我没有开发 iOS 应用程序,所以我真的不知道到底发生了什么,但也许你可以帮助我。

例如这里的代码不会被执行。这是否意味着他没有完成“发送”?来自“Mobile-OSDK-iOS-App/MOS/Network/MOSProductCommunicationManager.m”

[fc sendDataToOnboardSDKDevice:data withCompletion:^(NSError * _Nullable error) {
if (error) {
// Handle error locally
} else {
NSString *key = [self commandIDStringKeyFromData:data];

[self.sentCmds setObject:ackBlock forKey:key];
}
completion(error);
}];

此外,日志中没有类似以下的其他日志:来自“Mobile-OSDK-iOS-App/MOS/ViewController/MOSJSONDynamicController.m”

[self.appDelegate.model addLog:[NSString stringWithFormat:@"Sending CmdID %@ with %ld Arguments", cmdId, (unsigned long)arguments.count]];
weakCell.commandResultLabel.text = @"Sending...";
[self.appDelegate.productCommunicationManager sendData:data
withCompletion:^(NSError * _Nullable error) {
[self.appDelegate.model addLog:[NSString stringWithFormat:@"Sent CmdID %@", cmdId]];
weakCell.commandResultLabel.text = @"Command Sent!";
}
andAckBlock:^(NSData * _Nonnull data, NSError * _Nullable error) {

NSData *ackData = [data subdataWithRange:NSMakeRange(2, [data length] - 2)];
uint16_t ackValue;
[ackData getBytes:&ackValue length:sizeof(uint16_t)];

NSString *responseMessage = [NSString stringWithFormat:@"Ack: %u", ackValue];
[self.appDelegate.model addLog:[NSString stringWithFormat:@"Received ACK [%@] for CmdID %@", responseMessage, cmdId]];

weakCell.commandResultLabel.text = responseMessage;
}];

以下是日志截图: enter image description here

enter image description here

enter image description here

最佳答案

我发现 iOS-Sample-App 存储库的标准(主)分支是旧版本 3.1,它不起作用。由于没有这方面的文档,我使用了这个版本,因为在检查不同的分支之前我不知道是否存在其他版本。

最后,3.3 版本最适合我。这是最新分支/版本 (3.4) 的链接:https://github.com/dji-sdk/Mobile-OSDK-iOS-App/tree/3.4

关于ios - DJI Onboard SDK 到 Mobile SDK 通信 - DJI 示例不起作用。 (Matrice 600- Raspberry Pi3 - iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56665649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com