簡體   English   中英

DJI Onboard SDK到移動SDK通信 - DJI樣本無法正常工作。 (Matrice 600-Raspberry Pi3 - iOS)

[英]DJI Onboard SDK to Mobile SDK communication - DJI sample not working. (Matrice 600- Raspberry Pi3 - iOS)

我想將帶有mobile-SDK的移動設備的命令發送到運行onboard-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中的代碼來處理onboard-SDK和iOS示例https://github.com/dji-sdk/ Mobile-OSDK-iOS-App

移動應用程序說它正在發送命令,但是板載程序無法識別任何內容並且日志沒有顯示任何錯誤。

除了我輸入變量的API Key之外,我沒有對代碼進行任何更改。 它說該產品已經注冊正確。 此外,無人機和覆盆子之間的UART連接似乎很好,因為我嘗試過的其他每個例子都在工作。 此外,移動設備和無人機之間的連接正在工作,因為像DJI-Go這樣的其他應用程序能夠向無人機發送命令,然后執行這些命令。

我在DJI-Assistant Windows程序上使用模擬器。

我覺得這個問題已經存在於App中了,因為我試圖登錄代碼的不同部分,看起來應該執行的代碼沒有被執行。 我沒有開發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;
                                                   }];

以下是日志的屏幕截圖: 在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

我發現iOS-Sample-App存儲庫的標准(主)分支是舊版本3.1,它不起作用。 由於沒有關於此的文檔,我使用了這個,因為在查看不同的分支之前我不知道其他版本。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM