Связь DJI Onboard SDK с Mobile SDK - образец DJI не работает. (Matrice 600 - Raspberry Pi3 - iOS) - PullRequest
0 голосов
/ 19 июня 2019

Я хочу отправить команды с мобильного устройства с mobile-SDK на бортовой компьютер (Raspberry Pi 3) на дроне (Matrice 600), на котором запущен бортовой SDK. Поэтому я пытаюсь сделать сэмпл из 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-ключа, который я поместил в переменную. Это говорит о том, что продукт был зарегистрирован правильно. Кроме того, соединение UART между дроном и малиной кажется нормальным, поскольку все остальные примеры, которые я пробовал, работают. Кроме того, соединение между мобильным устройством и дроном работает, так как другие приложения, такие как DJI-Go, могут отправлять команды на дрон, которые затем выполняются.

Я использую симулятор в программе DJI-Assistant для Windows.

Мне кажется, что проблема уже в приложении, потому что я пытался войти в разные разделы кода, и кажется, что код, который должен быть выполнен, не выполняется. Я не разрабатывал приложения для iOS, поэтому не знаю точно, что происходит, но, может быть, вы мне поможете.

Например, код внутри здесь не выполняется. Значит ли это, что ему не удалось закончить «Отправку»? От "Мобильный OSDK-iOS-приложение / MOS / Сеть / 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

1 Ответ

0 голосов
/ 13 июля 2019

Я обнаружил, что стандартной (основной) веткой для репозитория iOS-Sample-App является старая версия 3.1, которая не работает.Поскольку документации по этому вопросу нет, я использовал эту, потому что я не знал, что существуют другие версии, пока не проверил различные ветви.

В конце концов, версия 3.3 работала лучше всего для меня.Это ссылка на новейшую ветку / версию (3.4): https://github.com/dji-sdk/Mobile-OSDK-iOS-App/tree/3.4

...