dji-sdk正确的回调实现

时间:2019-02-06 17:50:31

标签: dji-sdk

我正在为订阅主题实现回调。我已经搜索了一段时间,但找不到有关实现回叫和解码回叫的任何真正详细的说明。我很容易就能运行遥测示例,但是它没有实现回调,因为它只是在设置主题持续一定时间并手动提取主题数据后才循环。这种方法在生产中效果很好,因为每个主题的出现速度都不一样,因此需要回电。

我已经能够获得我认为正确的触发回调的信息,但是我找不到任何有关如何解码回调的文档。我正在寻找(1)确认我的方法是正确的,以及(2)有关如何正确解码回叫中的数据以获取我需要的值的任何信息,特别是对于TOPIC_QUATERNION。我的实施摘要如下。在此先感谢您的任何指导。

1)创建程序包

2)启动程序包

3)使用以下方法注册回调:registerUserPackageUnpackCallback-这是正确的吗?????

4)解码回调-我该怎么做??

//**********************create package  1st*****************
 // Package 3: Subscribe to Quaternion at freq 200 Hz.
    pkgIndex                   = 3;
    freq                       = 200;
    TopicName topicList200Hz[] = { TOPIC_QUATERNION, TOPIC_HARD_SYNC };
    numTopic        = sizeof(topicList200Hz) / sizeof(topicList200Hz[0]);
    enableTimestamp = false;

    pkgStatus = vehicle->subscribe->initPackageFromTopicList(
            pkgIndex, numTopic, topicList200Hz, enableTimestamp, freq);
    if (!(pkgStatus))
    {
        return pkgStatus;
    }

//**********************START PACKAGE*****************  
  subscribeStatus = vehicle->subscribe->startPackage(pkgIndex, responseTimeout);
    if (ACK::getError(subscribeStatus) != ACK::SUCCESS)
    {
        ACK::getErrorCodeMessage(subscribeStatus, __func__);
        // Cleanup before return
        vehicle->subscribe->removePackage(pkgIndex, responseTimeout);
        return false;
    }else {
       //********************************* I assign the callback with the proper index**********
        vehicle->subscribe->registerUserPackageUnpackCallback(pkgIndex, package3Callback);
        //vehicle->subscribe.
    }



void package3Callback(Vehicle *vehiclePtr, RecvContainer recvFrame, UserData userData){
    std::cout << "package3Callback called.\n";


 ***********************   HOW DO I DECODE THIS???????????****************


}

0 个答案:

没有答案