DjiCore_ApplicationStart和DjiTest_FcSubscriptionStartService的位置前后关系

Comments

3 comments

  • DJI Developer Support
    您好,不好意思,这个是我们文档没有说明清楚, 先DjiTest_FcSubscriptionStartService(),后DjiCore_ApplicationStart() DjiTest_FcSubscriptionStartService函数主要是初始化订阅模块,以及订阅一些TOPIC(这些TOPIC开发者可以自行去掉),实际上我们需要的是这个函数中的DjiFcSubscription_Init(),初始化订阅模块以后,您才能使用订阅功能。而知识库中的文档想表明的意思是,您必须要先等DjiFcSubscription_Init()调用完,才能开始订阅,而DjiFcSubscription_Init包含在DjiTest_FcSubscriptionStartService中,DjiTest_FcSubscriptionStartService在DjiCore_ApplicationStart()函数之前,因此您只要在DjiCore_ApplicationStart()之后才开始订阅,可以确保流程和拿到的数据是正确的。
    0
    Comment actions Permalink
  • Fan

    意思是:

    在main函数中

    DjiTest_FcSubscriptionStartService要在
    DjiCore_ApplicationStart()之前,是因为DjiTest_FcSubscriptionStartService中的
    DjiFcSubscription_Init()初始化操作要在DjiCore_ApplicationStart()之前完成,与此同时,
    DjiFcSubscription_SubscribeTopic
    osalHandler->TaskCreate("user_subscription_task", UserFcSubscription_Task,

    FC_SUBSCRIPTION_TASK_STACK_SIZE, NULL, &s_userFcSubscriptionThread)
    不能在DjiTest_FcSubscriptionStartService中,而是要放在main.c的DjiCore_ApplicationStart()之后吗?
     
     
    如果上述成立的话,为什么不能在DjiTest_FcSubscriptionStartService之后(只包含DjiFcSubscription_Init())和DjiCore_ApplicationStart之前去执行订阅操作?在这个时候执行订阅操作时,订阅的初始化DjiFcSubscription_Init也已经完成了。
    0
    Comment actions Permalink
  • DJI Developer Support
    您好,您如果订阅话题和DjiTest_FcSubscriptionStartService中有重复,保持只出现一个DjiFcSubscription_SubscribeTopic,否则会有重复订阅的问题。也就是说,假如您要订阅GPS位置,这个在DjiTest_FcSubscriptionStartService中已经有DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL); 那您直接调用DjiFcSubscription_GetLatestValueOfTopic取值即可,不需要再次调用DjiFcSubscription_SubscribeTopic来订阅和设置频率。
    0
    Comment actions Permalink

Please sign in to leave a comment.